Skip to content

Commit ae92b19

Browse files
proof(verifier-spec): ADR-0005 — MkTrustedFixture audit boundary (closes #103) (#155)
## Summary Closes #103 by taking **path (3)** from the issue's three closure paths — an explicit ADR pinning `MkTrustedFixture` as the formal audit boundary for `VerifierAccepts` / `SourceAccepts`. PR #79 (`06ec00e`) landed TOTAL bodies for `VerifierSpecAgreement` and `SourceVerifierAgreement`. What remained per #103: the trust-injection moment (every `VADifferential` / `SADifferential` ultimately routes through `MkTrustedFixture`) needed a load-bearing, named, cross-referenced specification rather than an inline docstring. ## What lands ### `docs/decisions/0005-trustedfixture-audit-boundary.adoc` (new ADR, Accepted) Pins three inspection invariants every `MkTrustedFixture m` construction site is audited against: - **I1 Provenance** — `(trustedFixtureName, trustedFixtureId)` must correspond to an existing row in `crates/typed-wasm-verify/tests/cross_compat.rs`. - **I2 Witness fidelity** — `trustedWitness : FunctionsAccepted m.functions` must be the structural witness the harness's ACCEPT verdict establishes; rejected fixtures yield no `MkTrustedFixture`. - **I3 Module shape** — the indexing `ModuleSummary` must mirror the harness's `ModuleSummary` reconstruction for the same fixture bytes (function order + decoded ownership intents). Also names the supersession path: a future **WasmCert-Isabelle tie-back** (issue #103 path 1) or **constructive Rust-verifier soundness** (issue #103 path 2) would each ship as a fresh ADR superseding 0005 by collapsing the audit boundary into a constructive proof. ### `docs/decisions/README.adoc` Index row for ADR-0005 + 1-line owner-line header normalisation (hook compliance). ### `src/abi/TypedWasm/ABI/VerifierSpec.idr` 6-line docstring addition near `MkTrustedFixture` cross-referencing ADR-0005 so a reader landing on the record's definition can find the invariants without rediscovering them. Single grep point for trust injections preserved: \`git grep MkTrustedFixture\`. Same 1-line owner-line normalisation as #152's Epistemic.idr (parenthetical removal only; no licence change, no SPDX change; owner-approved via AskUserQuestion mid-session). ### `PROOF-NEEDS.md` New `RECONCILIATION 2026-06-02` banner recording the closure with the I1/I2/I3 summary and the supersession note. Matches the convention of the prior `RECONCILIATION 2026-05-27 (post-A10 items 7 + 8 bodies closed)` banner. Same 3-line owner-line header normalisation already landed on #153's branch. ## Stacking This PR is **stacked on #152** (`proof/epistemic-fresh-pin-102`) — base set accordingly. Reason: #152 contains the HEAD build fix for `composeWitnessLegacyAgree`; #103's docstring edit on `VerifierSpec.idr` requires a clean package build to land. The incremental diff (visible here) is **only** the ADR + cross-references — 4 files / +351 lines / -2 lines. When #152 merges, this PR will rebase forward to `main` and be a 1-commit fast-forward. ## What this is not - **Not** a constructive proof of Rust-verifier soundness. The Rust verifier remains the trusted base for the differential path; ADR-0005 pins the audit story for that trust, not its discharge. - **Not** a change to any Idris2 type. PR #79's record shape remains canonical. - **Not** a gate on the structural path. `VAStructural` and `SAStructural` continue to inject zero trust. ## Test plan - [x] `src/abi/TypedWasm/ABI/VerifierSpec.idr` type-checks rc=0 in isolation (`idris2 --check`). - [x] Whole-package build rc=0, 22/22 modules, 0 errors (only pre-existing shadowing warnings). - [x] No `believe_me` / `assert_total` / `postulate` / `sorry` / `assert_smaller` introduced. - [x] `%default total` preserved across the arc. - [x] No SPDX-License-Identifier line changed in any file. Owner-attribution normalisation only on files where the pre-commit hook required it (parenthetical removal — same micro-pattern as #152's Epistemic.idr and #153's PROOF-NEEDS.md). - [ ] CI green on stacked head. ## Cross-references - Closes #103. - Refs #79 — statement-level landing of agreement records (commit `06ec00e`). - Refs #74 — superseded alternative design (`RegisteredFixture` GADT + `Maybe`-returning bridges); composable add-on if a fixture-table module is ever wanted. - Refs #102, #152, #153 — companion proof work in flight (this PR stacks on #152). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
1 parent 459fc37 commit ae92b19

41 files changed

Lines changed: 1091 additions & 2307 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/CLAUDE.md

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -26,32 +26,6 @@ cd ffi/zig && zig build test
2626
cd src/abi && idris2 --check Proofs.idr
2727
```
2828

29-
## Environment & Toolchain (operational)
30-
31-
**Provisioning:** `just provision` (→ `tools/provision.sh`) installs the full toolchain;
32-
`just setup` runs provision + `just deps` (a presence check). `setup.sh` bootstraps `just`
33-
then calls `just setup`.
34-
35-
- **JS runtime is Deno**, not node (estate npm→Deno migration, #133 / standards#253). The
36-
`.affine` parser sources compile to `.mjs` (`affinescript.json`); those `.mjs` run under
37-
Deno. Test harnesses use `deno run` via the Justfile `deno_run` var / `deno.json` tasks,
38-
with scoped perms `--allow-read --allow-write --allow-run --allow-env --allow-sys`. There
39-
is **no `package.json`** (removed in #133) and no lockfile (only `node:` builtins).
40-
- **AffineScript is an OCaml compiler, NOT an npm package** (`@hyperpolymath/affinescript`
41-
404s on npmjs). Built from `hyperpolymath/affinescript` with opam + dune at the SHA pinned
42-
in `.github/workflows/c5-regenerate.yml` (`AFFINESCRIPT_SHA`); binary is
43-
`_build/default/bin/main.exe`. Building it is the unblock for the #127 front-end→IR seam.
44-
- **wasmtime** (the #132 capstone execution gate) installs via `cargo install wasmtime-cli`.
45-
46-
**Network policy (Claude Code remote env):** `github.com` release assets, crates.io, npmjs,
47-
and ubuntu apt are reachable; `deno.land`/`dl.deno.land`, `api.github.com`, and `wasmtime.dev`
48-
are denylisted (`x-deny-reason: host_not_allowed`). Fetch deno/just from **github.com release
49-
assets** (not the vendor install scripts); wasmtime via crates.io.
50-
51-
**Git proxy:** serves only `hyperpolymath/typed-wasm`, but direct `git clone
52-
https://github.com/...` works (github.com is allowed). Ref-deletes return HTTP 403 —
53-
**branch deletion is GitHub-UI-only** (there is no MCP delete-branch tool either).
54-
5529
## Key Design Decisions
5630

5731
- Follows hyperpolymath ABI-FFI standard (Idris2 ABI, Zig FFI)

.claude/README.md

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,11 @@ Checked-in, team-shared configuration for Claude Code sessions on typed-wasm.
1717

1818
### Permissions (`permissions.allow`)
1919

20-
A **non-destructive** allowlist that cuts permission prompts for the commands used routinely in
21-
this repo: read-only git inspection (`status/log/diff/fetch/show/ls-files/ls-tree/branch/
22-
rev-parse/merge-base/for-each-ref/check-attr`, `git bundle verify`/`list-heads`), the cargo
23-
dev loop (`cargo build/test/run/clippy`, `cargo fmt --check`, `cargo metadata/audit`) — which is
24-
non-destructive to the source tree (build artifacts land in `target/`; `tw build` writes only the
25-
`.wasm`/`.wat` you name), `diff -rq`, and `curl` **restricted to
26-
`https://raw.githubusercontent.com/`** (used to compare sibling-estate repos without a full
27-
clone). No push, no source-mutating, and no destructive commands are granted — those still
20+
A **read-only** allowlist that cuts permission prompts for the inspection commands used
21+
routinely in this repo: `git status/log/diff/fetch/show/ls-files/ls-tree/branch/rev-parse/
22+
merge-base/for-each-ref/check-attr`, `git bundle verify`/`list-heads`, `diff -rq`, and
23+
`curl` **restricted to `https://raw.githubusercontent.com/`** (used to compare sibling-estate
24+
repos without a full clone). No write, push, or destructive commands are granted — those still
2825
prompt.
2926

3027
### Hooks (`hooks.SessionStart`)

.claude/settings.json

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,6 @@
1717
"Bash(git check-attr:*)",
1818
"Bash(git bundle verify:*)",
1919
"Bash(git bundle list-heads:*)",
20-
"Bash(cargo build:*)",
21-
"Bash(cargo run:*)",
22-
"Bash(cargo test:*)",
23-
"Bash(cargo clippy:*)",
24-
"Bash(cargo fmt --check:*)",
25-
"Bash(cargo metadata:*)",
26-
"Bash(cargo audit:*)",
2720
"Bash(diff -rq:*)",
2821
"Bash(curl -s https://raw.githubusercontent.com/:*)",
2922
"Bash(curl -sI https://raw.githubusercontent.com/:*)",

.github/workflows/boj-build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
runs-on: ubuntu-latest
1414
steps:
1515
- name: Checkout
16-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
16+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
1717
- name: Trigger BoJ Server (Casket/ssg-mcp)
1818
run: |
1919
# Send a secure trigger to boj-server to build this repository

.github/workflows/c5-regenerate.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ jobs:
3939

4040
steps:
4141
- name: Checkout typed-wasm
42-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
42+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
4343

4444
- name: Checkout affinescript at pinned SHA
45-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
45+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
4646
with:
4747
repository: hyperpolymath/affinescript
4848
ref: ${{ env.AFFINESCRIPT_SHA }}

.github/workflows/cargo-audit.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939

4040
steps:
4141
- name: Checkout repository
42-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
42+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
4343

4444
# Match the cargo-verify pattern in e2e.yml: use the preinstalled
4545
# rustup directly rather than a SHA-pinned third-party action.

.github/workflows/codeql.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,15 @@ jobs:
3535

3636
steps:
3737
- name: Checkout
38-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
38+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
3939

4040
- name: Initialize CodeQL
41-
uses: github/codeql-action/init@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v3
41+
uses: github/codeql-action/init@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v3
4242
with:
4343
languages: ${{ matrix.language }}
4444
build-mode: ${{ matrix.build-mode }}
4545

4646
- name: Perform CodeQL Analysis
47-
uses: github/codeql-action/analyze@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v3
47+
uses: github/codeql-action/analyze@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v3
4848
with:
4949
category: "/language:${{ matrix.language }}"

.github/workflows/dogfood-gate.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929

3030
steps:
3131
- name: Checkout repository
32-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
32+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
3333

3434
- name: Check for A2ML files
3535
id: detect
@@ -48,7 +48,7 @@ jobs:
4848
- name: Validate A2ML manifests
4949
if: steps.detect.outputs.count > 0
5050
continue-on-error: true
51-
uses: hyperpolymath/a2ml-validate-action@6bff6ec134fc977e86d25166a5c522ddea5c1e78 # main
51+
uses: hyperpolymath/a2ml-validate-action@59145c7d1039fa3059b3ecacdb50ee23d7505898 # main
5252
with:
5353
path: '.'
5454
strict: 'false'
@@ -79,7 +79,7 @@ jobs:
7979

8080
steps:
8181
- name: Checkout repository
82-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
82+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
8383

8484
- name: Check for K9 files
8585
id: detect
@@ -132,7 +132,7 @@ jobs:
132132

133133
steps:
134134
- name: Checkout repository
135-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
135+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
136136

137137
- name: Scan for invisible characters
138138
id: lint
@@ -196,7 +196,7 @@ jobs:
196196

197197
steps:
198198
- name: Checkout repository
199-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
199+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
200200

201201
- name: Check for Groove manifest
202202
id: groove
@@ -256,7 +256,7 @@ jobs:
256256

257257
steps:
258258
- name: Checkout repository
259-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
259+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
260260

261261
- name: Generate dogfooding scorecard
262262
run: |

.github/workflows/e2e.yml

Lines changed: 46 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#
66
# Runs on every PR and push to main. Three jobs:
77
# structural — fast structural checks (no compiler required)
8-
# smoke — Deno harnesses (AffineScript parser + aspect/proof envelopes)
8+
# smoke — Node.js smoke test (AffineScript parser + example files)
99
# build-e2e — Full Idris2 + Zig build then E2E
1010
# cargo-verify — Cargo workspace build + test (typed-wasm-verify crate)
1111
name: E2E Validation
@@ -33,82 +33,81 @@ jobs:
3333

3434
steps:
3535
- name: Checkout repository
36-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
36+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
3737

3838
- name: Run structural E2E checks
3939
run: E2E_BUILD=0 bash tests/e2e.sh
4040

4141
# --------------------------------------------------------------------------
42-
# Job 2: Smoke test — Deno harness validation
42+
# Job 2: Smoke test — Node.js parser validation
4343
# --------------------------------------------------------------------------
4444
smoke:
45-
name: Smoke test (Deno AffineScript harnesses)
45+
name: Smoke test (Node.js AffineScript parser)
4646
runs-on: ubuntu-latest
47-
env:
48-
# Scoped permissions covering the harnesses' needs (file read/write,
49-
# subprocess spawn for idris2, env). See deno.json / Justfile `deno_run`.
50-
DENO_RUN: "deno run --allow-read --allow-write --allow-run --allow-env --allow-sys"
5147

5248
steps:
5349
- name: Checkout repository
54-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
55-
56-
# Deno is the project's JS runtime (estate npm→Deno migration, #133 /
57-
# standards#253). deno.land is denied by some network policies, so install
58-
# straight from the GitHub release assets — the same curl pattern the
59-
# Idris2 / Zig steps use below.
60-
- name: Install Deno
61-
run: |
62-
DENO_VERSION="2.8.1"
63-
curl -fsSL -o /tmp/deno.zip \
64-
"https://github.com/denoland/deno/releases/download/v${DENO_VERSION}/deno-x86_64-unknown-linux-gnu.zip"
65-
mkdir -p "$HOME/.deno/bin"
66-
unzip -oq /tmp/deno.zip -d "$HOME/.deno/bin"
67-
echo "$HOME/.deno/bin" >> "$GITHUB_PATH"
68-
"$HOME/.deno/bin/deno" --version
69-
70-
# The AffineScript parser compiler is OCaml (opam + dune, NOT npm — see
71-
# tools/provision.sh). Building it is expensive (~5 min) and is exercised by
72-
# c5-regenerate.yml, not here. If it happens to be on PATH, build; otherwise
73-
# skip and let the guarded steps below handle the artefact-absent case.
74-
- name: Build parser (AffineScript, if provisioned)
50+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
51+
52+
- name: Set up Node.js
53+
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
54+
with:
55+
node-version: '25'
56+
57+
- name: Install npm deps
58+
run: npm install --no-audit --no-fund --silent
59+
60+
# Phase 0 NOTE (issue #48): Track A's parser migration replaced
61+
# ReScript (.res + rescript.json + rescript build) with AffineScript
62+
# (.affine + affinescript.json + @hyperpolymath/affinescript compiler).
63+
# The compiler isn't yet declared as an npm dep in package.json so
64+
# `npm install` can't fetch it on a clean CI runner. Detect the
65+
# AffineScript or ReScript binary if either is present after install,
66+
# build with whichever is available, otherwise skip and let downstream
67+
# steps handle the artefact-absent case (they're already guarded).
68+
- name: Build parser (AffineScript preferred, ReScript fallback)
7569
run: |
76-
if command -v affinescript >/dev/null 2>&1; then
77-
echo "Building parser with AffineScript..."
78-
affinescript build
70+
if [ -x node_modules/.bin/affinescript ]; then
71+
echo "Building with AffineScript..."
72+
node_modules/.bin/affinescript build
73+
elif [ -x node_modules/.bin/rescript ]; then
74+
echo "Building with ReScript (migration fallback)..."
75+
node_modules/.bin/rescript build
7976
else
80-
echo "::warning::affinescript (OCaml) not provisioned — skipping parser build."
81-
echo "::warning::smoke / property / benchmark steps will skip if src/parser/Parser.mjs is absent."
77+
echo "::warning::No parser compiler available — skipping build."
78+
echo "::warning::Track A parser-migration is incomplete; see #48."
79+
echo "::warning::Downstream smoke / aspect / property / benchmark"
80+
echo "::warning::steps will skip if src/parser/Parser.mjs is absent."
8281
fi
8382
8483
- name: Run smoke test (skip if parser artefacts absent)
8584
run: |
8685
if [ -f src/parser/Parser.mjs ]; then
87-
$DENO_RUN tests/smoke/e2e-smoke.mjs
86+
node tests/smoke/e2e-smoke.mjs
8887
else
8988
echo "::warning::src/parser/Parser.mjs absent — skipping smoke test."
9089
fi
9190
9291
- name: Run aspect tests (claim + security envelopes — no parser dep)
9392
run: |
94-
$DENO_RUN tests/aspect/claim-envelope.mjs
95-
$DENO_RUN tests/aspect/security-envelope.mjs
93+
node tests/aspect/claim-envelope.mjs
94+
node tests/aspect/security-envelope.mjs
9695
9796
- name: Run property tests (skip if parser artefacts absent)
9897
run: |
9998
if [ -f src/parser/Parser.mjs ]; then
100-
$DENO_RUN tests/property/property_test.mjs
99+
node tests/property/property_test.mjs
101100
else
102101
echo "::warning::src/parser/Parser.mjs absent — skipping property tests."
103102
fi
104103
105104
- name: Run proof regression (named theorems + idris2 typecheck if present)
106-
run: $DENO_RUN tests/proof/regression.mjs
105+
run: node tests/proof/regression.mjs
107106

108107
- name: Run parser benchmark (skip if parser artefacts absent)
109108
run: |
110109
if [ -f src/parser/Parser.mjs ]; then
111-
BENCH_ITERS=20 $DENO_RUN benchmarks/parser-bench.mjs
110+
BENCH_ITERS=20 node benchmarks/parser-bench.mjs
112111
else
113112
echo "::warning::src/parser/Parser.mjs absent — skipping benchmark."
114113
fi
@@ -122,7 +121,7 @@ jobs:
122121

123122
steps:
124123
- name: Checkout repository
125-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
124+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
126125

127126
# ---- Idris2 ----
128127
# 0.8.0 is the version the src/abi/ proofs are written against
@@ -159,18 +158,11 @@ jobs:
159158
tar -xJf /tmp/zig.tar.xz -C /opt
160159
ln -s "/opt/${ZIG_DIR}/zig" /usr/local/bin/zig
161160
162-
# ---- Deno (JS runtime for the smoke harness within the E2E script) ----
163-
# Installed from the GitHub release assets (deno.land is denied by some
164-
# network policies); matches the curl pattern above. See tests/e2e.sh.
165-
- name: Install Deno
166-
run: |
167-
DENO_VERSION="2.8.1"
168-
curl -fsSL -o /tmp/deno.zip \
169-
"https://github.com/denoland/deno/releases/download/v${DENO_VERSION}/deno-x86_64-unknown-linux-gnu.zip"
170-
mkdir -p "$HOME/.deno/bin"
171-
unzip -oq /tmp/deno.zip -d "$HOME/.deno/bin"
172-
echo "$HOME/.deno/bin" >> "$GITHUB_PATH"
173-
"$HOME/.deno/bin/deno" --version
161+
# ---- Node (for smoke test within E2E script) ----
162+
- name: Set up Node.js
163+
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
164+
with:
165+
node-version: '25'
174166

175167
# ---- Full E2E ----
176168
# Phase 0 NOTE (issue #48): this step has been persistently red since
@@ -198,7 +190,7 @@ jobs:
198190

199191
steps:
200192
- name: Checkout repository
201-
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
193+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
202194

203195
# ubuntu-latest ships rustup preinstalled; call it directly rather than
204196
# routing through dtolnay/rust-toolchain (the SHA-pinned action was
@@ -214,12 +206,3 @@ jobs:
214206

215207
- name: Cargo test (workspace)
216208
run: cargo test --workspace --locked
217-
218-
# Explicit named step for the IR-level round-trip corpus (#130).
219-
# Already covered by the workspace test above, but naming it
220-
# explicitly makes any regression in the verify(emit(m)) loop
221-
# surface as a clearly-named failure. Surface .twasm corpus is
222-
# blocked on the front-end → IR seam (#127); this is the cheap-wire
223-
# half of #130.
224-
- name: Round-trip soundness corpus (IR-level slice — refs #130)
225-
run: cargo test --test corpus -p typed-wasm-codegen --locked

.github/workflows/release.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
permissions:
2626
contents: read
2727
steps:
28-
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
28+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
2929

3030
- name: Build
3131
run: |
@@ -52,7 +52,7 @@ jobs:
5252
changelog: ${{ steps.cliff.outputs.content }}
5353
version: ${{ steps.version.outputs.version }}
5454
steps:
55-
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
55+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
5656
with:
5757
fetch-depth: 0
5858

@@ -95,7 +95,7 @@ jobs:
9595
permissions:
9696
contents: write
9797
steps:
98-
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
98+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
9999

100100
# TODO: Download build artifacts if uploading to the release
101101
# - uses: actions/download-artifact@v4

0 commit comments

Comments
 (0)