Commit 442c15a
committed
ci: refreeze the admission.rs source pin after the reviewed parent-entity seam
CI 32593268260 on bf34dc1 failed one job -- "CockroachDB / secondary Docker
parity / runtime writer RBAC" -- with "reviewed runtime source manifest does
not match the frozen contract". Exactly one pin in the
expected_reviewed_source_manifest block of
deploy/cockroach/tests/runtime-role-grants.sh was stale:
src/evidence_ledger/admission.rs
8a04ac035a8f60a00fc2137b3bcbac062b766048898a4d513aab572260e1d842
-> 08d73dee7c57e4fe395155c8fc06d5e889fdc812840aaa4dfdb970cb140dc6bf
The reviewed change is a30071f (W3-CHAIN), which built the parent-entity
derivation seam. Provenance was checked digest-by-digest rather than assumed:
the frozen pin is exactly admission.rs at a30071f^, and the new digest is
exactly admission.rs at a30071f, which equals the working tree. So a30071f is
precisely and solely the delta the pin was missing -- no unreviewed drift is
being swept in behind it.
Security posture is preserved, which is why this is a refreeze and not a
revert. The parent entity is no longer refused outright, but neither is it
accepted from the caller: it is DERIVED from the child locator's own
already-proven coordinates under the active package's entity recipe for the
declared parent kind, and a locator naming any other parent -- including one a
caller minted itself -- is refused with ParentEntityUnsupported. A
provider-instance locator naming a parent at all is still refused, since an
entity is a root. No self-asserted identity is admitted.
Root cause, so this cannot recur: a stale pin could only be discovered by a
~20-minute CI round trip, because nothing in the local pre-merge gate checked
the pins. Both gate paths (.fleet-recall/fleet/gate.sh and gate-batch.sh) now
run refreeze-source-pins.sh in REPORT mode as their first step, immediately
after the cherry-picks and before any cargo work, so a stale pin fails locally
in ~0.2s with the exact diff to review and the exact refreeze command. The
gate never passes --apply: the pin exists so that a human reads the
security-boundary diff, and auto-refreezing would defeat the whole mechanism.
refreeze-source-pins.sh grew a --root flag for this, since the gate runs from
the integration worktree, which carries no .fleet-recall/ of its own. That
harness lives under the gitignored .fleet-recall/, so it is not part of this
commit; only the digest literal is.
Verified: the gate wiring reproduces this exact CI failure locally in 0.18s,
and the full official lane (deploy/cockroach/tests/registry-activation-cli.sh)
passes against a live CockroachDB.
Claude-Session: https://claude.ai/code/session_01BxEBa1v242Fo1AJJGftFnZ1 parent bf34dc1 commit 442c15a
1 file changed
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
972 | 972 | | |
973 | 973 | | |
974 | 974 | | |
975 | | - | |
| 975 | + | |
976 | 976 | | |
977 | 977 | | |
978 | 978 | | |
| |||
0 commit comments