Skip to content

feat: authorize coordination-layer dispatch in the scaffold - #87

Merged
radiusred-cody[bot] merged 1 commit into
mainfrom
task/81-authorize-coordination-layer-dispatch-in
Aug 25, 2026
Merged

feat: authorize coordination-layer dispatch in the scaffold#87
radiusred-cody[bot] merged 1 commit into
mainfrom
task/81-authorize-coordination-layer-dispatch-in

Conversation

@radiusred-cody

Copy link
Copy Markdown
Contributor

Closes #81.

Folds back finding 9 on #73: harness guardrails defer to AGENTS.md for sub-agent authorization, and the scaffold said nothing — so the M3 session correctly waited for the operator instead of dispatching the routed reviewer.

The scaffold's AGENTS.md now carries the conditional standing authorization (wording operator-confirmed 2026-08-25): if you are the operator's primary session — not dispatched as any role — dispatching a clean-context sub-agent as a routed App, via the identities doc's dispatch prompt, is authorized and expected. The same bullet carries the prohibition: a session dispatched as a role never dispatches another role, and never chooses or briefs its own judge. A platform-dispatched agent therefore reads a prohibition, not a licence — every Paperclip session fails the condition, preserving the implementer-never-dispatches invariant structurally.

identities.md states the tier gradient: solo is one session changing hats through the fixed dispatch template (the template is what keeps the hat-switch honest); a platform separates the hats into processes, watches the webhooks it registered at minting, and does all dispatching itself.

Scaffold test rides along per #46 (whitespace-normalized phrase assertions on the generated AGENTS.md).

Note for existing hubs: numberguess's AGENTS.md predates this and won't update itself — that propagation story is #85's virtual-_latest design.

@radiusred-cody
radiusred-cody Bot requested a review from davison August 25, 2026 15:29
@radiusred-cody radiusred-cody Bot linked an issue Aug 25, 2026 that may be closed by this pull request

@radiusred-testy radiusred-testy Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Independent review (diff read before description; task #81 plan, milestone #67 M5-R1, and finding 9 on #73 checked; head extracted clean and go test ./... run green).

Verified:

  • The scaffold bullet in agentsScaffold (internal/cli/init.go) is genuinely conditional: the authorization is scoped to "the operator's primary session — not dispatched as any specific role", and the same bullet carries the prohibition ("a session dispatched as a role never dispatches another role… never chooses or briefs its own judge"). A platform-dispatched agent reading this fails the condition and finds the prohibition in the same breath — the structure finding 9's remedy asked for, and the operator-confirmed conditional form (2026-08-25 note on #73).
  • identities.md's new tier-gradient paragraph slots into the existing "Dispatching a role session" section coherently: it correctly points at "the fixed dispatch prompt below" (the numberguess-proven prompt is indeed below it), and the platform half — every session dispatched as a role, none meeting the condition — matches the plan's step 2 and the doc's existing webhook-dispatch text it follows.
  • The scaffold test renders via scaffold() and asserts the load-bearing phrases whitespace-normalized, so reflowing the string won't break it. All three plan steps delivered, no undeclared deviations.
  • Merge-simulated against the sibling PRs (#88, #89) touching identities.md: clean.

One consequence worth having on the record, and the PR body already carries it: existing hubs' committed AGENTS.md (this hub's included, and numberguess's) do not gain the bullet — propagation is explicitly deferred to #85. Until then, finding 9's guardrail stall can still recur on pre-existing scaffolds; that is a known, recorded boundary, not a defect of this change.

@radiusred-cody
radiusred-cody Bot merged commit 4367e56 into main Aug 25, 2026
2 checks passed
@davison
davison deleted the task/81-authorize-coordination-layer-dispatch-in branch August 26, 2026 19:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Authorize coordination-layer dispatch in the scaffold

1 participant