From ff3ebf37e32e9dad5834e669438efd46a974a708 Mon Sep 17 00:00:00 2001 From: Jinwoo-H Date: Tue, 14 Jul 2026 18:35:32 -0400 Subject: [PATCH] docs(ssh): record linker collision evidence Co-authored-by: Orca --- ...elease-implementation-checklist-summary.md | 15 ++- ...github-release-implementation-checklist.md | 123 +++++++++++++++--- 2 files changed, 116 insertions(+), 22 deletions(-) diff --git a/docs/reference/plans/2026-07-14-ssh-relay-github-release-implementation-checklist-summary.md b/docs/reference/plans/2026-07-14-ssh-relay-github-release-implementation-checklist-summary.md index f715ded686a..1f1caeccecc 100644 --- a/docs/reference/plans/2026-07-14-ssh-relay-github-release-implementation-checklist-summary.md +++ b/docs/reference/plans/2026-07-14-ssh-relay-github-release-implementation-checklist-summary.md @@ -22,13 +22,14 @@ complete a box. - [ ] **WP2 — Finish target-native artifact metadata and provenance.** - Four POSIX GitHub runner cells pass build, smoke, equality, metadata upload, and direct payload - audit in [run 29372156145](https://github.com/stablyai/orca/actions/runs/29372156145). - - Windows x64/arm64 fail closed because the resolved `link.exe` path differs from the assumed MSVC - layout; neither cell downloads inputs or produces an artifact. - - Local commit `d1eb45d61` adds a bounded path-tail diagnostic and is green across 20 test files / - 99 tests plus static gates. - - Next gate: push the diagnostic, inspect both native path shapes, then make only the evidenced - parser correction and rerun all six jobs. + audit in [run 29372816457](https://github.com/stablyai/orca/actions/runs/29372816457). + - Windows x64/arm64 prove Git for Windows' `link.exe` shadows the configured MSVC linker; neither + cell downloads inputs or produces an artifact. + - Local commit `5f0c1417d` selects exactly one canonical MSVC candidate while keeping the strict + path grammar and exact linker hash. It is green across 20 test files / 100 tests plus static + gates. + - Next gate: push the correction, rerun all six native jobs, then directly inspect all six + artifacts before completing the metadata/provenance box. ## Work packages, in required order 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 4d3d5cd9497..813bf18fd96 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 @@ -8,7 +8,7 @@ work; keep exact commands, runner identities, hashes, metrics, and residual gaps Date created: 2026-07-14
Last updated: 2026-07-14
-Current phase: Milestone 3 / Work Package 2 SBOM/provenance closure — **In progress — 2026-07-14, Codex implementation owner**; exact-head run [29372156145](https://github.com/stablyai/orca/actions/runs/29372156145) and direct payload audit keep Linux x64/arm64 and macOS x64/arm64 green but both Windows cells fail closed before build/upload because their resolved linker paths do not match the assumed MSVC toolset layout (E-M3-METADATA-CI-RED-006); exact implementation commit `d1eb45d61` retains that strict parser and exact linker SHA-256 while adding only a 512-byte bounded path-tail diagnostic, and passes 20 files / 99 tests plus typecheck, full lint, formatting, max-lines, and diff gates (E-M3-WINDOWS-LINKER-PATH-DIAGNOSTIC-LOCAL-001); the next native run must expose both real path shapes before any parser correction, and the eventual exact head must pass all six cells plus direct artifact inspection before any remaining SBOM/provenance/toolchain box is checked; oldest-baseline, native-trust, cross-family remote, and measured-baseline gates remain open; production/default behavior and every tuple state remain unchanged; no bundled-runtime path is enabled
+Current phase: Milestone 3 / Work Package 2 SBOM/provenance closure — **In progress — 2026-07-14, Codex implementation owner**; exact-head run [29372816457](https://github.com/stablyai/orca/actions/runs/29372816457) and direct payload audit keep Linux x64/arm64 and macOS x64/arm64 green while both Windows cells independently prove Git for Windows' `C:\Program Files\Git\usr\bin\link.exe` shadows the configured MSVC linker and fail closed before input download/build/upload (E-M3-METADATA-CI-RED-007); exact implementation commit `5f0c1417d` selects exactly one strict canonical MSVC candidate from all resolved linker paths, rejects zero/ambiguous matches, retains the exact selected-binary SHA-256, and passes 20 files / 100 tests plus typecheck, full lint, formatting, max-lines, and diff gates (E-M3-WINDOWS-LINKER-SELECTION-LOCAL-001); the correction requires an exact-head all-six native run and direct inspection of all six artifacts before any remaining SBOM/provenance/toolchain box is checked; oldest-baseline, native-trust, cross-family remote, and measured-baseline gates remain open; production/default behavior and every tuple state remain unchanged; 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) @@ -175,12 +175,11 @@ same change as the work it records. per-target opt-in selects bundled-preferred behavior, and implementing the setting does not authorize default-on rollout or legacy removal (E-M1-ROLLOUT-DECISION-001). - Legacy fallback removal: not authorized. -- Next required action: push bounded linker-path diagnostic commit `d1eb45d61` plus its evidence - ledger head and rerun all six target-native cells. Inspect the bounded x64 and arm64 path tails, - then make only the parser correction supported by those native paths. The corrected exact head - must retain the exact linker SHA-256 and pass all metadata, smoke, equality, upload, and direct - payload audits before the all-six provenance item can close. Preserve the artifact-only boundary, - legacy/default path, and every other release gate. +- Next required action: push unique canonical MSVC linker-selection commit `5f0c1417d` plus its + evidence ledger head and rerun all six target-native cells. Require one strict MSVC match despite + the Git-for-Windows PATH collision, the exact selected-linker SHA-256, and all metadata, smoke, + equality, upload, and direct payload audits before the all-six provenance item can close. Preserve + the artifact-only boundary, legacy/default path, and every other release gate. ## Non-Negotiable Invariants @@ -6831,6 +6830,101 @@ bounded version line: `. The PE lookup returned successfully but the `Fil - Follow-up: push this exact commit and ledger head, inspect both bounded native path tails, and make only the parser correction supported by that evidence. +### E-M3-METADATA-CI-RED-007 — Git for Windows shadows the configured MSVC linker + +- Date: 2026-07-14 +- Commit SHA / PR: exact tested head `92f9b76101d4214c07291f6d9befa647fbc0dd86`; + stacked draft PR [#8741](https://github.com/stablyai/orca/pull/8741) +- Runner: [GitHub Actions run 29372816457](https://github.com/stablyai/orca/actions/runs/29372816457), + final conclusion `failure` after 8m11s. Native job IDs and wall durations: Linux x64 + `87219773628` / 2m44s, Linux arm64 `87219773618` / 3m33s, macOS x64 `87219773620` / + 8m06s, macOS arm64 `87219773629` / 2m59s, Windows x64 `87219773636` / 1m18s, and + Windows arm64 `87219773684` / 5m10s. +- Remote and transport: none; target-native artifact-only build workflow +- Exact evidence commands: + + ```sh + gh run view 29372816457 --repo stablyai/orca \ + --json status,conclusion,headSha,createdAt,updatedAt,url,jobs + gh api repos/stablyai/orca/actions/runs/29372816457/artifacts + gh api repos/stablyai/orca/actions/jobs/87219773636/logs + gh api repos/stablyai/orca/actions/jobs/87219773684/logs + gh run download 29372816457 --repo stablyai/orca \ + --dir /tmp/orca-8450-metadata-red-29372816457 + # Repeat the exact fail-closed jq/shasum audit in E-M3-METADATA-CI-RED-003 with: + # evidence=/tmp/orca-8450-metadata-red-29372816457 + # commit=92f9b76101d4214c07291f6d9befa647fbc0dd86 + # run_id=29372816457 + ``` + +- Result: EXPECTED RED. All four POSIX cells passed contracts, two clean native builds, + archive/tree inspection, bundled runtime smoke, byte-for-byte comparison, and upload. Windows x64 + and arm64 each passed 18 contract files before the live toolchain test rejected + `C:\Program Files\Git\usr\bin\link.exe` as non-MSVC. Both stopped before input download, build, + smoke, comparison, or upload, so no Windows artifact exists. +- Downloaded-artifact audit: + + | Tuple | Artifact ID | Archive SHA-256 | Content ID prefix | Files | + | ----------------- | ------------ | ------------------------------------------------------------------ | ----------------- | ----- | + | linux-x64-glibc | `8326768093` | `c312a404515db43b7219ec7c0f5ff8c33a1424a32b3cf42754820a1599afcec0` | `960546cd…` | 34 | + | linux-arm64-glibc | `8326787062` | `5e31f1377be855fdddba08dab19af92360236fc9c4a08a3c6320162aa4dca4a0` | `aa3aa8ae…` | 34 | + | darwin-x64 | `8326884270` | `a3cacc1aaf16c659218987972a39ff367584da456d167906b13e293874297777` | `585ea603…` | 35 | + | darwin-arm64 | `8326773209` | `612e7328700bef7886df5caaef92c22cbbc38ad872ca40b17f0758b28e75bd92` | `40ff5d20…` | 35 | + + All archive/subject hashes, archive-scoped SPDX namespaces, one-owner-per-file counts, eight + dependency relationships, prohibited-content assertions, exact commit/run identities, runner + labels/images/architectures, and bounded tool version/hash records passed. + +- Oracle proved: appending Git's signature-tool directory through `GITHUB_PATH` shadows `link.exe` + identically on x64 and arm64; the first PATH match is not the configured compiler toolchain; both + jobs fail closed before consuming release inputs; four independent POSIX controls remain complete. +- Does not prove: that `where.exe` exposes exactly one later canonical MSVC candidate, a Windows + artifact/metadata record, oldest baselines, native trust/signing, SSH, publication, or an enabled + tuple. +- Checklist items satisfied: no new completion box; the all-six SBOM/provenance/toolchain item + remains in progress. +- Follow-up: select exactly one canonical MSVC linker from all resolved candidates, retain its exact + SHA-256, reject zero/ambiguous matches, and rerun all six native cells. + +### E-M3-WINDOWS-LINKER-SELECTION-LOCAL-001 — Unique canonical MSVC candidate + +- Date: 2026-07-14 +- Commit SHA / PR: exact implementation commit + `5f0c1417d5e28a0c01f1914c41d129814237e28e`; stacked draft PR + [#8741](https://github.com/stablyai/orca/pull/8741) +- Runner: local macOS 26.2 build 25C56, Darwin 25.2.0 arm64 on Apple Silicon; Node v26.0.0 and + pnpm 10.24.0 for pure path/provenance tests +- Remote and transport: none; artifact-only local contracts +- Exact evidence commands: + + ```sh + pnpm exec vitest run --config config/vitest.config.ts \ + config/scripts/ssh-relay-*.test.mjs \ + src/main/ssh/ssh-relay-artifact-selector.test.ts + pnpm run typecheck + pnpm run lint + pnpm run check:max-lines-ratchet + pnpm exec oxfmt --check \ + config/scripts/ssh-relay-runtime-toolchain.mjs \ + config/scripts/ssh-relay-runtime-toolchain.test.mjs + git diff --check + ``` + +- Result: PASS. Twenty focused test files passed 100 tests. Typecheck passed all three TypeScript + projects. Full lint passed with only existing unrelated warnings; the independent max-lines, + focused formatting, and diff checks passed. +- Oracle proved: a non-MSVC Git `link.exe` may precede either canonical x64 or arm64 MSVC path; + selection accepts exactly one case-insensitively deduplicated strict MSVC match, rejects zero or + multiple matches, and bounds rejection diagnostics. The strict absolute `MSVC//bin/...` + grammar and exact SHA-256 of the selected linker remain required. The corrected test also proves + the long-path fixtures actually interpolate and exercise the 512-byte bounds. +- Does not prove: the exact native candidate list, a Windows build/smoke/equality/upload, regenerated + Windows content IDs, oldest Windows execution, native trust, SSH, publication, or an enabled tuple. +- Checklist items satisfied: local correction only; the all-six compiler/toolchain item remains + unchecked. +- Follow-up: push this exact commit and ledger head, then require all six native jobs and direct + inspection of every uploaded artifact before closing any metadata/provenance claim. + ## Accepted Gaps No product gap is accepted merely because it appears in this list. Each entry requires explicit @@ -6888,14 +6982,13 @@ The project is not complete until every applicable item below is checked with ev ## Next Required Action -Push bounded linker-path diagnostic commit `d1eb45d61` plus this evidence-ledger head and rerun all -six target-native cells. Inspect the bounded x64 and arm64 path tails, then make only the parser -correction supported by those native paths. Require the corrected exact head to retain the exact -linker SHA-256 and pass exact SPDX ownership, archive-scoped document identity, commit-pinned builder -identity, resolved runner identity, complete bounded tool records, clean-build metadata equality, -smoke, upload, regenerated Windows content identities, and direct artifact inspection before -checking the remaining Milestone 3 metadata/toolchain claims. Then proceed to oldest-baseline and -native-trust proof. +Push unique canonical MSVC linker-selection commit `5f0c1417d` plus this evidence-ledger head and +rerun all six target-native cells. Require exactly one strict MSVC candidate despite the +Git-for-Windows PATH collision, retain the exact selected-linker SHA-256, and pass exact SPDX +ownership, archive-scoped document identity, commit-pinned builder identity, resolved runner +identity, complete bounded tool records, clean-build metadata equality, smoke, upload, regenerated +Windows content identities, and direct artifact inspection before checking the remaining Milestone +3 metadata/toolchain claims. Then proceed to oldest-baseline and native-trust proof. 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