Skip to content

Cite the delegated conn on FO gate resolutions; pin the grader to the FO actor - #733

Merged
clkao merged 2 commits into
spacedock-ensign/decide-dispatch-build-count-barfrom
spacedock-ensign/conn-delegated-approver-attribution
Aug 18, 2026
Merged

Cite the delegated conn on FO gate resolutions; pin the grader to the FO actor#733
clkao merged 2 commits into
spacedock-ensign/decide-dispatch-build-count-barfrom
spacedock-ensign/conn-delegated-approver-attribution

Conversation

@clkao

@clkao clkao commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

A First Officer could sign a gate approval as the captain for a decision no captain made, and the grader accepted it because it derived the expected approver from the First Officer's own command. This makes the two record shapes impossible to confuse.

What changed

  • Add a strict conn citation mapping to gate resolutions.
  • Require the citation on First Officer decisions; refuse it on captain decisions.
  • Refuse a forged captain-plus-citation record on read.
  • Pin the grader's expected actor and red misattribution under its own code.
  • Retire the finding-9 audit note this fix closes.

Evidence

  • go test ./... -race: green except one pre-existing machine-local failure reproduced identically on main.
  • Grammar matrix: 8/8 refusal cases exit 2 with a byte-identical entity and no lock residue.

j7j

clkao added 2 commits August 18, 2026 14:40
… FO actor

Under a granted conn, the durable Resolution now attributes agent:first-officer
and carries a required conn: {quote, source} citation instead of leaving the
actor to the FO's own self-description. gate record refuses an FO chat decision
without --conn-quote/--conn-source, refuses those flags on a person:captain
decision or with --round/--briefing, and gates.Read refuses a conn: block on a
non-FO resolution -- each exit 2 (CLI) or a read error, byte-clean.

recorded-gate-lifecycle's grader no longer derives the expected actor from the
FO's own close command (finding 9's circularity); it pins agent:first-officer,
requires the citation's quote to carry the granted phrase and appear verbatim
in the granting runbook, and reds a person:* actor under the distinct code
conn-approval-misattributed. auto-continue gains the boundary negative: an
FO-attributed, conn-cited resolution on its no-conn runbook still reds
human-gate-bypassed -- a citation is attribution, never authorization.

docs/specs/gate-resolution-frontmatter-contract.md, command-reference.md, and
gates-and-decisions.md still need the matching prose update; they are out of
this entity's file ownership in the PR stack (command-reference.md is owned by
the sibling merge-guard-requires-preceding-report entity) and are called out
in the stage report for FO routing.
…note

Cycle 2, granted scope (file-ownership note from cycle 1 was in error):
docs/specs/gate-resolution-frontmatter-contract.md's command-surface grammar
and delegated-resolution paragraph, the docs/site command-reference.md gate
record row, and the gates-and-decisions.md concept paragraph now describe the
required --conn-quote/--conn-source citation exactly as the approved ideation
specified. shared_live_runner_test.go's finding-9 AUDIT note is retired -- the
grader it described (recorded-gate-lifecycle's actor-following expected-actor
derivation) no longer exists as of cycle 1's fix.
@clkao
clkao deployed to CI-E2E-CODEX August 18, 2026 21:50 — with GitHub Actions Active
@clkao
clkao merged commit f64c733 into main Aug 18, 2026
6 of 7 checks passed
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.

1 participant