diff --git a/docs/reference/plans/2026-07-14-ssh-relay-github-release-implementation-checklist.md b/docs/reference/plans/2026-07-14-ssh-relay-github-release-implementation-checklist.md
index 6dd5979f498..e736565e8ac 100644
--- a/docs/reference/plans/2026-07-14-ssh-relay-github-release-implementation-checklist.md
+++ b/docs/reference/plans/2026-07-14-ssh-relay-github-release-implementation-checklist.md
@@ -2,7 +2,7 @@
Date created: 2026-07-14
Last updated: 2026-07-14
-Current phase: Milestone 3 / Work Package 2 target-native runtime assembly — exact-head run [29363423068](https://github.com/stablyai/orca/actions/runs/29363423068) at commit `2db46d91b` proves bounded `build/Release` discovery on both native Windows architectures: both clean builds select three tracking candidates, search 82 entries, select one target record, and report the same `/brepro`, `/debug`, `/experimental:deterministic`, `/guard:cf` summary with no explicit `/incremental` switch; Linux x64/arm64, macOS x64/arm64, and Windows x64 compare exactly and upload, while Windows arm64 retains the 2,879 linker-thunk mismatch and fails before upload under E-M3-WINDOWS-LINK-COMMAND-RELEASE-ROOT-CI-RED-001; exact implementation commit `e7d9a1c8d` adds only a bounded target `.ilk` presence/size diagnostic and is locally green under E-M3-WINDOWS-INCREMENTAL-DATABASE-LOCAL-001; the next exact-head six-cell run is required before any producer change; no evidence authorizes changing a comparator, production/default path, or tuple state; oldest-baseline, native-trust, cross-family remote, and measured-baseline gates remain open; no bundled-runtime path is enabled
+Current phase: Milestone 3 / Work Package 2 target-native runtime assembly — exact-head run [29364581781](https://github.com/stablyai/orca/actions/runs/29364581781) at ledger head `d1eca8a55` proves both clean Windows x64 builds create the same 4,238,838-byte target `.ilk` and both clean Windows arm64 builds create the same 4,980,517-byte target `.ilk`; Microsoft documents that `/DEBUG` implies `/INCREMENTAL` and that incremental linking creates this database; Windows x64 and all four POSIX controls compare and upload, while arm64 retains the exact 2,879-thunk drift and no rejected upload under E-M3-WINDOWS-INCREMENTAL-DATABASE-CI-RED-001; exact implementation commit `6dfdfa0bd` adds `/INCREMENTAL:NO` only to the copied node-pty Windows linker options and is locally green under E-M3-WINDOWS-INCREMENTAL-DISABLE-LOCAL-001; the next exact-head six-cell run must prove generated/actual option propagation, target `.ilk` absence, complete strict equality, smoke, and upload before this correction is accepted; `/guard:cf`, the repository-wide node-pty patch, production/default behavior, and every tuple state remain unchanged; oldest-baseline, native-trust, cross-family remote, and measured-baseline gates remain open; no bundled-runtime path is enabled
Primary design: [SSH relay GitHub Release plan](./2026-07-14-ssh-relay-github-release-plan.html)
Motivating issues: [#8450](https://github.com/stablyai/orca/issues/8450), [#1693](https://github.com/stablyai/orca/issues/1693)
@@ -742,6 +742,15 @@ incremental linking without an explicit command switch, the next bounded diagnos
the exact target `.ilk` file's presence and size from the already bounded clean Release tree before
any copied-artifact producer change.
+Exact-head run 29364581781 proves both Windows architectures create a stable target `.ilk` in each
+clean build: 4,238,838 bytes on x64 and 4,980,517 bytes on arm64. Microsoft documents that
+`/DEBUG` implies `/INCREMENTAL`, incremental linking creates the `.ilk`, and `/INCREMENTAL:NO` is
+the explicit override. Five controls compare and upload; arm64 retains the exact thunk drift and
+fails before upload (E-M3-WINDOWS-INCREMENTAL-DATABASE-CI-RED-001). This authorizes one narrow
+producer correction: add `/INCREMENTAL:NO` only to the copied node-pty Windows linker options,
+retain `/guard:cf`, and fail closed unless the generated project and actual command each contain
+exactly one disable switch and the clean output tree contains no target `.ilk`.
+
Each runtime must contain only the executable closure required by the relay.
- [ ] Replace or extend `config/scripts/build-relay.mjs` without weakening its existing relay and
@@ -1345,16 +1354,16 @@ Baseline measurements must be captured before product behavior changes.
Update status and evidence as work begins. Do not combine these into one large behavior switch.
-| Work package | Scope | Default behavior change | Status | PR/evidence |
-| ------------------------- | ------------------------------------------------------------------------------------------ | --------------------------- | ----------------------------------------------------- | ----------------------------------------------------------------------- |
-| 0. #8450 legacy fix | Coherent Node/npm selection and live repro | Fixes legacy selection only | Complete and CI-green in draft PR #8724 | E-M0-UNIT-002, E-M0-LIVE-002, E-M0-STATIC-002, E-M0-PR-001, E-M0-CI-001 |
-| 1. Contract and selectors | Manifest schema, identity, platform/libc selection, hostile inputs | None | Complete and CI-green in draft PR #8728 | `b9d80a4cb`; E-M2-RED-001, E-M2-CONTRACT-001, E-M2-CI-001 |
-| 2. Runtime builds | Per-tuple assembly, native smoke, SBOM/provenance/signing | None | Draft PR #8741; native target `.ilk` evidence pending | `e7d9a1c8d`; E-M3-WINDOWS-INCREMENTAL-DATABASE-LOCAL-001 |
-| 3. Release publication | Prerequisite DAG, embedded manifest, draft upload/read-back gates | Asset-only | Not started | — |
-| 4. Desktop resolver/cache | Verified download, extraction, cache, offline behavior | None/forced mode only | Not started | — |
-| 5. Transfer/install | Bounded transports, structured sentinel, bundled launch behind per-target Beta/forced mode | Per-target opt-in only | Not started | — |
-| 6. Fallback/diagnostics | Abort-and-join state machine, mode isolation, reason codes, target-mode configuration/UI | Per-target Beta only | Not started | — |
-| 7. Live gates/rollout | Matrix, security, performance, release promotion | Per-tuple staged | Not started | — |
+| Work package | Scope | Default behavior change | Status | PR/evidence |
+| ------------------------- | ------------------------------------------------------------------------------------------ | --------------------------- | ------------------------------------------------------ | ----------------------------------------------------------------------- |
+| 0. #8450 legacy fix | Coherent Node/npm selection and live repro | Fixes legacy selection only | Complete and CI-green in draft PR #8724 | E-M0-UNIT-002, E-M0-LIVE-002, E-M0-STATIC-002, E-M0-PR-001, E-M0-CI-001 |
+| 1. Contract and selectors | Manifest schema, identity, platform/libc selection, hostile inputs | None | Complete and CI-green in draft PR #8728 | `b9d80a4cb`; E-M2-RED-001, E-M2-CONTRACT-001, E-M2-CI-001 |
+| 2. Runtime builds | Per-tuple assembly, native smoke, SBOM/provenance/signing | None | Draft PR #8741; native `/INCREMENTAL:NO` proof pending | `6dfdfa0bd`; E-M3-WINDOWS-INCREMENTAL-DISABLE-LOCAL-001 |
+| 3. Release publication | Prerequisite DAG, embedded manifest, draft upload/read-back gates | Asset-only | Not started | — |
+| 4. Desktop resolver/cache | Verified download, extraction, cache, offline behavior | None/forced mode only | Not started | — |
+| 5. Transfer/install | Bounded transports, structured sentinel, bundled launch behind per-target Beta/forced mode | Per-target opt-in only | Not started | — |
+| 6. Fallback/diagnostics | Abort-and-join state machine, mode isolation, reason codes, target-mode configuration/UI | Per-target Beta only | Not started | — |
+| 7. Live gates/rollout | Matrix, security, performance, release promotion | Per-tuple staged | Not started | — |
Every PR must document:
@@ -5720,6 +5729,161 @@ the bounded depth` before opening or parsing a candidate. Starting at the comple
producer change. Preserve `/guard:cf`, strict comparison, no rejected upload, and every
default/legacy boundary.
+### E-M3-WINDOWS-INCREMENTAL-DATABASE-CI-RED-001 — Native `.ilk` proves implicit incremental link
+
+- Date: 2026-07-14
+- Commit SHA / PR: exact ledger head `d1eca8a55dec3e96f9ecf1600e8e6e169cdfd3fe`, containing exact
+ diagnostic implementation commit `e7d9a1c8d3222ff5923679ad69b76b57d963c4f3`; stacked draft
+ PR [#8741](https://github.com/stablyai/orca/pull/8741)
+- Run and jobs: [run 29364581781](https://github.com/stablyai/orca/actions/runs/29364581781),
+ conclusion `failure`; Windows x64 `87192850326` success, Windows arm64 `87192850417` expected
+ strict-comparison failure, Linux arm64 `87192850309` success, Linux x64 `87192850444` success,
+ macOS x64 `87192850303` success, and macOS arm64 `87192850364` success
+- Runners: Windows x64 used `windows-2022` / `win22` `20260706.237.1`, native X64; Windows arm64
+ used `windows-11-arm` / `win11-arm64` `20260706.102.1`, native ARM64. Linux x64 used
+ `ubuntu-24.04` / `ubuntu24` `20260705.232.1`; Linux arm64 used `ubuntu-24.04-arm` /
+ `ubuntu24-arm64` `20260706.52.2`; macOS x64 used `macos-15-intel` / `macos15`
+ `20260629.0276.1`; macOS arm64 used `macos-15` / `macos15` `20260706.0213.1`. Every runner
+ checked out the exact head above; both Windows jobs used Node v24.18.0 and MSVC 14.44.35207 /
+ compiler 19.44.35228.
+- Remote and transport: none; target-native artifact assembly, strict comparison, and unpublished
+ seven-day Actions artifacts only
+- Exact evidence commands:
+
+ ```sh
+ gh run view 29364581781 --repo stablyai/orca \
+ --json status,conclusion,headSha,createdAt,updatedAt,url,jobs
+ gh api repos/stablyai/orca/actions/jobs/87192850326/logs
+ gh api repos/stablyai/orca/actions/jobs/87192850417/logs
+ gh api 'repos/stablyai/orca/actions/runs/29364581781/artifacts?per_page=100'
+ curl -fsSL --proto '=https' --tlsv1.2 \
+ 'https://learn.microsoft.com/en-us/cpp/build/reference/incremental-link-incrementally?view=msvc-170' \
+ | rg -i -C 2 'DEBUG|incremental.*default|\.ilk|INCREMENTAL:NO'
+ ```
+
+- Result: FAIL as the intended strict evidence boundary. Both clean x64 builds report the same
+ 4,238,838-byte `conpty_console_list.ilk`; both clean arm64 builds report the same 4,980,517-byte
+ target database. All four still report `/debug` with `incremental: unspecified` and no explicit
+ `/incremental` or `/opt` switch in the command record. Microsoft documents that `/DEBUG` implies
+ `/INCREMENTAL`, incremental links create/update an `.ilk`, and `/INCREMENTAL:NO` overrides the
+ default. Windows x64 and all four POSIX controls compare exactly. Windows arm64 builds, verifies,
+ and executes both candidates, then rejects only `conpty_console_list.node` and skips upload.
+- Arm64 diagnostic: the two 956,928-byte modules again differ at 5,826 bytes across 2,886 ranges:
+ 5,758 bytes in 2,879 two-byte `.text` ranges spaced 16 bytes apart, plus the same 68 derived
+ COFF/debug/CodeView bytes. Their content IDs are
+ `sha256:b38d3343e96f339eb7197a4fb379b5f636d5f6752d42434b508bb7c67803f57c` and
+ `sha256:9d937233f63b142f03e504af2ffeeeb05b2de2b979047a369a79dd1d793b1786`.
+- Uploaded controls: exactly five unpublished artifacts and no Windows arm64 artifact: Windows x64
+ `8323660213`, 37,075,309 bytes,
+ `sha256:788c43c94db25e995e6d36ab437d841e01a24846f3b8ec519f62fd7bebeb4fbd`; Linux x64
+ `8323618920`, 29,280,401 bytes,
+ `sha256:0b19a0b1dd78793ae0d55f7077eb871a7a8f98d3f7e4c3b8fd5f457f8f008fd6`; Linux arm64
+ `8323624757`, 28,207,487 bytes,
+ `sha256:cf4bb8255b260fc9109b9180b05d561a3b3cb0c3eeb791d111aff649368a5c86`; macOS x64
+ `8323808296`, 26,420,419 bytes,
+ `sha256:4117ae641972cad3936b9733b8461148ab2e4e3280cb3d27d31b479d966e412a`; and macOS arm64
+ `8323599375`, 24,749,802 bytes,
+ `sha256:b29cba1d66f7fedfa89bd4994d0186b5f2e0f89a17b95d709727808e0ccf3590`.
+- Duration and resource metrics: jobs ran 4m56s Windows x64, 10m25s Windows arm64, 3m32s Linux
+ arm64, 3m22s Linux x64, 10m47s macOS x64, and 2m38s macOS arm64. Windows arm64 clean builds took
+ 156,490.445 ms and 135,338.371 ms; smoke took 5,949.372 ms at 53,084,160-byte RSS and
+ 5,425.281 ms at 52,871,168-byte RSS. SSH channels/files, cancellation, and fallback delay remain
+ outside this artifact-only run.
+- Artifact/log/trace link: run/jobs, Microsoft linker reference above, and the five unpublished
+ artifacts; rejected arm64 bytes existed only in the bounded job workspace and logs and were not
+ uploaded
+- Oracle proved: a fresh target incremental-link database on both clean builds and both native
+ architectures; the documented `/DEBUG`-implied incremental state; stable target database sizes;
+ five exact controls; unchanged arm64 thunk drift; strict rejection and no rejected upload.
+- Does not prove: that `/INCREMENTAL:NO` removes the thunk drift, that all six outputs compare,
+ oldest baselines, native trust, SSH, publication, transfer, fallback, UI, or any enabled tuple.
+- Checklist items satisfied: native implicit-incremental-link classification only; no tuple or
+ production checkbox.
+- Follow-up: add exactly one `/INCREMENTAL:NO` to only the copied node-pty Windows linker options.
+ Fail closed unless the generated project and actual command each contain it exactly once and the
+ clean tree contains no target `.ilk`; rerun all six native cells with `/guard:cf`, strict
+ comparison, and rejected-output no-upload unchanged.
+
+### E-M3-WINDOWS-INCREMENTAL-DISABLE-LOCAL-001 — Copied-artifact full-link correction
+
+- Date: 2026-07-14
+- Commit SHA / PR: exact implementation commit
+ `6dfdfa0bd0d812c20981ffb728ddd18273097e6a`; stacked draft
+ PR [#8741](https://github.com/stablyai/orca/pull/8741), target-native execution pending
+- Runner: macOS 26.2 build 25C56, native Apple M4 arm64; Node v26.0.0 and pnpm 10.24.0. This runner
+ cannot execute MSVC, so Windows x64/arm64 jobs remain authoritative.
+- Remote and transport: none; copied-source, generated-project, actual-command/result-shape, and
+ ordering contracts only
+- Red evidence: E-M3-WINDOWS-INCREMENTAL-DATABASE-CI-RED-001 proves both native architectures use
+ `/DEBUG`-implied incremental linking, create stable target `.ilk` files, and retain the arm64 thunk
+ drift; no synthetic local failure substitutes for that target-native evidence
+- Exact green commands:
+
+ ```sh
+ node --check config/scripts/ssh-relay-node-pty-windows-build-determinism.mjs
+ node --check config/scripts/ssh-relay-node-pty-windows-build-determinism.test.mjs
+ /usr/bin/time -lp pnpm exec vitest run --config config/vitest.config.ts \
+ config/scripts/ssh-relay-node-pty-windows-build-determinism.test.mjs \
+ config/scripts/ssh-relay-node-pty-build.test.mjs \
+ config/scripts/ssh-relay-runtime-workflow.test.mjs
+ /usr/bin/time -lp pnpm exec vitest run --config config/vitest.config.ts \
+ config/scripts/ssh-relay-node-release-verification.test.mjs \
+ config/scripts/ssh-relay-node-tar-inspection.test.mjs \
+ config/scripts/ssh-relay-node-pty-build.test.mjs \
+ config/scripts/ssh-relay-node-pty-windows-build-determinism.test.mjs \
+ config/scripts/ssh-relay-node-pty-windows-settlement.test.mjs \
+ config/scripts/ssh-relay-node-zip-inspection.test.mjs \
+ config/scripts/ssh-relay-runtime-artifact.test.mjs \
+ config/scripts/ssh-relay-runtime-build.test.mjs \
+ config/scripts/ssh-relay-runtime-pty-smoke.test.mjs \
+ config/scripts/ssh-relay-runtime-reproducibility.test.mjs \
+ config/scripts/ssh-relay-runtime-resource-diagnostics.test.mjs \
+ config/scripts/ssh-relay-runtime-windows-pe-diagnostic.test.mjs \
+ config/scripts/ssh-relay-runtime-windows-tree.test.mjs \
+ config/scripts/ssh-relay-runtime-workflow.test.mjs \
+ config/scripts/ssh-relay-runtime-zip.test.mjs
+ pnpm run typecheck
+ pnpm exec oxlint \
+ config/scripts/ssh-relay-node-pty-windows-build-determinism.mjs \
+ config/scripts/ssh-relay-node-pty-windows-build-determinism.test.mjs \
+ config/scripts/ssh-relay-node-pty-build.mjs
+ pnpm run check:max-lines-ratchet
+ GOMAXPROCS=2 pnpm run lint
+ pnpm exec oxfmt --check \
+ config/scripts/ssh-relay-node-pty-windows-build-determinism.mjs \
+ config/scripts/ssh-relay-node-pty-windows-build-determinism.test.mjs \
+ config/scripts/ssh-relay-node-pty-build.mjs \
+ docs/reference/plans/2026-07-14-ssh-relay-github-release-implementation-checklist.md
+ git diff --check
+ ```
+
+- Result: PASS. The purpose suites pass 13/13 tests and all 15 artifact suites pass 58/58. Syntax,
+ typecheck, focused oxlint, the 355-entry max-lines ratchet, full repository
+ lint/reliability/localization, formatting, diff, and staged pre-commit hooks exit zero. Full lint
+ emits only pre-existing warnings outside this artifact package.
+- Duration and resource metrics: purpose gate 1.00 s wall / 202 ms Vitest with 132,235,264-byte
+ maximum RSS and 96,408,952-byte peak footprint; complete artifact gate 2.63 s wall / 1.13 s
+ Vitest with 132,251,648-byte maximum RSS and 96,490,944-byte peak footprint. The parallel
+ typecheck/focused-lint/max-lines group completed in 3.1 s; full lint and format/diff gates settled
+ within 10.1 s. No runtime archive, SSH channel/file, cancellation, fallback, or launch-latency
+ metric is exercised by this local package.
+- Artifact/log/trace link: exact implementation commit and local command output; no runtime artifact
+ was created, staged, published, or uploaded
+- Oracle proved: only the copied Windows node-pty linker options gain exactly one
+ `/INCREMENTAL:NO`; compiler options remain separate and `/guard:cf` remains present; source drift
+ or repeat transformation fails closed; generated Release projects must inherit exactly one disable
+ switch; actual target commands must classify it as disabled; any target `.ilk` fails before
+ staging; POSIX and the installed repository source remain unchanged. Both source and test modules
+ remain below 300 lines without a max-lines bypass.
+- Does not prove: MSVC accepts/propagates the option on either native architecture, that target
+ `.ilk` is absent, that the arm64 thunks become stable, that all six outputs compare and upload,
+ oldest baselines, native trust, SSH, publication, transfer, fallback, UI, or any enabled tuple.
+- Checklist items satisfied: local copied-artifact incremental-disable contract only; no tuple or
+ production checkbox.
+- Follow-up: push the exact implementation plus ledger head and rerun all six target-native cells.
+ Require both Windows clean builds to report `/incremental:no`, no target `.ilk`, complete runtime
+ smoke, exact output equality, and upload before accepting the correction.
+
## Accepted Gaps
No product gap is accepted merely because it appears in this list. Each entry requires explicit
@@ -5730,7 +5894,7 @@ owner and promotion condition.
| Bundled runtime only partially implemented | Six unpublished native artifact proofs; no production consumer | #8450/#1693 environment failures remain | Codex implementation owner | Complete Work Packages 2–7 plus Milestones 3–14 | Open |
| No bundled tuple enabled | Every target's default and effective mode remains legacy | No bundled support claim can be made | Codex implementation owner | Complete target-native build/trust and both required live-evidence layers | Open |
| Windows runtime smoke incomplete | Native x64/arm64 smoke settles and uploads exact evidence | Historical blocker is closed | Codex implementation owner | Met by E-M3-WINDOWS-CI-001 | CLOSED |
-| Native clean-rebuild identity unproved | Five controls pass; arm64 target command has no explicit `/INCREMENTAL` | Toolchain drift may change native content IDs | Codex implementation owner | Classify target `.ilk`, then make all six clean builds match | Open |
+| Native clean-rebuild identity unproved | Five controls pass; copied `/INCREMENTAL:NO` is locally green | Toolchain drift may change native content IDs | Codex implementation owner | Prove flag, no `.ilk`, and all-six equality on native runners | Open |
| Cross-family Layer B remotes unavailable | GitHub native runner labels exist; no approved reachable target pool | Client/remote integration gaps may escape | Repository release administrator + implementation owner | Approve provider/snapshots/credentials/egress/teardown/cost owner | BLOCKED |
| Musl has no accepted official Node binary | Musl is deliberately legacy-only | Unofficial binary would break provenance trust | Codex implementation owner | Orca-owned target-native source build, signing, provenance, and live gates | ACCEPTED GAP |
| Native arm64 live matrices incomplete | Hosted Linux/Windows arm64 labels exist; full SSH/runtime cells do not | Cross-build or unit tests may hide native bugs | Codex implementation owner | Full native archive, trust, SFTP/system-SSH, RPC, and baseline evidence | Open |
@@ -5777,11 +5941,10 @@ The project is not complete until every applicable item below is checked with ev
## Next Required Action
-Add a purpose-tested bounded diagnostic for the exact target `conpty_console_list.ilk` file under
-the already bounded clean `build/Release` traversal, recording only presence and size. Rerun both
-Windows architectures and all four POSIX controls. Only if target-native evidence proves implicit
-incremental linking may a copied-artifact `/INCREMENTAL:NO` producer correction be considered;
-retain `/guard:cf`, strict parsing/comparison, and rejected-output no-upload.
+Push exact implementation commit `6dfdfa0bd` plus its evidence-ledger head, then rerun both Windows
+architectures and all four POSIX controls. Require both Windows clean builds to report exactly one
+`/INCREMENTAL:NO`, no target `.ilk`, complete smoke, exact output equality, and upload. Retain
+`/guard:cf`, strict parsing/comparison, and rejected-output no-upload.
Cross-family Layer B targets, the protected manifest-signing environment,
oldest-baseline/native-trust cells, and the paired legacy performance baseline remain
release/default-path blockers; no publication, desktop resolver, SSH transfer/install, per-target