Skip to content

sdlc/ci: supply-chain & toolchain hardening; scheduled jco-browser and canary jobs #34

Description

@lann

The project rides pre-stabilization ABIs end to end (wasmtime -W component-model-async=y, Node JSPI behind a flag, a wit-bindgen 0.57/0.59 split where the 0.57 pin tracks an undocumented internal of wasip3 0.7), and its toolchain pins are largely aspirational. For a crypto project, supply-chain gating should exist before the dependency tree grows.

  • Supply-chain gating: no cargo audit/cargo deny (or npm equivalent) in CI; no dependabot/renovate config. (Migrated from TODO.md.)
  • npm ci, not npm install (scripts/setup.sh:74, 76): lockfiles are advisory today, and jco ^1.26.0 — the release containing the heap-corruption fix the README's Findings section hangs on — is a floating caret.
  • setup.sh pins are aspirational: every install is guarded by have <tool>, so whatever is on PATH wins and no version is ever verified; the cargo-binstall bootstrap is curl | bash from a mutable main ref (setup.sh:46-47). Verify installed versions against the pins; pin the bootstrap. (Header doc also omits the WAC_VERSION/WASMTIME_VERSION overrides.)
  • SHA-pin GitHub Actions (checkout@v5, setup-node@v4, rust-cache@v2 are tag-pinned; node-version: 24 floats across 24.x, where JSPI behavior can shift).
  • Lockstep the wasmtime CLI and crate: setup.sh pins wasmtime-cli 47.0.1 while the crate floats within "47" (Cargo.lock resolves 47.0.2). For a pre-stable ABI these should match exactly.
  • Scheduled non-gating jco-browser conformance job with Chromium, so browser conformance regressions surface without anyone remembering to run just conformance-jco-browser. (Migrated from TODO.md.)
  • Bleeding-edge canary job: scheduled, non-gating build against the latest wasmtime/wit-bindgen/jco releases so ABI breakage is a notification, not an ambush during feature work. (Migrated from TODO.md.) Consider a scheduled timing-lab run alongside it (timing-lab: fixed-vs-random seal probe is not random; lab never runs in automation #31).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions