Gate user-repo list, whose swagger parameter is {username} #1387
No reviewers
Labels
No labels
burndown-2026-06
burndown-2026-08
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/agentic-os!1387
Loading…
Reference in a new issue
No description provided.
Delete branch "aos/claude/ee98"
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?
Closes
#1378. First execution item off milestone 33.The gap
The Forgejo guardfile asserted a boundary it did not hold:
It carried clauses for
ownerandorg.user-repo listresolves toGET /users/{username}/repos, so neither reached it.Verified against the built binary, with a control
The control matters: a clause that refuses everything would also make the first line pass.
The gate is now complete, not just one spelling closer
Counted the owner-shaped parameters across the pruned spec rather than fixing the one I tripped over:
All three now carry a clause. Every other parameter in the spec (
repo,index,id,run_id,ref,job_id,workflowfilename,identifier,position) is a sub-resource inside an already-gated owner, so none needs one.Why it was worth doing
Low impact taken alone: a read-only repository list, bounded independently by what the coilyco-ops token can see. The reason it is in this milestone is the shape rather than the blast radius. The file described a gate, the gate did not exist for one leaf, and nothing said so.
It also names the general rule, which is the part worth keeping: a spec-resolved surface cannot rename its path parameters, so it needs one clause per spelling the vendor chose. The MCP guardfile avoids this entirely by hand-writing
{owner}everywhere, which is why the same gate binds there with a single clause. That asymmetry is recorded on#1365, and it is a trap for the vocabulary migration Kai chose there.Not established
Whether the other wrapped entities have the same shape.
aws,kubectl,netlify,signoz,tailscale, andforgejo-adminall declare restrict clauses and none has been checked against its resolved parameter names. That sweep is#1378's own open question and is not in this change.The Forgejo guardfile claimed "every leaf whose path carries {owner} must name a coily* owner" and carried clauses for `owner` and `org`. `user-repo list` resolves to GET /users/{username}/repos, so neither clause reached it and the gate the file described did not exist for that leaf. Confirmed against the built binary before and after, with a control: before user-repo list torvalds --dry-run -> built the request after user-repo list torvalds --dry-run -> refused, restrict username after user-repo list coilysiren -> still builds the request The pruned spec has exactly three owner-shaped parameters, `owner` (34 paths), `org` (5), and `username` (1). All three now carry a clause, so the gate is complete rather than one spelling closer. Every other parameter in the spec is a sub-resource inside an already-gated owner. Low impact on its own: a read-only repository list, bounded independently by what the coilyco-ops token can see. The reason to fix it is that the file asserted a boundary it did not hold, which is this milestone's whole shape. Refs coilyco-flight-deck/agentic-os#1378 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-authored-by: Kai Siren <coilysiren@gmail.com> Co-authored-by: Claude <noreply@anthropic.com> Agent-Role: platform