From 038663fb9b65b30f9f9f5de598625b66d773c854 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 19 Oct 2026 16:59:29 +0000 Subject: [PATCH 1/5] style: cargo fmt Two anyhow::bail! calls in src/codegen/mod.rs were not rustfmt-clean. rust-ci never got far enough to report it: its toolchain step failed first. Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_0132Cdz3iwk2QGKv2sUhhsye --- src/codegen/mod.rs | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs index 2990dfb..c96a5e1 100644 --- a/src/codegen/mod.rs +++ b/src/codegen/mod.rs @@ -93,10 +93,7 @@ pub fn generate_repo_only(manifest: &Manifest, output_dir: &str) -> Result { - anyhow::bail!( - "{}", - result.error_message().unwrap_or("unknown error") - ); + anyhow::bail!("{}", result.error_message().unwrap_or("unknown error")); } } @@ -132,10 +129,7 @@ pub fn generate_cartridge( ); } _ => { - anyhow::bail!( - "{}", - result.error_message().unwrap_or("unknown error") - ); + anyhow::bail!("{}", result.error_message().unwrap_or("unknown error")); } } From cd7bd2a9ebe4b7896425ef4f8adeaa2ff0cbeb58 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 19 Oct 2026 16:59:29 +0000 Subject: [PATCH 2/5] ci(rust-ci): re-pin rust-ci-reusable past the toolchain-input breakage rust-ci.yml called hyperpolymath/standards rust-ci-reusable at d135b05b. That version runs dtolnay/rust-toolchain by commit SHA without a `toolchain:` input; a SHA ref carries no version, so every run fails in the action's "parse toolchain version" step with "'toolchain' is a required input". d135b05b is the only standards pin in the estate without the fix (landed 2026-06-27). Re-pin to standards@95de3dfc, whose reusable passes `toolchain: stable`, and bring actions.lock's rust-ci.yml entry in line with it: - the workflow entry names hyperpolymath/standards@95de3dfc instead of [] (check-lock-sync flagged the job-level ref as missing); - add the hyperpolymath/standards@95de3dfc dependency record and the records for the four actions the reusable uses at that commit, copied verbatim from standards' own actions.lock at 95de3dfc. No existing lock record is changed or removed. standards' check-lock-sync.sh: rust-ci.yml leaves the failure list; nothing is added to it. Same fix as hyperpolymath/plasma-parser-writer#107, whose Rust CI is now green on main with this pin. Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_0132Cdz3iwk2QGKv2sUhhsye --- .github/workflows/actions.lock | 33 ++++++++++++++++++++++++++++++++- .github/workflows/rust-ci.yml | 2 +- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/.github/workflows/actions.lock b/.github/workflows/actions.lock index c2b5f1f..76f5a54 100644 --- a/.github/workflows/actions.lock +++ b/.github/workflows/actions.lock @@ -34,7 +34,8 @@ workflows: - 'softprops/action-gh-release@v3.0.3' '.github/workflows/rhodibot.yml': - 'actions/checkout@v7.0.1' - '.github/workflows/rust-ci.yml': [] + '.github/workflows/rust-ci.yml': + - 'hyperpolymath/standards@95de3dfc3fcf09a1cf3325ab42723e3d81682b45' '.github/workflows/scorecard.yml': [] '.github/workflows/secret-scanner.yml': [] '.github/workflows/static-analysis-gate.yml': @@ -48,6 +49,11 @@ dependencies: commit: 'sha1-55cc8345863c7cc4c66a329aec7e433d2d1c52a9' owner_id: 44036562 repo_id: 215566462 + 'actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1': + ref: '3d3c42e5aac5ba805825da76410c181273ba90b1' + commit: 'sha1-3d3c42e5aac5ba805825da76410c181273ba90b1' + owner_id: 44036562 + repo_id: 197814629 'actions/checkout@v7.0.1': ref: 'v7.0.1' commit: 'sha1-3d3c42e5aac5ba805825da76410c181273ba90b1' @@ -85,6 +91,11 @@ dependencies: repo_id: 496012378 uses: - 'actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f' + 'dtolnay/rust-toolchain@e2a55d2ffb04f378e9626c28d38b36d230d1e12f': + ref: 'v1' + commit: 'sha1-e2a55d2ffb04f378e9626c28d38b36d230d1e12f' + owner_id: 1940490 + repo_id: 260749683 'erlef/setup-beam@v1.24.1': ref: 'v1.24.1' commit: 'sha1-54075bcc5e249e4758d363f27d099f55d843f124' @@ -95,6 +106,11 @@ dependencies: commit: 'sha1-24c54180a607b1449ed407dd24f251e4e9147c8d' owner_id: 9919 repo_id: 259445878 + 'goto-bus-stop/setup-zig@abea47f85e598557f500fa1fd2ab7464fcb39406': + ref: 'abea47f85e598557f500fa1fd2ab7464fcb39406' + commit: 'sha1-abea47f85e598557f500fa1fd2ab7464fcb39406' + owner_id: 1006268 + repo_id: 212984112 'haskell-actions/setup@v2.12.0': ref: 'v2.12.0' commit: 'sha1-6037f33647c3f17758a2356c80fc4a53d7e0685d' @@ -105,6 +121,16 @@ dependencies: commit: 'sha1-22e7bdb322c430c1d0dac6b3bb307f4bb139d0be' owner_id: 6759885 repo_id: 1352485172 + 'hyperpolymath/standards@95de3dfc3fcf09a1cf3325ab42723e3d81682b45': + ref: '95de3dfc3fcf09a1cf3325ab42723e3d81682b45' + commit: 'sha1-95de3dfc3fcf09a1cf3325ab42723e3d81682b45' + owner_id: 6759885 + repo_id: 1116521501 + uses: + - 'actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1' + - 'dtolnay/rust-toolchain@e2a55d2ffb04f378e9626c28d38b36d230d1e12f' + - 'goto-bus-stop/setup-zig@abea47f85e598557f500fa1fd2ab7464fcb39406' + - 'swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6' 'peter-evans/repository-dispatch@v4.0.1': ref: 'v4.0.1' commit: 'sha1-28959ce8df70de7be546dd1250a005dd32156697' @@ -115,3 +141,8 @@ dependencies: commit: 'sha1-efb35369e0ad2afab669f228072c1b0d510eae64' owner_id: 2242 repo_id: 204253808 + 'swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6': + ref: '6323deb102c322ba6fcbdcafc7e3dddab59af2b6' + commit: 'sha1-6323deb102c322ba6fcbdcafc7e3dddab59af2b6' + owner_id: 580492 + repo_id: 298565987 diff --git a/.github/workflows/rust-ci.yml b/.github/workflows/rust-ci.yml index 0638568..4d2844c 100644 --- a/.github/workflows/rust-ci.yml +++ b/.github/workflows/rust-ci.yml @@ -15,7 +15,7 @@ permissions: jobs: rust-ci: - uses: hyperpolymath/standards/.github/workflows/rust-ci-reusable.yml@d135b05bfc647d0c0fbfedc7e80f37ea50f49236 + uses: hyperpolymath/standards/.github/workflows/rust-ci-reusable.yml@95de3dfc3fcf09a1cf3325ab42723e3d81682b45 permissions: actions: read contents: read From cf7cfb6d2721b02cec1ef49ba2488d6af415c275 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 19 Oct 2026 17:08:08 +0000 Subject: [PATCH 3/5] fix(actions.lock): leave the lock untouched for the rust-ci re-pin Job-level reusable calls here (mirror, governance, secret-scanner, ...) have empty entries and no standards records, and they start fine. Adding a non-empty hyperpolymath/standards@95de3dfc entry made GitHub validate the call against the lock, and it rejected it for actions/checkout@3d3c42e5 with 'invalid lockfile pin'. Restore actions.lock to main so the PR only moves the pin, like the other reusable calls. Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_0132Cdz3iwk2QGKv2sUhhsye --- .github/workflows/actions.lock | 33 +-------------------------------- 1 file changed, 1 insertion(+), 32 deletions(-) diff --git a/.github/workflows/actions.lock b/.github/workflows/actions.lock index 76f5a54..c2b5f1f 100644 --- a/.github/workflows/actions.lock +++ b/.github/workflows/actions.lock @@ -34,8 +34,7 @@ workflows: - 'softprops/action-gh-release@v3.0.3' '.github/workflows/rhodibot.yml': - 'actions/checkout@v7.0.1' - '.github/workflows/rust-ci.yml': - - 'hyperpolymath/standards@95de3dfc3fcf09a1cf3325ab42723e3d81682b45' + '.github/workflows/rust-ci.yml': [] '.github/workflows/scorecard.yml': [] '.github/workflows/secret-scanner.yml': [] '.github/workflows/static-analysis-gate.yml': @@ -49,11 +48,6 @@ dependencies: commit: 'sha1-55cc8345863c7cc4c66a329aec7e433d2d1c52a9' owner_id: 44036562 repo_id: 215566462 - 'actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1': - ref: '3d3c42e5aac5ba805825da76410c181273ba90b1' - commit: 'sha1-3d3c42e5aac5ba805825da76410c181273ba90b1' - owner_id: 44036562 - repo_id: 197814629 'actions/checkout@v7.0.1': ref: 'v7.0.1' commit: 'sha1-3d3c42e5aac5ba805825da76410c181273ba90b1' @@ -91,11 +85,6 @@ dependencies: repo_id: 496012378 uses: - 'actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f' - 'dtolnay/rust-toolchain@e2a55d2ffb04f378e9626c28d38b36d230d1e12f': - ref: 'v1' - commit: 'sha1-e2a55d2ffb04f378e9626c28d38b36d230d1e12f' - owner_id: 1940490 - repo_id: 260749683 'erlef/setup-beam@v1.24.1': ref: 'v1.24.1' commit: 'sha1-54075bcc5e249e4758d363f27d099f55d843f124' @@ -106,11 +95,6 @@ dependencies: commit: 'sha1-24c54180a607b1449ed407dd24f251e4e9147c8d' owner_id: 9919 repo_id: 259445878 - 'goto-bus-stop/setup-zig@abea47f85e598557f500fa1fd2ab7464fcb39406': - ref: 'abea47f85e598557f500fa1fd2ab7464fcb39406' - commit: 'sha1-abea47f85e598557f500fa1fd2ab7464fcb39406' - owner_id: 1006268 - repo_id: 212984112 'haskell-actions/setup@v2.12.0': ref: 'v2.12.0' commit: 'sha1-6037f33647c3f17758a2356c80fc4a53d7e0685d' @@ -121,16 +105,6 @@ dependencies: commit: 'sha1-22e7bdb322c430c1d0dac6b3bb307f4bb139d0be' owner_id: 6759885 repo_id: 1352485172 - 'hyperpolymath/standards@95de3dfc3fcf09a1cf3325ab42723e3d81682b45': - ref: '95de3dfc3fcf09a1cf3325ab42723e3d81682b45' - commit: 'sha1-95de3dfc3fcf09a1cf3325ab42723e3d81682b45' - owner_id: 6759885 - repo_id: 1116521501 - uses: - - 'actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1' - - 'dtolnay/rust-toolchain@e2a55d2ffb04f378e9626c28d38b36d230d1e12f' - - 'goto-bus-stop/setup-zig@abea47f85e598557f500fa1fd2ab7464fcb39406' - - 'swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6' 'peter-evans/repository-dispatch@v4.0.1': ref: 'v4.0.1' commit: 'sha1-28959ce8df70de7be546dd1250a005dd32156697' @@ -141,8 +115,3 @@ dependencies: commit: 'sha1-efb35369e0ad2afab669f228072c1b0d510eae64' owner_id: 2242 repo_id: 204253808 - 'swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6': - ref: '6323deb102c322ba6fcbdcafc7e3dddab59af2b6' - commit: 'sha1-6323deb102c322ba6fcbdcafc7e3dddab59af2b6' - owner_id: 580492 - repo_id: 298565987 From 7605fe0a46792335ee7dedd924d5cc7b12bc730f Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 19 Oct 2026 17:19:54 +0000 Subject: [PATCH 4/5] ci(rust-ci): pin rust-ci-reusable to 81dbf2dd, the pin this repo's other reusables use 95de3dfc's reusable uses actions/checkout@3d3c42e5, the commit this repo's lock already pins as checkout@v7.0.1, and GitHub rejects it with 'invalid lockfile pin' (the job fails before any step runs). Every other reusable called here uses checkout@9c091bb2 and starts normally. 81dbf2dd has the toolchain fix, uses that same checkout ref, and is already the pin of this repo's governance and hypatia-scan callers. Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_0132Cdz3iwk2QGKv2sUhhsye --- .github/workflows/rust-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rust-ci.yml b/.github/workflows/rust-ci.yml index 4d2844c..6cd600f 100644 --- a/.github/workflows/rust-ci.yml +++ b/.github/workflows/rust-ci.yml @@ -15,7 +15,7 @@ permissions: jobs: rust-ci: - uses: hyperpolymath/standards/.github/workflows/rust-ci-reusable.yml@95de3dfc3fcf09a1cf3325ab42723e3d81682b45 + uses: hyperpolymath/standards/.github/workflows/rust-ci-reusable.yml@81dbf2dd854b1444fd6236fa2352474383b2c2b9 permissions: actions: read contents: read From a161b4e4083684e16c8cc7b9b9a52b5820f405bb Mon Sep 17 00:00:00 2001 From: "coderabbitai[bot]" <136622811+coderabbitai[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 17:54:13 +0000 Subject: [PATCH 5/5] docs(codegen): document scaffold output paths, overwrite behavior, and errors --- src/codegen/mod.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs index c96a5e1..ee494bd 100644 --- a/src/codegen/mod.rs +++ b/src/codegen/mod.rs @@ -71,6 +71,16 @@ pub fn generate_all(manifest: &Manifest, output_dir: &str) -> Result//`, where `iser_name` is derived from +/// `manifest.language.name`. Existing generated files are overwritten. +/// Returns [`ScaffoldResult::Success`] containing the repository's root path +/// and generated file contents. +/// +/// # Errors +/// +/// Returns an error if semantic validation fails or output directories cannot +/// be created or files written. A write failure may leave partial output. pub fn generate_repo_only(manifest: &Manifest, output_dir: &str) -> Result { // Step 1: Deep validation let report = parser::validate_or_bail(manifest)?; @@ -107,7 +117,17 @@ pub fn generate_repo_only(manifest: &Manifest, output_dir: &str) -> Result/`; the cartridge vendors the ADR-0006 /// invoke-shim at `ffi/cartridge_shim.zig` and so builds wherever it sits. /// +/// Here, `iser_name` is derived from `manifest.language.name`. Existing +/// generated files are overwritten. Returns +/// [`cartridge::CartridgeScaffoldResult::Success`] containing the cartridge's +/// root path and generated file contents. +/// /// See `cartridge` module docs and standards#89 Phase 2b for context. +/// +/// # Errors +/// +/// Returns an error if semantic validation fails or output directories cannot +/// be created or files written. A write failure may leave partial output. pub fn generate_cartridge( manifest: &Manifest, output_dir: &str,