guardfile: parse grant properties (key=value) for structured scoping constraints #116
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#116
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?
guardfile: parse grant properties (key=value) for structured scoping constraints
The KDL Guardfile grammar parses a grant as
modal verb resource [qualifiers...],reading only positional arguments. KDL node properties (
key=value) on agrant are silently dropped. They are the natural way to express a structured
scoping constraint, distinct from a bareword qualifier:
Change
http/guardfile:Props map[string]stringtoGrant, populated fromn.Properties()inparseGrant. Positional barewords stay inQualifiers; anything with a valuelands in
Props. nil when the sentence has no properties.TestGrantPropertiesassertsorg="..."parses intoProps{org: ...}.This is already implemented locally (the change is in the working tree) and
drives the org-scoping demo slice: the speakeasy-guardrail
overlaygenreadsGrant.Props["org"]and emits anorg:<name>scope token that the ward endpointenforces at the call boundary. It needs an issue to land per the repo's
one-issue-per-change rule - this is it.
Drive-by also in the working tree (call out before committing)
The package move in
cli-guard issue 113
(
guardfile->http/guardfile,audit->pkg/audit,decision/profile/profiles->cli/...) broke two external consumers inspeakeasy-guardrail
and speakeasy-ward,
which still imported the old paths. Both are fixed locally. Note: the reorg put
decision/profiles/profileundercli/, but speakeasy-ward (an HTTPconsumer) imports them - the cross-surface case
cli-guard issue 114
argues belongs in
pkg.