5.3 KiB
Runner v2 and preserved failure review
2026-09-24. Read-only review of publication 184c1307d1ae3d49007480020fa1c080c94ececa, directory harness/prerelease37-windows-gates-20260924/attempts-8dd. Both recorded attempts use source 8ddfadf440b5c208b1adb6b211a97ba0c99cff04. This is failed/interrupted-gate evidence, not prerelease acceptance.
Findings
No material gate-integrity defect found in the v2 change under the explicitly required exclusive source/configuration/runtime/target ownership. The failed workspace test remains a failure. No source fix or reconciler change was made.
v2/recipe/final.py is byte-identical to v1. The entire run.py diff is confined to listing-phase verification and an additional no-run inventory check before the actual test command. v2 run.py matches SHA-256 698ed7182726c77fa4a1c85fc6dd08187ed20689941f57e749e3f0bc845f3252.
v2 moves full source/environment verification to before and after the complete read-only listing phase, retaining executable hash checks immediately before and after every listing invocation. Listing output/exit validation, ignored-subset checking and malformed-output refusal remain. It writes listing-phase-inputs-after.json and a passed phase receipt only after source/environment checks, then writes a test-name inventory linked to that phase receipt. A failure or interruption before completion cannot produce an admitted full listing. Before literal Cargo execution it rechecks every test binary and now additionally rechecks the no-run artifact inventory itself. Actual Cargo invocation, exit propagation, post-command source/environment/artifact checks and outer final.py failure handling are unchanged.
This deliberately provides phase-boundary source/environment evidence, not per-invocation source evidence. It does not detect transient mutations restored within that interval; exclusive ownership and standard harness --list semantics remain required. Consumers must check the linked phase receipt rather than expecting old source_unchanged fields in individual v2 listing receipts.
Actual recorded outcomes
Final-02: no-run compilation succeeded and produced 61 native harness identities. There are 19 completed listing receipts, an explicit intentional-listing-stop.json, and a termination log. The stop record states no literal test output existed before stopping; archive contains no workspace-tests output.log/stderr.log/result.json or completed test-name inventory. Outer summary says passed:false, failure Gate failed: workspace-tests, runner exit1, unchanged source and no product outputs. This is a documented intentional interruption during listing, not a product-test failure or completed test run.
Final-03: 122 completed listing receipts cover 61 native harnesses; test-name inventory contains 2,208 native names, including eight ignored. The linked phase result records passed:true, source_unchanged:true, environment_unchanged:true and 122 invocations. The post-test artifact record lists all 61 unchanged binaries and no errors.
The literal workspace-test result records compiler/test command exit101, unchanged inputs and no instrumentation failure. Raw stdout contains 64 result summaries whose numeric totals are 2,199 passed, one failed, eight ignored. Raw failure:
app::state_diagram_tests::picker_escape::mounted_state_missing_picker_escape_preserves_exact_document_then_reopens_and_places
It panics at crates/oa-desktop/src/app/state_picker_escape_tests.rs:71:5: open picker owns Escape, not the State canvas or App. The desktop summary is 1,527 passed / one failed / seven ignored. Cargo continues other targets under --no-fail-fast, and stderr ultimately reports one failed desktop target. Three doc-test summary sections are present; counts here were derived from actual raw summaries, not inferred from listed names.
Outer final-03 summary remains passed:false and stops after workspace-tests. Strict Clippy and product builds did not run; outputs are empty. A result's failure:null denotes absence of instrumentation error and does not override exit101. The reconciliation success gate must reject this evidence unchanged. A corrected candidate requires separately identified execution and later lint/build/package/native gates.
Evidence inspected and limits
Read directory inventory, manifest.json, README.md and visible v2-run.py through Gitea MCP at the publication commit before downloading the named ZIP. Download used a 7,000,000-byte cap. Received exactly 6,786,076 bytes with SHA-256 99146b79780b58d6fd9c232edd174d1ecfc46190dd2e863421e34154ee34f3b0. Independently verified all 524 archive member names/counts, byte lengths and SHA-256 pins; rejected duplicate names. Read the full archived v1→v2 runner diff, summaries, raw final-03 stdout/stderr, result, test-name inventory, phase result, post-test artifact receipt and explicit final-02 interruption receipts.
Archive consistency is not authentication or an independent rerun. Before/after source/environment claims remain the pinned runner's captured observations; this review did not repeat all source Git-blob comparisons or rehash remote binaries. No archived code, test executable, build or application was run, and no candidate/Gitea write occurred. The independent local ZIP/log inspector is inspect_v2_failure.py; its execution only reads and hashes archive data. Parent owns source-fix review and subsequent acceptance.