feat(owner-decision): protect external gate authority - #820
Conversation
Confidence Score: 5/5The PR appears safe to merge because no blocking failure remains. No blocking failure remains. Reviews (4): Last reviewed commit: "test(owner-decision): pin Windows signer..." | Re-trigger Greptile |
|
Speaking as Kun's firstmate: this is not auto-merge. Hold is on the author for required CI on the current head; captain-flag is no because the PR is not otherwise completely ready. Head: Class: default-behavior + pipeline-shape. Opt-in owner-decision protection is real ( R1 (one gate, one meaning): does not align as a silent merge. A pass on a recovered run no longer means the same thing (legacy parked runs die; protected runs require a verified signed history immediately before every step, including push/PR/CI). Core order is unchanged, but approval/restart semantics are not. R2 (never lose work): fail-closed and claims custody retention of the verified head; not a data-loss merge by itself. R3 (judgment stays human): this is a judgment-path change. It tries to bind controller decisions cryptographically (good for an explicit opt-in), but it also stacks unsigned vs signed admission and refuses unsigned yolo/TUI/supersede on protected runs. Captain owns whether that becomes product default. R4 (independent validation): does not dilute reviewer/fixer separation. R5 (evidence over confidence): append-only hash-chained journal is additional evidence, not a substitute for a pass. R6 (humans and agents first-class): protected runs refuse R7 (scope): this grows a controller/external-authority protocol. VISION: the gate publishes facts; it is not a team-governance platform. Captain call. Files: 29 files, +5167/−243. Protocol + journal + daemon recovery + CLI transport + executor admission + full 40-char build identity. Workflow touch is CI (current head, after firstmate fork-CI approval): all required checks were Security: fork CI reviewed; no secret-exfil, no PR-triggered release, private key stays offline. Approved. Actions: did not merge, did not rebase, did not captain-flag. Wait on author for required CI SUCCESS on this head (Generated files; check; e2e; test ubuntu; macos; windows-git; windows-core). Even if that later goes green, do not auto-merge: re-triage for captain on the default-behavior / pipeline-shape / R1+R3 call. |
6144eb8 to
8b10e24
Compare
|
Speaking as Kun's firstmate: this is not auto-merge. Hold is on the author for required CI SUCCESS on the current head; captain-flag is no because the PR is not otherwise completely ready. Newer activity after the 2026-08-22 5:40 PM PT hold-author: head moved to Head: Class: default-behavior + pipeline-shape. Opt-in owner-decision protection is still real ( R1 (one gate, one meaning): does not align as a silent merge. A pass on a recovered run no longer means the same thing (legacy parked runs die; protected runs require a verified signed history immediately before every step, including push/PR/CI). Core order is unchanged, but approval/restart semantics are not. R2 (never lose work): fail-closed and claims custody retention of the verified head; not a data-loss merge by itself. R3 (judgment stays human): this is a judgment-path change. It tries to bind controller decisions cryptographically (good for an explicit opt-in), but it also stacks unsigned vs signed admission and refuses unsigned yolo/TUI/supersede on protected runs. Captain owns whether that becomes product default. R4 (independent validation): does not dilute reviewer/fixer separation. R5 (evidence over confidence): append-only hash-chained journal is additional evidence, not a substitute for a pass. R6 (humans and agents first-class): protected runs refuse R7 (scope): this grows a controller/external-authority protocol. VISION: the gate publishes facts; it is not a team-governance platform. Captain call. Files: 31 files, +5218/−243. Protocol + journal + daemon recovery + CLI transport + executor admission + full 40-char build identity. Workflow touch is CI (current head, after firstmate fork-CI approval): Guard generated files, CI, docs were Security: fork CI re-reviewed on the new head; no secret-exfil, no PR-triggered release, private key stays offline, release.yml trigger unchanged. Approved CI Actions: did not merge, did not rebase, did not captain-flag. Wait on author for required CI SUCCESS on this head (Generated files; check; e2e; test ubuntu; macos; windows-git; windows-core). Captain-flag stays no until otherwise completely ready except R1/R3. |
Summary
Why this is one change
The protocol, durable journal, daemon recovery, CLI transport, executor admission, and exact build identity are one security boundary. Splitting them would leave intermediate commits where the workload can still mint or replay an owner decision, or where a downstream runtime cannot prove the code it executes.
Verification
One unrelated custody race fixture depends on the machine default Git branch being master. It passes together with the full custody package when run with an isolated init.defaultBranch=master.