diff --git a/docs/audits/paired-host-session-partition-retirement/README.md b/docs/audits/paired-host-session-partition-retirement/README.md index dac0e6cd941..fabb219d9f5 100644 --- a/docs/audits/paired-host-session-partition-retirement/README.md +++ b/docs/audits/paired-host-session-partition-retirement/README.md @@ -43,6 +43,8 @@ Expected: **11 failures, 5 passes**. These cover late ingress, first-use catalog ## Source identity and publication portability +The first publication CI typecheck found an introduced fixture mismatch: main's `registerSessionHandlers` accepts one argument, whereas the audit branch accepts a second runtime for an unrelated empty-tab feature. The published permanent fixture now uses the one-argument call; the audit fixture retains its real two-argument signature. `fixtureVariants` records both exact hashes, the loader accepts only those identities, and reports record the actual configuration/fixture hashes. No product behavior changed in this correction. + `source-versions.json` fences a union of **888 source paths**, with exact evaluated graphs of 857/860 modules for current before/fixed and 679/682 for publication main before/fixed. The publication base is **291b4ddd6f1c1af480169885e0fda7f9c78ff053**. Main has older internal module paths, so this artifact supplies the full evaluated source differences rather than importing current dependencies behind a five-file overlay. `fix.patch` and `main-fix.patch` independently map their exact baselines to their fixes. `publication.patch` reversibly maps the current fixed graph to the main fixed graph. The loader accepts all four complete exact identities, rejects drift, reconstructs each variant in memory, and verifies every evaluated module hash. The runner checks all four reconstruction inputs, canonical CRLF reads, and exact evaluated graph equality. All patches have zero context. No Git checkout/ref or ignored notes are required to run the artifact. Reports record actual evaluated hashes and runtime versions. diff --git a/docs/audits/paired-host-session-partition-retirement/electron-results.json b/docs/audits/paired-host-session-partition-retirement/electron-results.json index 4c8e1d02b00..15901ef870f 100644 --- a/docs/audits/paired-host-session-partition-retirement/electron-results.json +++ b/docs/audits/paired-host-session-partition-retirement/electron-results.json @@ -7,6 +7,15 @@ "arch": "arm64" }, "workingFlavor": "currentFixed", + "configurationAndFixtureHashes": { + "config/vitest.config.ts": "05c58f7f4f53008ba46800f5a14759751e0b4da2ccf35613931d2bc27ca5a1c9", + "config/scripts/ci-unit-sequencer.mjs": "fe7d421e2052d7d7d90678f7fde15b1f974e67459df7244d826b4a1d39cee730", + "config/scripts/happy-dom-offscreen-canvas.ts": "888cef91689976d56d944a2069cd4a163aac301936e20180ace8881cc0e4b2a0", + "config/scripts/happy-dom-mutation-observer-retention.ts": "15afb5c70ec9914313fbaea43942e974b77ef41ca672f27301daf93bc8dcec45", + "config/scripts/vitest-host-ports-setup.ts": "13bad1952f2da1a3c0042d06cbc375dc03ec112552d91661589ea2c64d159b21", + "src/main/ipc/runtime-environment-session-retirement.test.ts": "af07f07c8bc866d3556c931e7b1ddcdb6e45dcd8df2bc14ad3d93c79754413a5", + "config/scripts/ci-shard-assignment.mjs": "a7b57ff68bdbfab909b753bc117edbcc0da2029b552ab1176d815b2d2142f49b" + }, "publicationCommit": "291b4ddd6f1c1af480169885e0fda7f9c78ff053", "dependencyScope": "Complete evaluated src module graphs; Vitest/esbuild and other node_modules use installed working dependencies. File hashes normalize CRLF to LF.", "installedToolVersions": { @@ -29,11 +38,11 @@ }, "artifactHashes": { "scenario.test.mjs": "4260a53478de7564fb80ddb9657ce06804af047fc19e4395b07b374132ed346c", - "sources.cjs": "78632a61c38ba7b6b71a424f3288254c064ee7bd6a9fc9c7674e864fa0e041b4", + "sources.cjs": "1909b4a86ed71b0cabc8da20753d58331c43004f90d7ea1f3913edf4febc7cf8", "phase.config.mjs": "b7f6dd1de0fefc7d10e5c473994f2196715bbdc3f75ecd83ad274682f67616f5", "before.config.mjs": "a5846749981bf533be223131ab5a787cef691448a58894806f5ef722b6c61195", - "reproduce.mjs": "4390e4c427490edc443c7261ce24f5e069d8e426e6a633dfb5035beea4800297", - "source-versions.json": "b63f0f65b5a29616ec88b5ab0bac788e1d73af18a7e3850ceb32d49cced235ed", + "reproduce.mjs": "e8bc1bc5efbf9dc1ae2deef05f48cf178785b155fe974e1e373d57144157c5e9", + "source-versions.json": "7ce0e4a36387779e24bd4f068621321682faf0fa14a9c38cce98db4cef1f0068", "fix.patch": "c8b37c7b72945d6889dd5afb99da4d9e7348965a04f6b9bfd914b65250a95fc4", "main-fix.patch": "b44976a0167c68ccbdfc6ca382e55ffe07454ba9e7d74a44b4e570bba3825530", "publication.patch": "2319a9224c9b2a87ae69921745ff506efde00bb6b4b160f2870550f13aa061d5" diff --git a/docs/audits/paired-host-session-partition-retirement/node-results.json b/docs/audits/paired-host-session-partition-retirement/node-results.json index 62ef60e46c8..1283cf368f4 100644 --- a/docs/audits/paired-host-session-partition-retirement/node-results.json +++ b/docs/audits/paired-host-session-partition-retirement/node-results.json @@ -7,6 +7,15 @@ "arch": "arm64" }, "workingFlavor": "currentFixed", + "configurationAndFixtureHashes": { + "config/vitest.config.ts": "05c58f7f4f53008ba46800f5a14759751e0b4da2ccf35613931d2bc27ca5a1c9", + "config/scripts/ci-unit-sequencer.mjs": "fe7d421e2052d7d7d90678f7fde15b1f974e67459df7244d826b4a1d39cee730", + "config/scripts/happy-dom-offscreen-canvas.ts": "888cef91689976d56d944a2069cd4a163aac301936e20180ace8881cc0e4b2a0", + "config/scripts/happy-dom-mutation-observer-retention.ts": "15afb5c70ec9914313fbaea43942e974b77ef41ca672f27301daf93bc8dcec45", + "config/scripts/vitest-host-ports-setup.ts": "13bad1952f2da1a3c0042d06cbc375dc03ec112552d91661589ea2c64d159b21", + "src/main/ipc/runtime-environment-session-retirement.test.ts": "af07f07c8bc866d3556c931e7b1ddcdb6e45dcd8df2bc14ad3d93c79754413a5", + "config/scripts/ci-shard-assignment.mjs": "a7b57ff68bdbfab909b753bc117edbcc0da2029b552ab1176d815b2d2142f49b" + }, "publicationCommit": "291b4ddd6f1c1af480169885e0fda7f9c78ff053", "dependencyScope": "Complete evaluated src module graphs; Vitest/esbuild and other node_modules use installed working dependencies. File hashes normalize CRLF to LF.", "installedToolVersions": { @@ -29,11 +38,11 @@ }, "artifactHashes": { "scenario.test.mjs": "4260a53478de7564fb80ddb9657ce06804af047fc19e4395b07b374132ed346c", - "sources.cjs": "78632a61c38ba7b6b71a424f3288254c064ee7bd6a9fc9c7674e864fa0e041b4", + "sources.cjs": "1909b4a86ed71b0cabc8da20753d58331c43004f90d7ea1f3913edf4febc7cf8", "phase.config.mjs": "b7f6dd1de0fefc7d10e5c473994f2196715bbdc3f75ecd83ad274682f67616f5", "before.config.mjs": "a5846749981bf533be223131ab5a787cef691448a58894806f5ef722b6c61195", - "reproduce.mjs": "4390e4c427490edc443c7261ce24f5e069d8e426e6a633dfb5035beea4800297", - "source-versions.json": "b63f0f65b5a29616ec88b5ab0bac788e1d73af18a7e3850ceb32d49cced235ed", + "reproduce.mjs": "e8bc1bc5efbf9dc1ae2deef05f48cf178785b155fe974e1e373d57144157c5e9", + "source-versions.json": "7ce0e4a36387779e24bd4f068621321682faf0fa14a9c38cce98db4cef1f0068", "fix.patch": "c8b37c7b72945d6889dd5afb99da4d9e7348965a04f6b9bfd914b65250a95fc4", "main-fix.patch": "b44976a0167c68ccbdfc6ca382e55ffe07454ba9e7d74a44b4e570bba3825530", "publication.patch": "2319a9224c9b2a87ae69921745ff506efde00bb6b4b160f2870550f13aa061d5" diff --git a/docs/audits/paired-host-session-partition-retirement/reproduce.mjs b/docs/audits/paired-host-session-partition-retirement/reproduce.mjs index b2ab0be3e72..e74d29cfc6d 100644 --- a/docs/audits/paired-host-session-partition-retirement/reproduce.mjs +++ b/docs/audits/paired-host-session-partition-retirement/reproduce.mjs @@ -133,6 +133,7 @@ try { arch: process.arch }, workingFlavor: loaded.flavor, + configurationAndFixtureHashes: loaded.runnerHashes, publicationCommit: versions.publicationCommit, dependencyScope: versions.scope, installedToolVersions: { diff --git a/docs/audits/paired-host-session-partition-retirement/source-versions.json b/docs/audits/paired-host-session-partition-retirement/source-versions.json index 93e9335d21a..c569ce65629 100644 --- a/docs/audits/paired-host-session-partition-retirement/source-versions.json +++ b/docs/audits/paired-host-session-partition-retirement/source-versions.json @@ -5338,7 +5338,11 @@ "config/scripts/happy-dom-offscreen-canvas.ts": "888cef91689976d56d944a2069cd4a163aac301936e20180ace8881cc0e4b2a0", "config/scripts/happy-dom-mutation-observer-retention.ts": "15afb5c70ec9914313fbaea43942e974b77ef41ca672f27301daf93bc8dcec45", "config/scripts/vitest-host-ports-setup.ts": "13bad1952f2da1a3c0042d06cbc375dc03ec112552d91661589ea2c64d159b21", - "src/main/ipc/runtime-environment-session-retirement.test.ts": "af07f07c8bc866d3556c931e7b1ddcdb6e45dcd8df2bc14ad3d93c79754413a5" + "src/main/ipc/runtime-environment-session-retirement.test.ts": [ + "af07f07c8bc866d3556c931e7b1ddcdb6e45dcd8df2bc14ad3d93c79754413a5", + "6a66611984afeed33ec4d418d60a991d8c0f14d29647af506b398966ee0491e7" + ], + "config/scripts/ci-shard-assignment.mjs": "a7b57ff68bdbfab909b753bc117edbcc0da2029b552ab1176d815b2d2142f49b" }, "evaluated": { "current-before": { @@ -9973,5 +9977,18 @@ "src/shared/wsl-paths.ts": "1d9dcf5a1ff6693c02ff60a6b074eb2ebb7e83bda12aceba7e0b208d410b6d1a", "src/shared/zod-salvage.ts": "a2bbfe083efc5927632f181cb9295038b3b2399ad94bec418e2c55620f5db35e" } + }, + "fixtureVariants": { + "src/main/ipc/runtime-environment-session-retirement.test.ts": { + "current": { + "sha256": "af07f07c8bc866d3556c931e7b1ddcdb6e45dcd8df2bc14ad3d93c79754413a5", + "sessionHandlerParameters": 2 + }, + "main": { + "sha256": "6a66611984afeed33ec4d418d60a991d8c0f14d29647af506b398966ee0491e7", + "sessionHandlerParameters": 1 + }, + "reason": "Main has no unrelated empty-tab retirement handler. Its permanent fixture omits the audit branch-only second runtime argument. Both exact fixture hashes are accepted; reports record actual source hash." + } } } diff --git a/docs/audits/paired-host-session-partition-retirement/sources.cjs b/docs/audits/paired-host-session-partition-retirement/sources.cjs index d09f4e403de..5b972723901 100644 --- a/docs/audits/paired-host-session-partition-retirement/sources.cjs +++ b/docs/audits/paired-host-session-partition-retirement/sources.cjs @@ -58,8 +58,12 @@ function loadVariants(readSource) { flavor, 'Working source graph matches no exact audited/publication before/fixed identity' ) + const runnerHashes = {} for (const [file, expected] of Object.entries(versions.runnerSources)) { - assert.equal(sha(read(path.join(root, file))), expected, `Runner source drift: ${file}`) + const actual = sha(read(path.join(root, file))) + const accepted = Array.isArray(expected) ? expected : [expected] + assert.ok(accepted.includes(actual), `Runner source drift: ${file}`) + runnerHashes[file] = actual } let fixed = physical if (flavor === 'currentBefore') { @@ -76,6 +80,7 @@ function loadVariants(readSource) { const recovery = 'src/main/runtime/runtime-legacy-worker-terminal-recovery-persistence.ts' return { flavor, + runnerHashes, maps: { 'current-fixed': fixed, 'current-before': currentBefore, @@ -134,7 +139,7 @@ function phasePlugin(phase) { return undefined } if (versions.runnerSources[file]) { - assert.equal(sha(_source.replaceAll('\r\n', '\n')), versions.runnerSources[file]) + assert.equal(sha(_source.replaceAll('\r\n', '\n')), loaded.runnerHashes[file]) return undefined } assert.ok(expected[file], `Unfenced evaluated module: ${phase}:${file}`) diff --git a/docs/audits/paired-host-session-partition-retirement/validation.json b/docs/audits/paired-host-session-partition-retirement/validation.json index 67b34249630..0a6d9958bd5 100644 --- a/docs/audits/paired-host-session-partition-retirement/validation.json +++ b/docs/audits/paired-host-session-partition-retirement/validation.json @@ -89,5 +89,42 @@ "Rollback check is partition presence, not a same-ID incarnation fence", "Renderer retained objects and existing unknown historical partitions are not swept", "No RSS, byte reduction, or exclusive incident attribution claimed" - ] + ], + "publicationFixtureCiCorrection": { + "failedHead": "ace839c0ffdd9659fdf65d19e0c74284658fbd7d", + "job": "https://github.com/stablyai/orca/actions/runs/35190942403/job/105103456606", + "introducedFailure": "TS2554 at runtime-environment-session-retirement.test.ts:89: main handler expects1argument; audit fixture passed2 for an unrelated empty-tab feature", + "correction": "Publication-only one-argument permanent fixture; primary keeps its actual two-argument signature. Exact fixture variants fenced and actual source hashes recorded. No product change.", + "primaryFixtureSha256": "af07f07c8bc866d3556c931e7b1ddcdb6e45dcd8df2bc14ad3d93c79754413a5", + "mainFixtureSha256": "6a66611984afeed33ec4d418d60a991d8c0f14d29647af506b398966ee0491e7", + "primaryPermanentTests": { + "passed": 28, + "failed": 0, + "suites": 2 + }, + "mainProjectedPermanentTests": { + "passed": 16, + "failed": 0, + "suites": 1 + }, + "baselinePermanentTests": { + "passed": 5, + "expectedFailures": 11 + }, + "portableNodeCases": 78, + "portableElectronCases": 78, + "namedPublicationNodeTypecheck": { + "exitCode": 0, + "sourceCommit": "ace839c0ffdd9659fdf65d19e0c74284658fbd7d", + "command": "ORCA_BACKGROUND_LAUNCH=1 node_modules/.bin/tsc --noEmit -p config/tsconfig.node.json", + "scope": "Named publication source files exported into an ignored directory, with only the corrected one-argument fixture; installed working node_modules. Not a historical dependency install." + }, + "configurationFenceAddition": "config/scripts/ci-shard-assignment.mjs, imported by the already fenced unit sequencer", + "physicalMainArtifactRun": { + "passed": true, + "cases": 78, + "workingFlavor": "mainFixed", + "fixtureSha256": "6a66611984afeed33ec4d418d60a991d8c0f14d29647af506b398966ee0491e7" + } + } }