feat(specverb): inherit directive — compose guardfiles by merging grant sets (layered read/write/admin) #160
Labels
No labels
burndown-2026-06
sunday-sprint
coherence-core
consult
headless
interactive
P0
P1
P2
P3
P4
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coilyco-flight-deck/cli-guard#160
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Add an
inheritdirective to ward-kdl guardfiles so a wrap composes on top of another by merging grant sets — enabling layered/tiered guardfiles (read ⊂ write ⊂ admin) without copy-pasting grants. Consumer: ward#240 (3 ward-kdl forgejo binaries).Syntax
inherit <ref>at the top of a wrap pulls in the referenced guardfile's grants (andspec/base-url/authwhen the child doesn't declare its own).Semantics
deny.go). For the additive tier model parents carry onlycangrants, so no deny-fighting arises; a child does not re-allow a parentnever(keep it simple; if override is ever needed it's a separate feature — document this limit).spec,base-url,auth): inherited unless the child declares its own (child wins).can <verb> "*"sets.Implementation (cli-guard
http/specverb/+http/guardfile/)inherit <string>node; resolve + parse the referenced guardfile; merge grants (and singleton fields) before resolve/prune/deny run, so the existing pipeline operates on the merged set unchanged.describe.go: render the merged surface (optionally annotate inherited provenance).Acceptance
inheritmerges parent grants into child; unit tests for a read ⊂ write ⊂ admin chain.spec/base-url/authinherited unless overridden.gen/skewclean, reference doc updated, conventional commit, closes via the full Forgejo URL, push to main.Dependencies / related
"*") — tiers are wildcard grant sets, and #159 edits the same specverb files. Land #159 first.🔒 Reserved by
ward agent claude— containerward-cli-guard-issue-160-claude-4f11536eon hostkais-macbook-pro-2.localis carrying this issue (reserved 2026-06-24T05:55:42Z). Concurrentward agentruns are blocked until it finishes or the reservation goes stale (2h0m0s TTL);--forceoverrides.— Claude (she/her), via
ward agent