Repository navigation
Resync 29 scripts and fixture witnesses verbatim from fractal e2721e52 (fractal-cutover A) - #117
Conversation
agent-identity: agent/compoundingtech/mergemaster agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.12.5 agent-runtime: OMP 18.12.5 agent-model: openai-codex/gpt-6.1-sol
agent-identity: agent/compoundingtech/mergemaster agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.12.5 agent-runtime: OMP 18.12.5 agent-model: openai-codex/gpt-6.1-sol
|
q19-go v1 head=73e5c631e7081653456def6576e28d31f8aff31e verdict=NO-GO CI Manager source review. The verbatim copy is correct: all 24 entries match fractal e2721e52 by blob and mode (git ls-tree on both sides). Only those 24 entries plus flake.nix and flake.lock change; the lock node changes only rev, narHash and lastModified, and nix flake prefetch confirms sha256-pGJRiUHcongVBrYEWT2w3TZTS8UdcZJjHRJvTDhrpYg=. The #116 oracle-scripts check passes on both architectures. Two findings block the GO. P1, flake.nix:10 (fixture bump): the bumped fixture does not match the pinned oracle suite. In run 42737159667, job checks (ubuntu-24.04-arm), step 'nix develop -c bash scripts/test-scripts' fails. fractal-test-test fails because the workflow now invokes prepare-pnpm-source-inputs.py instead of the expected megarepo command. lane-definition-closure-test fails because that helper is absent from the overlaid fractal-web definition paths. Fix: update the affected fixture witnesses in the same PR, so they agree with the new pin. P2, scripts/evidence-skip-report:168-169: release_surface() now calls evidence-flip-ready.pr_runs(..., workflow=RELEASE_WORKFLOW), but the retained sibling defines pr_runs(github, since, until, tries=4). report() therefore raises an uncaught TypeError. Fix: bring the workflow parameter of evidence-flip-ready into this PR (it is one of the 5 A2 scripts), or keep evidence-skip-report on the oracle until A2. A1 and A2 are coupled here, so this finding also affects the Compounding Manager split. Posted on behalf of @schickling
|
agent-identity: agent/compoundingtech/mergemaster agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.12.5 agent-runtime: OMP 18.12.5 agent-model: openai-codex/gpt-6.1-sol
agent-identity: agent/compoundingtech/mergemaster agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.12.5 agent-runtime: OMP 18.12.5 agent-model: openai-codex/gpt-6.1-sol
agent-identity: agent/compoundingtech/mergemaster agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.12.5 agent-runtime: OMP 18.12.5 agent-model: openai-codex/gpt-6.1-sol
agent-identity: agent/compoundingtech/mergemaster agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.12.5 agent-runtime: OMP 18.12.5 agent-model: openai-codex/gpt-6.1-sol
|
q19-go v1 head=6fa4e5bc5e3edfa4709105f035874a3de6991707 verdict=GO CI Manager delta SOURCE GO, 73e5c63..6fa4e5b. Both earlier findings are fixed. (1) The fixture witnesses match e2721e52, and scripts/test-scripts:37 overlays the working-tree scripts. (2) evidence-flip-ready accepts and routes the workflow argument. The 5 A2 scripts and the 14 W files match fractal e2721e52 by blob and mode (git ls-tree). M changes only provenance revisions and blob IDs, plus the moved excerpt coordinates. My (H) conditions are met. Additions are refused at tests/oracle_scripts.py:38-40,59-66, and tests/test-oracle-scripts.py:77-80 tests that refusal. The Rust test oracle stays at 1392a51. One condition: the merge requires run 42742047749 (or later at this head) green on both architectures, including scripts/test-scripts. At review time, flake check including oracle-scripts had passed on both architectures, and test-scripts was still running. Posted on behalf of @schickling
|
agent-identity: agent/compoundingtech/mergemaster agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.12.5 agent-runtime: OMP 18.12.5 agent-model: openai-codex/gpt-6.1-sol
|
q19-go v1 head=09ed93eca03d678f942bd75008354d6cfcc24862 verdict=GO CI Manager delta SOURCE GO, 6fa4e5b..09ed93e. The delta is scripts/test-scripts +2. After the working-tree overlay, it copies the 2 oracle-only exempt files, parity-drift and parity-drift-test, from the pinned oracle. That is exactly the pre-H behavior for those 2 files, and it executes no unbound code, because the files come from the pinned oracle. Condition unchanged: hosted CI at this head must be green on both architectures, including scripts/test-scripts. Posted on behalf of @schickling
|
agent-identity: agent/compoundingtech/mergemaster agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.12.5 agent-runtime: OMP 18.12.5 agent-model: openai-codex/gpt-6.1-sol
|
q19-go v1 head=2c1384e7d80ea640c7675cbcd547013272ba8ac6 verdict=GO CI Manager delta SOURCE GO, 09ed93e..2c1384e. The delta is tests/test-workflow-adapters.py only (test harness; no script or fixture bytes change). Fixed line ranges are replaced by anchored blocks: a unique opening anchor, exactly one closing line, searched only up to an explicit following boundary (so a missing closer cannot consume the next job's closer), and a single needs line per signing block. Each case fails loudly on a missing or duplicate anchor or closer. Condition unchanged: hosted CI at this head must be green on both architectures, including scripts/test-scripts and this adapter test. Posted on behalf of @schickling
|
|
U04 exposure audit: PASS at exact head
Signed: Janitor ( Posted on behalf of @schickling
|
Scope, approvals and dependencies
#117 combines A1 (24 Fractal-only copies) and A2 (five bilateral copies), all from Fractal e2721e52463428b4ff655addee129cecd2839763. P0 #116 merged as b9a6385. Signed main merge 73e5c63 and plain fast-forward to A2 1a78e41 preserve history; no rewrite.
Approvals: original verbatim-copy exception 055c882373be92d0; bilateral exception fa248adf9badcf4e; A1+A2 fold-in 35b7b4714d1179dd; W/H approval Compounding Manager 08933bddb13f15d9 and CI Manager e68dbaa49b80667f; W/M/H split decision Compounding Manager 2790032fc5246330. Conditions 5 and 6 are addressed by the per-script discard/class-c inventory below and the unchanged production verifier/oracle proof. There are no bespoke merged script bytes.
All 29 copies pin the single Fractal revision above. The table has the original 24 entries plus exactly these five added rows (shown in the bilateral table). Three-way agreement is required: working-tree bytes and executable mode equal the fixture, whose Git blob equals the table ID. The same expiry rule applies to all 29: once the immutable Python oracle contains a listed blob byte-identically, remove that exception row. This PR does not repin the Python oracle.
A1: 24 exact script copies
Static inspection: for every path below, git hash-object of the copied file equals the actual Fractal Git blob and the table ID; local executable mode matches Fractal ls-tree. The lock JSON differs only in nodes.fractal-fixture. Diff versus P0 contains exactly these 24 paths plus flake.nix and flake.lock.
scripts/ci-evidence-gate2952f89514a584465a428017b3f3e8ea043f41b22952f89514a584465a428017b3f3e8ea043f41b2100755scripts/ci-evidence-gate-test38a34e7d48ed407b428f739c0f3d38b151fced5938a34e7d48ed407b428f739c0f3d38b151fced59100755scripts/ci-signed-tree77a560621f8182d2ca19f622782ff24c95e7d51477a560621f8182d2ca19f622782ff24c95e7d514100755scripts/ci-signed-tree-test91612975e7ae383ca5c55b94a19af20b0b1c7df291612975e7ae383ca5c55b94a19af20b0b1c7df2100755scripts/evidence-gc1340a798f6bda78ad6319352fabd8de2050312f91340a798f6bda78ad6319352fabd8de2050312f9100755scripts/evidence-gc-test3c7482d742f104780158789154491d290ab7a6933c7482d742f104780158789154491d290ab7a693100755scripts/evidence-gc-timerdd5781ab377653d43b1cfda67a46e897ec0e51d8dd5781ab377653d43b1cfda67a46e897ec0e51d8100755scripts/evidence-log73e22e8252a1ceab4eba0324a0063c97f1d75b1873e22e8252a1ceab4eba0324a0063c97f1d75b18100755scripts/evidence-log-test746aa09bc2363c2d57523220c084fb6a4e34ef66746aa09bc2363c2d57523220c084fb6a4e34ef66100755scripts/evidence-log-timer85ffab484040914c4ae14f72b86cc70c97b7e35885ffab484040914c4ae14f72b86cc70c97b7e358100755scripts/evidence-log-watchf580ed13fe4f8130ec936dfeefb64f6c3b97b2f1f580ed13fe4f8130ec936dfeefb64f6c3b97b2f1100755scripts/evidence-log-watch-teste29deab9f1bfdfa27989e618de577e5f748871e4e29deab9f1bfdfa27989e618de577e5f748871e4100755scripts/evidence-log.service341638d61c71d41358e2b147d141ce76b6d6c06e341638d61c71d41358e2b147d141ce76b6d6c06e100644scripts/evidence-presign-workerd68abbd4351ee70449a517e2c9566b54239e34bed68abbd4351ee70449a517e2c9566b54239e34be100755scripts/evidence-queue-signer0be3140016868d1e383d9c301c1e229066c6dd220be3140016868d1e383d9c301c1e229066c6dd22100755scripts/evidence-queue-signer-teste5c8a3c7cc59e4bf6343a9f5a8601e5ba45cbc43e5c8a3c7cc59e4bf6343a9f5a8601e5ba45cbc43100755scripts/evidence-skip-report2bdb6c3ebee8bb381c93c736cc99c22cbb82c0b32bdb6c3ebee8bb381c93c736cc99c22cbb82c0b3100755scripts/evidence-skip-report-test2d51833fa53146709634090bd75ebf8dc4a91c502d51833fa53146709634090bd75ebf8dc4a91c50100755scripts/evidence-wrapb31f1737e55f187471cd15b8d0b938dd982c72a0b31f1737e55f187471cd15b8d0b938dd982c72a0100755scripts/evidence-wrap-test603ae3a411bfcd31e70160f7fba05854ec38df36603ae3a411bfcd31e70160f7fba05854ec38df36100755scripts/fractal-test-report52ebcb098a323b013eba5b136457393ef88e295152ebcb098a323b013eba5b136457393ef88e2951100755scripts/fractal-test-report-testb0dc50163986760343d7eb67c701cb4b775e9945b0dc50163986760343d7eb67c701cb4b775e9945100755scripts/lane-definition-closure492b3741b117092395855d9790dc96e6ce3612e6492b3741b117092395855d9790dc96e6ce3612e6100755scripts/lane-definition-closure-test635945d2a01f18e9c4716c50a2eb9803896cbb08635945d2a01f18e9c4716c50a2eb9803896cbb08100755A2: five exact bilateral copies and five added table rows
scripts/evidence-flip-readyce94216c0435711419e1b2bc5acc996e2ac926b9ce94216c0435711419e1b2bc5acc996e2ac926b9100755scripts/evidence-flip-ready-test16e505355c4092c880c3f5e283baa8c0996cea4b16e505355c4092c880c3f5e283baa8c0996cea4b100755scripts/evidence-verify-test08d11cc7ba5e8a3d5ffb59fadb9eb49238aec95f08d11cc7ba5e8a3d5ffb59fadb9eb49238aec95f100755scripts/st-test087ae7d9f3d1106a38eedc1e911caeeaf46a96ae087ae7d9f3d1106a38eedc1e911caeeaf46a96ae100755scripts/fractal-test-testdecb42b9d442807c9601b473c190b3743b24c4c0decb42b9d442807c9601b473c190b3743b24c4c0100755Conditions 5/6: every discarded mergemaster port, by script
“Discarded” here means replacing the old file snapshot, not dropping the described behavior. Git log dd8c430..48f9a79 -- PATH was inspected for all five scripts; all upstream commits below were verified ancestors of e2721e52. Their integration PRs were obtained from actual merge subjects. The drift report follow-up at lines 1396-1555 supplied the mapping, then Git/source inspection checked it.
scripts/evidence-flip-ready
class c (mergemaster-only behavior): none. Source: /home/schickling/tmp/mm-fractal-drift.md follow-up, lines 1455-1463.
scripts/evidence-flip-ready-test
class c (mergemaster-only behavior): none. Source: /home/schickling/tmp/mm-fractal-drift.md follow-up, lines 1465-1474.
scripts/evidence-verify-test
class c (mergemaster-only behavior): none. Source: /home/schickling/tmp/mm-fractal-drift.md follow-up, lines 1476-1486.
All eight newly introduced helper/test function bodies across these ports are source-identical in destination Fractal. Remaining deltas update fixture-owned lane/input/event and declaration-codegen expectations, not verifier production behavior.
scripts/st-test
class c (mergemaster-only behavior): none. Source: /home/schickling/tmp/mm-fractal-drift.md follow-up, lines 1488-1499.
scripts/fractal-test-test
class c (mergemaster-only behavior): none. Source: /home/schickling/tmp/mm-fractal-drift.md follow-up, lines 1501-1549.
W: fourteen verbatim fixture witnesses
Commit 8c9fdf6: +510/-256 = 766 changed lines, only the fourteen files below. A separate signed, zero-line mode correction 6fa4e5b restores upstream 100644 on ci-fractal-web-changes and fractal_test_process.py; final Git blobs AND modes match e2721e52 for all fourteen.
tests/fixtures/fractal/.st/evidence-keys6d5b5035014b1792818dc95e58c0a93fe2702682tests/fixtures/fractal/.st/evidence-retention.jsonac4185232d1c284da670d823dffa5dd15d7bb562tests/fixtures/fractal/.st/evidence-signed-only.jsonfbce342caef91682a5e8920d93ded66fad896d62tests/fixtures/fractal/.st/evidence-skip-policy.json8da8120337d0c8ba61f5fccc01c26ade5ae087e6tests/fixtures/fractal/.st/required-lanes.jsonc30dd4ac71e75877d551b1b8317e4b11359369e0tests/fixtures/fractal/.st/review-risk.json04f32729c5468b667621a7d6166ede7528a39ea4tests/fixtures/fractal/.st/review-verdict.schema.jsonccb12968780bd2cf7944b2e708c12b71c13bcf24tests/fixtures/fractal/.st/rust-test-inputs.json43b975c0b5b480a4ce8259b9f45e325f56c428a4tests/fixtures/fractal/scripts/ci-fractal-web-changesdb9514980d3ec39e810aac2149338ba161c8048etests/fixtures/fractal/scripts/ci-local108e0ae275075b70a8324e1d3bc25c3f4a436b24tests/fixtures/fractal/scripts/ci-parallel-testsc4c0ea95c29439033b5ad4b547bc9e47b40e76cetests/fixtures/fractal/scripts/fractal_test_evidence.py37bf802b2d6669c3558104bd767fdabce950fe27tests/fixtures/fractal/scripts/fractal_test_process.py51ef635d6910ca495febfea6604761d74fcacb43tests/fixtures/fractal/scripts/script_process.py8ec570f6c88189142f35e11377d164893ce90fc6M: mechanical local manifest refresh
Commit 600b5fa: +18/-18 = 36 changed lines. PROVENANCE changes thirteen lines; infrastructure-PROVENANCE changes five. Each changed blob ID and the revision are checkable against e2721e52 using git rev-parse REV:PATH. No fixture behavior is authored here. The documentation extraction itself is UNCHANGED: its seventeen lines equal e2721e52:docs/st3/gate-evidence.md lines 1426-1442 byte-for-byte; only its source blob/range changes in PROVENANCE. These local manifests have no upstream counterpart.
H: execute the checked working-tree scripts
Commit 89243ff: +7/-2 = 9 changed lines in scripts/test-scripts and tests/test-oracle-scripts.py. The runner overlays root/scripts rather than oracle/scripts. Discovery still uses oracle *-test names, excluding only st-test/fractal-test. This executes the updated copied tests and their matching implementations, while the production evidence-verify stays byte-identical to the v0.5.0 oracle.
Safety: the oracle-scripts check binds every unlisted path to the oracle and every listed path to the fixture, so the executed set is unchanged in meaning.
CI condition (1): .github/workflows/ci.yml:12-27 has one checks job per ubuntu-24.04 and ubuntu-24.04-arm, one checkout (line 19), then mandatory sequential nix flake check (26) and scripts/test-scripts (27), without continue-on-error, intervening checkout or alternative revision. flake.nix:59-68 defines checks.oracle-scripts with src=self and runs both the guard tests and actual guard. Both must pass for each same-head checks job to pass. This is the workflow coupling proof, not a new claim about repository branch-protection configuration.
CI condition (2): no production guard change was needed: tests/oracle_scripts.py:59-66 visits each local unlisted path and snapshot() at 38-41 refuses a nonexistent oracle counterpart. Added test_unlisted_addition_is_refused (tests/test-oracle-scripts.py:77-80) explicitly pins that refusal. Inherited P3 (deletion not detected by the unlisted-path loop) becomes harmless under H because a deleted script fails its test; oracle-based test-name discovery is retained.
CI condition (3): Rust differential tests still use the unchanged oracle, not this overlay: crates/mergemaster-evidence/tests/gate.rs:356-360 and :398, generic_evidence.rs:231-235. flake.nix:13-15 pins it to 1392a51; :56 injects that root into Rust checks. scripts/evidence-verify is unchanged and equals that oracle blob.
Why the previously failing suites now compose
The runner used old oracle test/implementation bytes against newer fixture tree witnesses, while committed old policies overlaid those newer witnesses. A1/A2 together plus W/H remove that mixed tree. In particular updated ci-evidence-gate-test copies both new genie dependencies (compat-archive.ts and swift-client.ts); W refreshes lane/policy witnesses including prepare-pnpm-source-inputs.py in fractal-web definitions; A2 aligns members commands with the fixture and adds the pr_runs(workflow=...) API required by A1's evidence-skip-report.
Per-change sizes and exercised evidence
Oracle-only parity-suite correction
Hosted run 42742047749 reached the copied suite: 25 suites passed, but parity-drift-test could not be opened after H. Signed corrective commit 09ed93e adds exactly two lines to scripts/test-scripts, explicitly copying oracle scripts/parity-drift and scripts/parity-drift-test after the guarded working-tree overlay.
The four EXEMPT names have different ownership: PROVENANCE is the local extraction/resync inventory, and test-scripts is the local sandbox harness (both exist locally and must not be overwritten). parity-drift and parity-drift-test were removed locally by fce6447 when the scheduled report moved to Rust; only those two are oracle-only. Restoring exactly that pair preserves their pre-H oracle bytes and executable modes, while leaving the local inventory and runner unchanged. All 26 oracle-discovered suite names were checked: parity-drift-test is the only suite absent from the working tree; no other missing suite needs restoration.
Local plain-python sandbox evidence for the correction: restored oracle parity-drift-test passed all 8 tests (4.511 s); test-oracle-scripts.py passed all 11 tests (0.023 s). The sandbox included the current fixture inventories at their owning paths, and subprocess Git global/system config and hooks were disabled. Byte and executable-mode comparisons matched the oracle for both restored files; local PROVENANCE/test-scripts bytes were preserved. Sandbox removed. Main reports hosted run 42744801321 at 09ed93e passed all 26 copied suites, then exposed the workflow-adapter line-number failure.
Workflow adapter locator correction
Compounding Manager approved option 1 in message d7815d8903112c87. Signed commit 2c1384e changes only tests/test-workflow-adapters.py: +35/-16 = 51 changed lines. It replaces old line numbers with unique opening anchors and explicit following-block boundaries; each bounded block must contain exactly one closing line. The extra seven lines beyond the proposed 44-line option enforce the requested closing-line uniqueness without accidentally consuming a later job's closer. Missing/duplicate anchors and missing/duplicate closing lines fail with errors naming the anchor, expected marker and actual count. No runtime adapter changes or new test files.
Local quick tests PASS for all four refusal cases (missing anchor, duplicate anchor, missing closer with a later job closer present, duplicate closer). Executing the real replacement stage against e2721e52 gives byte-identical generator source for all three workflows (fleet, evidence-observe, signed-tree) compared with the separately checked corrected-range option. This is generator-SOURCE parity, not an unrun generated-YAML claim. The first four fleet blocks are unchanged from e83871ec; Rust signing adds only a queue-only environment field, inactive in the tested default event topology.
Remaining-CI sweep: plain python3 tests/test-release-workflow.py PASS (7 tests, 0.176 s). NOT RUN: full workflow generation/typecheck (genie and tsc unavailable), nested generic publisher/golden suite (PyYAML unavailable; golden also needs genie), Nix artifact/fresh-derivation proof (requires builds), Graph full-check proof (requires built package/full Node run), Graph archive (no local proof output), and hosted upload action. No heavy checks or new worktrees. The updated exact head has not been pushed or tested in hosted CI.
Fixture impact: only the earlier copied-suite runner directly overlays tests/fixtures/fractal. Subsequent adapter tests read the immutable MERGEMASTER_FRACTAL_FIXTURE source, so their offset failure comes from A1's input bump, not W's local fixture copies. Generic and Graph tests use their own fixtures; release tests read release.yml.
Follow-up
No check currently validates fixture manifest hashes against fixture files. Add that as a separate issue/check; it is not fixed in #117.
Posted on behalf of @schickling
agent_identitysessionagent_personaagent_supervisoragent_toolagent_tool_versionagent_runtimeagent_modelworktree