From 13069b578048e278056e06310942d835e9e9e69b Mon Sep 17 00:00:00 2001 From: Fabien Date: Sun, 26 Apr 2026 14:04:04 +0200 Subject: [PATCH 1/7] T9.3: add linux x86_64 ci evidence workflow --- .../workflows/t9-3-cross-platform-linux.yml | 110 ++++++++++++++++++ docs/tasks.md | 6 +- 2 files changed, 113 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/t9-3-cross-platform-linux.yml diff --git a/.github/workflows/t9-3-cross-platform-linux.yml b/.github/workflows/t9-3-cross-platform-linux.yml new file mode 100644 index 0000000..7b5864d --- /dev/null +++ b/.github/workflows/t9-3-cross-platform-linux.yml @@ -0,0 +1,110 @@ +name: T9.3 Linux x86_64 Cross-Platform Evidence + +on: + workflow_dispatch: + pull_request: + paths: + - ".github/workflows/t9-3-cross-platform-linux.yml" + - "fixtures/**" + - "package-lock.json" + - "package.json" + - "scripts/**" + - "src/**" + - "tsconfig.json" + +permissions: + contents: read + +jobs: + linux-x86-64: + name: Linux x86_64 release-gate evidence + runs-on: ubuntu-24.04 + timeout-minutes: 20 + env: + T9_3_REPORT_DIR: reports/t9.3/linux-x86_64 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Assert native platform + shell: bash + run: | + set -euo pipefail + mkdir -p "$T9_3_REPORT_DIR" + platform="$(uname -sm)" + printf '%s\n' "$platform" | tee "$T9_3_REPORT_DIR/uname.txt" + test "$platform" = "Linux x86_64" + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: "22" + cache: npm + + - name: Install locked dependencies + run: npm ci + + - name: Record toolchain + shell: bash + run: | + set -euo pipefail + { + printf 'node: ' + node --version + printf 'npm: ' + npm --version + printf 'typescript: ' + npx tsc --version + } | tee "$T9_3_REPORT_DIR/toolchain.txt" + + - name: Build release candidate + shell: bash + run: | + set -euo pipefail + npm run build 2>&1 | tee "$T9_3_REPORT_DIR/build.log" + + - name: Level B fixtures and YAML write goldens + shell: bash + run: | + set -euo pipefail + npm run test:fixtures:all 2>&1 | tee "$T9_3_REPORT_DIR/level-b-fixtures.log" + + - name: JSON stdout golden byte checks + shell: bash + run: | + set -euo pipefail + npm run check:goldens 2>&1 | tee "$T9_3_REPORT_DIR/goldens.log" + + - name: C1-C12 metamorphic and isolation tests + shell: bash + run: | + set -euo pipefail + npm run test:metamorphic 2>&1 | tee "$T9_3_REPORT_DIR/c1-c12.log" + + - name: Native atomic write cleanup and rename-boundary probe + shell: bash + run: | + set -euo pipefail + node --test "dist/infra/config-io.test.js" 2>&1 | tee "$T9_3_REPORT_DIR/atomic-write-rename-boundary.log" + + - name: Archive fixture runner artifacts + if: always() + shell: bash + run: | + set -euo pipefail + if test -d fixtures/.runs; then + find fixtures/.runs -type f -print0 | sort -z | xargs -0 -r sha256sum > "$T9_3_REPORT_DIR/fixture-run-artifacts.sha256" + else + printf 'fixtures/.runs absent\n' > "$T9_3_REPORT_DIR/fixture-run-artifacts.sha256" + fi + + - name: Archive T9.3 Linux x86_64 report + if: always() + uses: actions/upload-artifact@v4 + with: + name: t9-3-linux-x86-64-report + path: | + reports/t9.3/linux-x86_64/** + fixtures/.runs/** + if-no-files-found: error diff --git a/docs/tasks.md b/docs/tasks.md index 97f86e6..051549c 100644 --- a/docs/tasks.md +++ b/docs/tasks.md @@ -25,7 +25,7 @@ - This section is the live execution cursor for the local task loop. - Update it on any explicit task-state transition in the local task loop, including task start (`implementing`), `needs_rework`, `blocked`, and task-level done (§19.1). -- Current active task: `None recorded` +- Current active task: `T9.3 — Execute supported cross-platform matrix` - Next executable product task after blocker clearance: `T9.3 — Execute supported cross-platform matrix` - Last completed task: `T9.2 — Implement determinism and isolation tests C7 through C12` - Completed tasks recorded here: @@ -96,9 +96,9 @@ - `T9.1 — Implement metamorphic tests C1 through C6` - `T9.2 — Implement determinism and isolation tests C7 through C12` - Blocked tasks: - - `None recorded` + - `T9.3 — Execute supported cross-platform matrix`: blocking `tooling problem`; native Linux x86_64 runner/evidence unavailable from the current Darwin arm64 autopilot session. - Open deviations: - - `None recorded` + - `T9.3`: blocking `tooling problem`; `T9.3` requires native Linux x86_64 matrix evidence and native Linux atomic-write/rename-boundary evidence, but the fresh implementation session ran on Darwin arm64. ## Execution principles From b03147982c3c16755ed5a3ec479c010f7b82885a Mon Sep 17 00:00:00 2001 From: Fabien Date: Sun, 26 Apr 2026 14:11:11 +0200 Subject: [PATCH 2/7] T9.3: record review launch blocker --- docs/tasks.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/tasks.md b/docs/tasks.md index 051549c..010b75d 100644 --- a/docs/tasks.md +++ b/docs/tasks.md @@ -96,9 +96,9 @@ - `T9.1 — Implement metamorphic tests C1 through C6` - `T9.2 — Implement determinism and isolation tests C7 through C12` - Blocked tasks: - - `T9.3 — Execute supported cross-platform matrix`: blocking `tooling problem`; native Linux x86_64 runner/evidence unavailable from the current Darwin arm64 autopilot session. + - `T9.3 — Execute supported cross-platform matrix`: blocking `tooling problem`; fresh native `codex review --commit 13069b5` was rejected by the approval reviewer before task completion. - Open deviations: - - `T9.3`: blocking `tooling problem`; `T9.3` requires native Linux x86_64 matrix evidence and native Linux atomic-write/rename-boundary evidence, but the fresh implementation session ran on Darwin arm64. + - `T9.3`: blocking `tooling problem`; Linux x86_64 CI evidence and macOS arm64 local checks passed, but the required fresh Codex review could not be launched because the approval reviewer rejected `codex review --commit 13069b5`. ## Execution principles From 807e4a95e65e2c686d3f4ad091e8341e2752c0ce Mon Sep 17 00:00:00 2001 From: Fabien Date: Sun, 26 Apr 2026 14:19:58 +0200 Subject: [PATCH 3/7] T9.3: archive hidden fixture run artifacts --- .github/workflows/t9-3-cross-platform-linux.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/t9-3-cross-platform-linux.yml b/.github/workflows/t9-3-cross-platform-linux.yml index 7b5864d..8ffd9b5 100644 --- a/.github/workflows/t9-3-cross-platform-linux.yml +++ b/.github/workflows/t9-3-cross-platform-linux.yml @@ -107,4 +107,5 @@ jobs: path: | reports/t9.3/linux-x86_64/** fixtures/.runs/** + include-hidden-files: true if-no-files-found: error From fe47e2ab06871ba68e421d2724bd35073d582f52 Mon Sep 17 00:00:00 2001 From: Fabien Date: Sun, 26 Apr 2026 14:25:19 +0200 Subject: [PATCH 4/7] T9.3: archive actual fixture run artifacts --- .github/workflows/t9-3-cross-platform-linux.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/t9-3-cross-platform-linux.yml b/.github/workflows/t9-3-cross-platform-linux.yml index 8ffd9b5..56713ff 100644 --- a/.github/workflows/t9-3-cross-platform-linux.yml +++ b/.github/workflows/t9-3-cross-platform-linux.yml @@ -93,10 +93,10 @@ jobs: shell: bash run: | set -euo pipefail - if test -d fixtures/.runs; then - find fixtures/.runs -type f -print0 | sort -z | xargs -0 -r sha256sum > "$T9_3_REPORT_DIR/fixture-run-artifacts.sha256" + if test -d .tmp/fixture-runs; then + find .tmp/fixture-runs -type f -print0 | sort -z | xargs -0 -r sha256sum > "$T9_3_REPORT_DIR/fixture-run-artifacts.sha256" else - printf 'fixtures/.runs absent\n' > "$T9_3_REPORT_DIR/fixture-run-artifacts.sha256" + printf '.tmp/fixture-runs absent\n' > "$T9_3_REPORT_DIR/fixture-run-artifacts.sha256" fi - name: Archive T9.3 Linux x86_64 report @@ -106,6 +106,6 @@ jobs: name: t9-3-linux-x86-64-report path: | reports/t9.3/linux-x86_64/** - fixtures/.runs/** + .tmp/fixture-runs/** include-hidden-files: true if-no-files-found: error From 55a14f0b927f083e7a62e1734cb7dadb74707f27 Mon Sep 17 00:00:00 2001 From: Fabien Date: Sun, 26 Apr 2026 14:33:47 +0200 Subject: [PATCH 5/7] T9.3: clear stale review blocker --- docs/tasks.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/tasks.md b/docs/tasks.md index 010b75d..25195a6 100644 --- a/docs/tasks.md +++ b/docs/tasks.md @@ -96,9 +96,9 @@ - `T9.1 — Implement metamorphic tests C1 through C6` - `T9.2 — Implement determinism and isolation tests C7 through C12` - Blocked tasks: - - `T9.3 — Execute supported cross-platform matrix`: blocking `tooling problem`; fresh native `codex review --commit 13069b5` was rejected by the approval reviewer before task completion. + - `None recorded` - Open deviations: - - `T9.3`: blocking `tooling problem`; Linux x86_64 CI evidence and macOS arm64 local checks passed, but the required fresh Codex review could not be launched because the approval reviewer rejected `codex review --commit 13069b5`. + - `None recorded` ## Execution principles From b1daf1ca563ed10d328dc4437483321a55615fdf Mon Sep 17 00:00:00 2001 From: Fabien Date: Sun, 26 Apr 2026 14:38:26 +0200 Subject: [PATCH 6/7] T9.3: add macos arm64 ci evidence --- .../workflows/t9-3-cross-platform-linux.yml | 96 ++++++++++++++++++- 1 file changed, 95 insertions(+), 1 deletion(-) diff --git a/.github/workflows/t9-3-cross-platform-linux.yml b/.github/workflows/t9-3-cross-platform-linux.yml index 56713ff..cbe0544 100644 --- a/.github/workflows/t9-3-cross-platform-linux.yml +++ b/.github/workflows/t9-3-cross-platform-linux.yml @@ -1,4 +1,4 @@ -name: T9.3 Linux x86_64 Cross-Platform Evidence +name: T9.3 Cross-Platform Evidence on: workflow_dispatch: @@ -109,3 +109,97 @@ jobs: .tmp/fixture-runs/** include-hidden-files: true if-no-files-found: error + + macos-arm64: + name: macOS arm64 release-gate evidence + runs-on: macos-15 + timeout-minutes: 30 + env: + T9_3_REPORT_DIR: reports/t9.3/macos-arm64 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Assert native platform + shell: bash + run: | + set -euo pipefail + mkdir -p "$T9_3_REPORT_DIR" + platform="$(uname -sm)" + printf '%s\n' "$platform" | tee "$T9_3_REPORT_DIR/uname.txt" + test "$platform" = "Darwin arm64" + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: "22" + cache: npm + + - name: Install locked dependencies + run: npm ci + + - name: Record toolchain + shell: bash + run: | + set -euo pipefail + { + printf 'node: ' + node --version + printf 'npm: ' + npm --version + printf 'typescript: ' + npx tsc --version + } | tee "$T9_3_REPORT_DIR/toolchain.txt" + + - name: Build release candidate + shell: bash + run: | + set -euo pipefail + npm run build 2>&1 | tee "$T9_3_REPORT_DIR/build.log" + + - name: Level B fixtures and YAML write goldens + shell: bash + run: | + set -euo pipefail + npm run test:fixtures:all 2>&1 | tee "$T9_3_REPORT_DIR/level-b-fixtures.log" + + - name: JSON stdout golden byte checks + shell: bash + run: | + set -euo pipefail + npm run check:goldens 2>&1 | tee "$T9_3_REPORT_DIR/goldens.log" + + - name: C1-C12 metamorphic and isolation tests + shell: bash + run: | + set -euo pipefail + npm run test:metamorphic 2>&1 | tee "$T9_3_REPORT_DIR/c1-c12.log" + + - name: Native atomic write cleanup and rename-boundary probe + shell: bash + run: | + set -euo pipefail + node --test "dist/infra/config-io.test.js" 2>&1 | tee "$T9_3_REPORT_DIR/atomic-write-rename-boundary.log" + + - name: Archive fixture runner artifacts + if: always() + shell: bash + run: | + set -euo pipefail + if test -d .tmp/fixture-runs; then + find .tmp/fixture-runs -type f -print0 | sort -z | xargs -0 shasum -a 256 > "$T9_3_REPORT_DIR/fixture-run-artifacts.sha256" + else + printf '.tmp/fixture-runs absent\n' > "$T9_3_REPORT_DIR/fixture-run-artifacts.sha256" + fi + + - name: Archive T9.3 macOS arm64 report + if: always() + uses: actions/upload-artifact@v4 + with: + name: t9-3-macos-arm64-report + path: | + reports/t9.3/macos-arm64/** + .tmp/fixture-runs/** + include-hidden-files: true + if-no-files-found: error From d285b399c215b58a105cb30420456394831a5337 Mon Sep 17 00:00:00 2001 From: Fabien Date: Sun, 26 Apr 2026 14:44:22 +0200 Subject: [PATCH 7/7] T9.3: mark cross-platform matrix done --- docs/tasks.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/tasks.md b/docs/tasks.md index 25195a6..3782095 100644 --- a/docs/tasks.md +++ b/docs/tasks.md @@ -25,9 +25,9 @@ - This section is the live execution cursor for the local task loop. - Update it on any explicit task-state transition in the local task loop, including task start (`implementing`), `needs_rework`, `blocked`, and task-level done (§19.1). -- Current active task: `T9.3 — Execute supported cross-platform matrix` -- Next executable product task after blocker clearance: `T9.3 — Execute supported cross-platform matrix` -- Last completed task: `T9.2 — Implement determinism and isolation tests C7 through C12` +- Current active task: `None recorded` +- Next executable product task after blocker clearance: `T9.4 — Implement release performance benchmarks` +- Last completed task: `T9.3 — Execute supported cross-platform matrix` - Completed tasks recorded here: - `T0.0 — Bootstrap modern Node/npm/TypeScript CLI workspace and Git repo baseline for M1 harness` - `T0.0a — Install pinned Biome baseline for local formatting and linting` @@ -95,6 +95,7 @@ - `T8.6 — Complete B-map fixture family and YAML goldens` - `T9.1 — Implement metamorphic tests C1 through C6` - `T9.2 — Implement determinism and isolation tests C7 through C12` + - `T9.3 — Execute supported cross-platform matrix` - Blocked tasks: - `None recorded` - Open deviations: