False-assurance principle: my v7 PASS record (@f609a449) is overtaken by the stricter B7+B8 bar after homelab's 3rd-principal FAIL (broker env-inherit + unpinned .pyc). This v7 PASS is NOT fire-authorization. Authored by the ms-secrev-828 reviewer lane (my own artifact, Gate-16). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
8.8 KiB
⚠ SUPERSEDED by v8 (homelab 3rd-principal FAIL @f609a449: broker env-inherit + unpinned .pyc; PASS overtaken by stricter B7+B8 bar). This v7 PASS record is NOT fire-authorization.
Gate0 Probe-3 (D4) Full-Closure Materialization — §3-Conformance Review v7
Verdict: ✅ PASS (superseded — see banner above)
Pin (GUARD 1 — reviewed object)
- Reviewed object =
f609a44953f5ae61916805fcb45ca337de00b0b0(harness commit, branchfeat/827-gate0-probe). - Reviewed file:
docs/compaction-refresh/probes/p3_d4_focused_run.py— sha256 (pushed provider bytes,-o FILE, FULL-40 ref, verified before trust):0f1bd1b39399b32f243d901230e2d840794a2144edd723a095dab716833a7a9b(32071 bytes, no not-found sentinel). - Closure pins (independently recomputed from the git objects):
- launcher
packages/mosaic/framework/tools/lease-broker/launch-runtime.py@f4008307=e950e4224e280f16979d90cabb89aa1896c5ee28bed2df957e14d018d43cda82✓ - helper
packages/mosaic/framework/tools/lease-broker/lease_generation.py@f4008307=061625402f08488eac47acd23272904e71fd1a71fd15b3bdab158632c801be4c✓ - broker
docs/compaction-refresh/probes/p3_generation_broker.py@23c0caca=4db4fef1ac6658a8ca79ad5091cefc901d2aa26003265c3d6726c294cf895cad✓
- launcher
Independence (GUARD 2 — principal-independence attestation)
This review is produced by a distinct Opus SECREV session, orchestrator-dispatched — the ms-secrev-828
reviewer lane, dispatched by mosaic-100 — byte review only, ran nothing, that did NOT build this harness
(builder = ms-rev-826) and is not Mos. Three distinct principals: this reviewer, the builder, and Mos (whose
own distinct-identity byte-scope-verify follows); homelab's independent verify is a further principal — it is
homelab's third-principal FAIL @2d54a9dd (upheld by Mos) that correctly retired the approach-(i) adjacency
re-hash and authorized this full-closure. v6/2d54a9dd/23c0caca/12914d8 are superseded.
Why v7 (the reopen-after-hash hole)
Approach (i) re-hashed the launcher then let Popen reopen the worktree path — hashed-snapshot ≠ executed-bytes
(the worktree file is a shared, same-UID-mutable path). Statement adjacency alone did not bind. v7 closes it for the
full project-code closure (launcher + lease_generation.py helper + p3_generation_broker.py).
B5 — HASHED == EXECUTED on the full closure (binding conjunction, stated verbatim)
The reopen-after-hash shape is unavoidable for imported/exec'd files, so closure rests on the conjunction of all three legs, each byte-verified here:
(a) bytes are materialized from the pinned git-object @
f4008307(helper/launcher) and @23c0caca(broker) —git show <commit>:<path>, the trusted immutable object, never the mutable worktree file; AND (b) into a fixture-private0o700dir with0o600files created viaO_CREAT|O_EXCL— no writer exists in the threat model between hash and exec; AND (c) each member is re-hashed == its pin IMMEDIATELY before exec/import, fail-closed (RuntimeError).
Byte evidence:
- (a)
git_object_bytes(git_root, commit, relative)=git show <commit>:<path>(:322-327);materialize_closurereads all three members from git objects and assertssha256(data) == digestelseRuntimeError(:415-433). Worktree working-tree files are never read. - (b)
pinned = root / "pinned"; pinned.mkdir(mode=0o700)(:435-436);write_pinned_fileusesos.open(path, O_WRONLY|O_CREAT|O_EXCL|O_CLOEXEC, 0o600)(:379-382). Noos.chmod/os.rename/shutil.moveanywhere (grep=0);O_EXCLrefuses a pre-planted file/symlink, so no symlink-follow or hijack gap; the dir is a fresh per-runmkdtempchild, owner-only. No code re-opens the pinned files for write between materialize and consume — there is no writable window. - (c) launcher re-hash
sha256(launcher.read_bytes()) == GATED_LAUNCHER_SHA256is the statement immediately beforereturn PiRpc(command,…)(:528-530); broker and helper re-hashes (== GATED_BROKER_SHA256,== GATED_GENERATION_SHA256) are the two statements immediately beforereturn subprocess.Popen(command,…)(:546-551). No interleaved harness yield.
Adjacency-only exec-from-worktree is absent for every member (all three exec/import from pinned/; grep worktree-exec=0).
B6 — helper + broker pinned and bound to execution (one shared helper)
materialize_closure writes exactly one pinned/lease_generation.py (:442). The broker executes the pinned
broker with --generation-module = closure.generation = that pinned helper (launch_verified_broker, :533-551, called
:746-747). The launcher executes the pinned launcher (python3 pinned/launch-runtime.py), whose
import lease_generation resolves via sys.path[0] = the script's own pinned/ dir to the same sibling
pinned/lease_generation.py. Launcher-import and broker---generation-module therefore resolve the same single
pinned helper copy, not two copies and not the worktree. Worktree helper/broker are not re-read at runtime.
Closure-import guard: closure_import_guard AST-parses each member and refuses any non-stdlib import outside the
allow-set {"lease_generation"} (and any relative import) → RuntimeError (:341-364). The 3-member closure is
therefore provably complete — no unpinned project-code dependency can slip in.
BAR1 — Traceability
GATED_WI_HEAD == f4008307; the precondition asserts git merge-base --is-ancestor 66b1e0a0 f4008307 (:315-330),
independently confirmed YES — the pinned launcher forward-contains the 66b1e0a0 file-backed generation mechanism.
BAR2 — Fidelity file-backed, .state in fixture root, UNTOUCHED
pinned/ holds code bytes only (launcher/helper/broker). The .state generation file is written by the launcher
to socket_path.parent (the fixture root), not pinned/. The broker (pinned, byte-identical 4db4fef1) still
enforces generation_environment raising if state_path.parent != socket_path.parent (grep=2), and assert_d4
still checks state_file_source == "state-file" / state_file_drives_lifecycle / state_file_in_fixture_root +
new→MUTATOR_UNVERIFIED / prior→STALE_GENERATION (grep=4, unchanged). The v7 change did not move .state into
pinned/ or perturb these asserts.
BAR3 — Carry-over
(a) live-path: Pi launched via python3 pinned/launch-runtime.py --runtime pi -- pi … (gated register-before-exec);
mosaic yolo/execRuntime = 0. (b) fail-closed precondition: gated_launcher_precondition (resolve+materialize+
verify) runs before any launch, fail-closed. (c) fixture-socket isolation: MOSAIC_LEASE_BROKER_SOCKET = per-run
fixture socket; single pinned p3 broker serves register_anchor; no live/default broker reachable; non-destructive.
(d) lease_anchor_registered INTACT: event + session_id_shape=="hex-256" unchanged (broker byte-identical);
assert_d4 folds it into the single-identity set — not deleted/softened/optional/repointed.
Re-confirm + ABSENT sweep
Spawns ONLY the single pinned p3 broker; promotion=fixture-only; full D4 asserts; --runs choices=(3,); allow-list
env (0 os.environ.copy); -O-safe (all new checks RuntimeError, 0 bare assert); creds-scrub intact;
non-destructive (fixture tempdir only); deterministic (git objects + fixed pins); closure-import guard present.
ABSENT = 0: P5/P6/P2-bank/retry-launder/mosaic-yolo/execRuntime/pi_gate0; source-invalid grep=0; no live/real-broker
path; no .state/gen path outside the fixture root; no extra broker/socket; no exec-at-import (__main__-guarded); no
adjacency-only exec-from-worktree for any member; the only mechanism change is materialization; no scope-widen.
Verdict
PASS @ f609a449. B5 (full-closure hashed==executed via the (a)+(b)+(c) conjunction with no writable window),
B6 (one shared pinned helper bound to both launcher-import and broker---generation-module; complete closure), BAR1,
BAR2 (fidelity .state-in-fixture-root untouched), and BAR3 all hold, with zero out-of-scope surface. Findings: none.
Scope reminder (not a finding)
Producing this evidence executes the Gate0 mechanism (§3/§5). This review clears bytes only; FIRE remains separately gated on Mos's explicit post-clear GO, his v-final byte-scope-verify co-attestation, and homelab's third-principal verify — not authorized by this review.
Reviewer: distinct Opus SECREV session (ms-secrev-828 lane, dispatched by mosaic-100), Gate-16 author≠reviewer,
byte review only; ran nothing; did not build.
Reviewed object (pin): f609a44953f5ae61916805fcb45ca337de00b0b0 · harness sha256 0f1bd1b39399b32f243d901230e2d840794a2144edd723a095dab716833a7a9b.
Pinned closure: launcher e950e422… @f4008307 · helper 06162540…be4c @f4008307 · broker 4db4fef1… @23c0caca.