Skip to content

Commit 8266584

Browse files
Merge branch 'main' into claude/adoring-volta-LCdCJ - resolve conflicts
Conflicts resolved: - .github/workflows/e2e.yml: Accepted main version with updated actions (v6.0.2 checkout, v6.4.0 setup-node, node 25), new cargo-verify job Generated by Mistral Vibe. Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2 parents 11127b4 + 9ae6fc4 commit 8266584

5 files changed

Lines changed: 569 additions & 13 deletions

File tree

.github/workflows/cargo-audit.yml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# SPDX-License-Identifier: MPL-2.0
2+
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
3+
#
4+
# cargo-audit.yml — RustSec advisory check for the Rust workspace.
5+
#
6+
# Catches CVEs in transitive dependencies of crates/typed-wasm-verify
7+
# without waiting for dependabot to file a PR. Distinct from e2e.yml's
8+
# cargo-verify job (which runs `cargo build` + `cargo test`) — audit is
9+
# concerned with security advisories, not API breakage.
10+
#
11+
# Track C deliverable from the production-path Phase 0 work
12+
# (docs/PRODUCTION-PATH.adoc §Phase 0). Tracks under issue #48.
13+
14+
name: Cargo Audit
15+
16+
on:
17+
pull_request:
18+
branches: ['**']
19+
push:
20+
branches: [main, master]
21+
# Weekly scheduled run so new advisories surface even on quiescent code.
22+
# Monday 04:17 UTC — off the typical hour boundary to avoid GH Actions
23+
# cron contention.
24+
schedule:
25+
- cron: '17 4 * * 1'
26+
workflow_dispatch:
27+
28+
permissions:
29+
contents: read
30+
31+
jobs:
32+
cargo-audit:
33+
name: Cargo audit (RustSec advisories)
34+
runs-on: ubuntu-latest
35+
36+
steps:
37+
- name: Checkout repository
38+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
39+
40+
# Match the cargo-verify pattern in e2e.yml: use the preinstalled
41+
# rustup directly rather than a SHA-pinned third-party action.
42+
- name: Install Rust toolchain
43+
run: |
44+
rustup toolchain install stable --profile minimal --no-self-update
45+
rustup default stable
46+
cargo --version
47+
48+
- name: Install cargo-audit
49+
run: cargo install cargo-audit --locked
50+
51+
- name: Run cargo audit
52+
run: cargo audit --deny warnings

.github/workflows/e2e.yml

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ jobs:
4646
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
4747

4848
- name: Set up Node.js
49-
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
49+
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
5050
with:
5151
node-version: '25'
5252

@@ -98,19 +98,22 @@ jobs:
9898
# comment "Updated for Zig 0.15+ API (addLibrary / createModule
9999
# pattern)"). 0.12 lacks `b.addLibrary` and the `.root_module` field
100100
# and will not parse the build script.
101-
# Direct curl was failing on every PR (#44 CI: curl exit 22 / 404)
102-
# because Zig 0.14+ flipped tarball naming from zig-OS-ARCH-VERSION
103-
# to zig-ARCH-OS-VERSION. mlugg/setup-zig handles the naming, fetches
104-
# from ziglang.org with a community mirror fallback, and is SHA-pinned
105-
# to v2.2.1.
106101
- name: Install Zig
107-
uses: mlugg/setup-zig@d1434d08867e3ee9daa34448df10607b98908d29 # v2.2.1
108-
with:
109-
version: '0.15.1'
102+
run: |
103+
ZIG_VERSION="0.15.1"
104+
# Zig 0.14+ flipped its tarball naming from zig-OS-ARCH-VERSION to
105+
# zig-ARCH-OS-VERSION. The old name 404s on ziglang.org for 0.15.1,
106+
# which was failing this step with curl exit 22 on every PR (#44 CI).
107+
ZIG_DIR="zig-x86_64-linux-${ZIG_VERSION}"
108+
curl -fsSL \
109+
"https://ziglang.org/download/${ZIG_VERSION}/${ZIG_DIR}.tar.xz" \
110+
-o /tmp/zig.tar.xz
111+
tar -xJf /tmp/zig.tar.xz -C /opt
112+
ln -s "/opt/${ZIG_DIR}/zig" /usr/local/bin/zig
110113
111114
# ---- Node (for smoke test within E2E script) ----
112115
- name: Set up Node.js
113-
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
116+
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
114117
with:
115118
node-version: '25'
116119

README.adoc

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,15 @@ docs/WHITEPAPER.md # Full academic treatment
177177
**Pre-alpha / Research.** The checked L1-L10 ABI core, Zig FFI, parser tests,
178178
and smoke tests are in place. L11-L12 files are experimental drafts: they are
179179
not part of the default proof package and are not yet claimable as integrated
180-
proofs. The next step is to de-template the release path, expand end-to-end and
181-
aspect coverage, and either complete or withdraw the higher-level claims.
180+
proofs.
181+
182+
The path from here to a production-quality compile target adopted outside
183+
the hyperpolymath ecosystem is documented in
184+
link:docs/PRODUCTION-PATH.adoc[`docs/PRODUCTION-PATH.adoc`] — six phases
185+
with explicit gates, load-bearing decisions, and a comparison landscape
186+
locating typed-wasm against neighbouring wasm-safety projects at each
187+
maturity level. `ROADMAP.adoc` tracks the version-by-version delivery
188+
against that plan.
182189

183190
== Related Projects
184191

ROADMAP.adoc

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,33 @@
11
// SPDX-License-Identifier: MPL-2.0
22
= typed-wasm Roadmap
33
:author: Jonathan D.A. Jewell
4-
:revdate: 2026-03-29
4+
:revdate: 2026-05-24
5+
6+
== Relation to the production path
7+
8+
This roadmap tracks specific version milestones (v0.1.0 ... v1.0.0). The
9+
long-form strategic plan — six phases from pre-alpha to production-ready,
10+
with explicit gates, load-bearing decisions, and a comparison landscape —
11+
lives in `docs/PRODUCTION-PATH.adoc`. The two documents stay in sync as
12+
follows:
13+
14+
[cols="1,3",options="header"]
15+
|===
16+
| Version axis (this file) | Phase axis (`docs/PRODUCTION-PATH.adoc`)
17+
18+
| v0.1 -- v0.4 | Phase 0 (stabilize foundation)
19+
| v1.0 | Phase 1 (end-to-end producer)
20+
| v1.x | Phase 2 (multi-producer adoption)
21+
| v2.0 (planned) | Phase 3 (runtime-side enforcement)
22+
| v2.x -- v3.0 | Phases 4-5 (tooling, spec, standards)
23+
| v3.x stable | Phase 6 (production hardening)
24+
|===
25+
26+
When this roadmap says "complete" it means a specific deliverable shipped.
27+
When `PRODUCTION-PATH.adoc` says "gate met" it means an entire phase's
28+
preconditions are satisfied and the next phase can credibly begin. The
29+
two views diverge intentionally: version cuts can happen mid-phase;
30+
phase transitions usually require multiple version cuts to accumulate.
531

632
== Current State
733

0 commit comments

Comments
 (0)