Skip to content

ci(rust-ci): re-pin rust-ci-reusable past the toolchain-input breakage - #135

Merged
hyperpolymath merged 5 commits into
mainfrom
ci/rust-toolchain-input
Oct 20, 2026
Merged

hyperpolymath merged 5 commits into
mainfrom
ci/rust-toolchain-input

Conversation

@hyperpolymath

@hyperpolymath hyperpolymath commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner

Summary

rust-ci.yml calls hyperpolymath/standards rust-ci-reusable at d135b05b. That version runs dtolnay/rust-toolchain by commit SHA without a toolchain: input, so every run fails with 'toolchain' is a required input before cargo starts.

Re-pin to standards@81dbf2dd, which passes toolchain: stable, uses the same actions/checkout@9c091bb2 as this repo's other reusables, and is already the pin of its governance and hypatia-scan callers.

Changes

  • rust-ci.yml: pin d135b05b → 81dbf2dd. actions.lock untouched.
  • src/codegen/mod.rs: two anyhow::bail! calls reformatted by cargo fmt. The format check could not report this before: the toolchain step failed first. Separate commit.

Why not the newest standards commit: 95de3dfc uses actions/checkout@3d3c42e5, the commit this repo's lock records as checkout@v7.0.1. GitHub rejects that with invalid lockfile pin, failing the first job before any step. I tried it first, and also tried editing the lock; neither helped, so the final PR leaves the lock alone.

RSR Quality Checklist

Required

  • Tests pass (cargo test --locked --all-targets, stable)
  • Code is formatted (cargo fmt --check)
  • Linter is clean (cargo clippy --locked --all-targets -- -D warnings)
  • No banned language patterns
  • No secrets, credentials, or .env files included

Testing

On this PR: rust-ci / Detect Cargo.toml, Cargo check + clippy + fmt and Cargo test all pass. Other red checks (Hypatia, DEED, K9, workflow security linter) are red on main too and unrelated.

🤖 Generated with Claude Code

https://claude.ai/code/session_0132Cdz3iwk2QGKv2sUhhsye

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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0132Cdz3iwk2QGKv2sUhhsye
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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0132Cdz3iwk2QGKv2sUhhsye
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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0132Cdz3iwk2QGKv2sUhhsye
@coderabbitai

coderabbitai Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: e677a642-66b4-4a96-8649-700dc0420376
📥 Commits

Reviewing files that changed from the base of the PR and between 7605fe0 and a161b4e.

📒 Files selected for processing: 1
  • src/codegen/mod.rs

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

📜 Recent review details
⚠️ CI failures not shown inline: 9

GitHub Actions: Static Analysis Gate / 1_Hypatia neurosymbolic scan.txt: ci(rust-ci): re-pin rust-ci-reusable past the toolchain-input breakage

Conclusion: failure

View job details

##[group]Run set +e
 �[36;1mset +e�[0m
 �[36;1mHYPATIA_FORMAT=json "$HOME/hypatia/hypatia-cli.sh" scan . --exit-zero > hypatia-findings.json�[0m
 �[36;1mHYP_EXIT=$?�[0m
 �[36;1mset -e�[0m
 �[36;1m�[0m
 �[36;1m# --exit-zero is Hypatia's own documented CI recipe (lib/hypatia/cli.ex),�[0m
 �[36;1m# for exactly this case: "use in CI when a downstream step gates on�[0m
 �[36;1m# severity counts". Findings go to stdout, the one-line summary to�[0m
 �[36;1m# stderr, and the process exits 0 unless the SCANNER itself failed.�[0m
 �[36;1m#�[0m
 �[36;1m# Do NOT redirect stderr into the payload with `2>&1`: that folds the�[0m
 �[36;1m# summary line into the JSON, so every parse fails, the old `[]`�[0m
 �[36;1m# fallback substituted a clean result, CRITICAL was always 0, and the�[0m
 �[36;1m# gate below could never fire on any input. Keep stderr on the log.�[0m
 �[36;1mif [ "$HYP_EXIT" -ne 0 ]; then�[0m
 �[36;1m  echo "::error::Hypatia scanner execution failed with exit ${HYP_EXIT}"�[0m
 �[36;1m  exit "$HYP_EXIT"�[0m
 �[36;1mfi�[0m
 �[36;1m# `jq empty` is NOT sufficient -- it succeeds on any valid JSON,�[0m
 �[36;1m# including a bare string, object or null. Assert the array.�[0m
 �[36;1mif [ ! -s hypatia-findings.json ] || ! jq -e 'type == "array"' hypatia-findings.json >/dev/null; then�[0m
 �[36;1m  echo "::error::Hypatia did not produce a valid JSON findings array"�[0m
...
 ##[group]Run # Findings carry no `.message` (keys: action,file,line,reason,rule_module,
...
 �[36;1m# workspace-relative here.�[0m
 �[36;1mjq -r --arg ws "$GITHUB_WORKSPACE" '.[] | select(.file != null) |�[0m
 �[36;1m  (.file | ltrimstr($ws + "/")) as $f |�[0m
 �[36;1m  (.reason // .message // .type // "finding") as $m |�[0m
 �[36;1m  if .severity == "critical" then�[0m
 �[36;1m    "::error file=\($f),line=\(.line // 1)::[hypatia] \($m)"�[0m
 �[36;1m  elif .severity == "high" then�[0m
 �[36;1m    "::error file=\($f),line=\(.line // 1)::[hypatia] \($m)"�[0m
...
 shell: /usr/bin/bash -e {0}
 env:
   INSTAL...

GitHub Actions: Dogfood Gate / 1_Validate eclexiaiser manifest.txt: ci(rust-ci): re-pin rust-ci-reusable past the toolchain-input breakage

Conclusion: failure

View job details

##[group]Run if [ ! -f "eclexiaiser.toml" ]; then
 �[36;1mif [ ! -f "eclexiaiser.toml" ]; then�[0m
 �[36;1m  # Check if repo has a Containerfile — if so, recommend eclexiaiser�[0m
 �[36;1m  if [ -f "Containerfile" ]; then�[0m
 �[36;1m    echo "::warning::Containerfile present but no eclexiaiser.toml. Run \`eclexiaiser init\` to scaffold energy/carbon budgets."�[0m
 �[36;1m  fi�[0m
 �[36;1m  echo "has_manifest=false" >> "$GITHUB_OUTPUT"�[0m
 �[36;1m  exit 0�[0m
 �[36;1mfi�[0m
 �[36;1m�[0m
 �[36;1mecho "has_manifest=true" >> "$GITHUB_OUTPUT"�[0m
 �[36;1m�[0m
 �[36;1m# Validate TOML structure using Python 3.11+ tomllib�[0m
 �[36;1mpython3 -c "�[0m
 �[36;1mimport tomllib, sys�[0m
 �[36;1mwith open('eclexiaiser.toml', 'rb') as f:�[0m
 �[36;1m    data = tomllib.load(f)�[0m
 �[36;1mproject = data.get('project', {})�[0m
 �[36;1mif not project.get('name', '').strip():�[0m
 �[36;1m    print('ERROR: project.name is required', file=sys.stderr)�[0m
 �[36;1m    sys.exit(1)�[0m
 �[36;1mfunctions = data.get('functions', [])�[0m
 �[36;1mif not functions:�[0m
 �[36;1m    print('ERROR: at least one [[functions]] entry is required', file=sys.stderr)�[0m
 �[36;1m    sys.exit(1)�[0m
 �[36;1mfor fn in functions:�[0m
 �[36;1m    if not fn.get('name', '').strip():�[0m
 �[36;1m        print('ERROR: function name cannot be empty', file=sys.stderr)�[0m
 �[36;1m        sys.exit(1)�[0m
 �[36;1m    if not fn.get('source', '').strip():�[0m
 �[36;1m        print(f'ERROR: function {fn[\"name\"]} has no source path', file=sys.stderr)�[0m
 �[36;1m        sys.exit(1)�[0m
 �[36;1mprint(f'Valid: {project[\"name\"]} ({len(functions)} function(s))')�[0m
 �[36;1m" || {�[0m
 �[36;1m  echo "::error file=eclexiaiser.toml::Invalid eclexiaiser.toml — see step output for details"�[0m

GitHub Actions: Dogfood Gate / 2_Validate DEED manifests.txt: ci(rust-ci): re-pin rust-ci-reusable past the toolchain-input breakage

Conclusion: failure

View job details

##[group]A2ML Manifest Validation
 Scanning . for .a2ml and .deed files...
 Found 236 .a2ml/.deed file(s)
   Validating: ./.github/0.1-AI-MANIFEST.a2ml
 ##[warning]Missing SPDX-License-Identifier in first 10 lines
   Validating: ./.machine_readable/0.1-AI-MANIFEST.a2ml
   Validating: ./.machine_readable/6a2/AGENTIC.a2ml
   Validating: ./.machine_readable/6a2/ECOSYSTEM.a2ml
   Validating: ./.machine_readable/6a2/META.a2ml
   Validating: ./.machine_readable/6a2/NEUROSYM.a2ml
   Validating: ./.machine_readable/6a2/PLAYBOOK.a2ml
   Validating: ./.machine_readable/6a2/STATE.a2ml
   Validating: ./.machine_readable/CLADE.a2ml
   Validating: ./.machine_readable/ENSAID_CONFIG.a2ml
   Validating: ./.machine_readable/agent_instructions/coverage.a2ml
   Validating: ./.machine_readable/agent_instructions/debt.a2ml
   Validating: ./.machine_readable/agent_instructions/methodology.a2ml
   Validating: ./.machine_readable/ai/0.2-AI-MANIFEST.a2ml
   Validating: ./.machine_readable/ai/AI.a2ml
 ##[warning]Missing SPDX-License-Identifier in first 10 lines
   Validating: ./.machine_readable/anchors/0.2-AI-MANIFEST.a2ml
   Validating: ./.machine_readable/anchors/ANCHOR.a2ml
   Validating: ./.machine_readable/configs/0.2-AI-MANIFEST.a2ml
   Validating: ./.machine_readable/contractiles/dust/Dustfile.a2ml
   Validating: ./.machine_readable/contractiles/intend/Intendfile.a2ml
   Validating: ./.machine_readable/contractiles/lust/Intentfile.a2ml
   Validating: ./.machine_readable/contractiles/must/Mustfile.a2ml
   Validating: ./.machine_readable/contractiles/trust/Trustfile.a2ml
   Validating: ./.machine_readable/integrations/feedback-o-tron.a2ml
   Validating: ./.machine_readable/integrations/proven.a2ml
   Validating: ./.machine_readable/integrations/verisimdb.a2ml
   Validating: ./.machine_readable/integrations/vexometer.a2ml
   Validating: ./.machine_readable/policies/0.2-AI-MANIFEST.a2ml
   Validating: ./.machine_readable/policies/MAINTENANCE-AXES.a2ml
   Validating: ./.machine_readable...

GitHub Actions: Dogfood Gate / 4_Validate K9 contracts.txt: ci(rust-ci): re-pin rust-ci-reusable past the toolchain-input breakage

Conclusion: failure

View job details

##[group]K9 Configuration Validation
 Scanning . for K9 files (.k9, .k9.ncl)...
 Found 16 K9 file(s)
   Validating: ./.machine_readable/contractiles/k9/examples/ci-config.k9.ncl
   Validating: ./.machine_readable/contractiles/k9/examples/project-metadata.k9.ncl
   Validating: ./.machine_readable/contractiles/k9/examples/setup-repo.k9.ncl
   Validating: ./.machine_readable/contractiles/k9/template-hunt.k9.ncl
   Validating: ./.machine_readable/contractiles/k9/template-kennel.k9.ncl
   Validating: ./.machine_readable/contractiles/k9/template-yard.k9.ncl
   Validating: ./container/deploy.k9.ncl
 ##[error]Missing K9! magic number. First non-empty line must be exactly 'K9!'
 ##[error]Pedigree block missing 'name' field (in pedigree.metadata.name or pedigree.name)
...
   Validating: ./satellites/a2mliser/.machine_readable/contractiles/k9/examples/setup-repo.k9.ncl
   Validating: ./satellites/a2mliser/.machine_readable/contractiles/k9/template-hunt.k9.ncl
   Validating: ./satellites/a2mliser/.machine_readable/contractiles/k9/template-kennel.k9.ncl
   Validating: ./satellites/a2mliser/.machine_readable/contractiles/k9/template-yard.k9.ncl
   Validating: ./satellites/a2mliser/container/deploy.k9.ncl
 ##[error]Missing K9! magic number. First non-empty line must be exactly 'K9!'
 ##[error]Pedigree block missing 'name' field (in pedigree.metadata.name or pedigree.name)
 ##[warning]Pedigree block missing 'version' or 'schema_version' field
 ##[warning]No security level (leash/security_level) found in pedigree block
   Validating: ./satellites/k9iser/cargo-manifest.k9
 ##[error]Missing K9! magic number. First non-empty line must be exactly 'K9!'
 ##[warning]Missing SPDX-License-Identifier in first 10 lines
 ##[error]Missing pedigree block. K9 files must contain a 'pedigree = { ... }' section
   Validating: ./satellites/k9iser/container-build.k9
 ##[error]Missing K9! magic number. First non-empty line must be exactly 'K9!'
 ##[warning]Missing SPDX-License-Identifier in first 10...

GitHub Actions: Dogfood Gate / 5_Groove manifest check.txt: ci(rust-ci): re-pin rust-ci-reusable past the toolchain-input breakage

Conclusion: failure

View job details

##[group]Run # Check for static or dynamic Groove endpoints
 �[36;1m# Check for static or dynamic Groove endpoints�[0m
 �[36;1mHAS_MANIFEST="false"�[0m
 �[36;1mHAS_GROOVE_CODE="false"�[0m
 �[36;1m�[0m
 �[36;1mif [ -f ".well-known/groove/manifest.json" ]; then�[0m
 �[36;1m  HAS_MANIFEST="true"�[0m
 �[36;1m  # Validate the manifest JSON�[0m
 �[36;1m  if ! jq empty .well-known/groove/manifest.json 2>/dev/null; then�[0m
 �[36;1m    echo "::error file=.well-known/groove/manifest.json::Invalid JSON in Groove manifest"�[0m

GitHub Actions: Governance / 1_governance _ Well-Known (RFC 9116 + RSR).txt: ci(rust-ci): re-pin rust-ci-reusable past the toolchain-input breakage

Conclusion: failure

View job details

##[group]Run SECTXT=""
 �[36;1mSECTXT=""�[0m
 �[36;1m[ -f ".well-known/security.txt" ] && SECTXT=".well-known/security.txt"�[0m
 �[36;1m[ -f "security.txt" ] && SECTXT="security.txt"�[0m
 �[36;1mif [ -z "$SECTXT" ]; then�[0m
 �[36;1m  echo "::warning::No security.txt found."�[0m
 �[36;1m  exit 0�[0m
 �[36;1mfi�[0m
 �[36;1mgrep -q "^Contact:" "$SECTXT" || { echo "::error::Missing Contact field"; exit 1; }�[0m
 �[36;1mif ! grep -q "^Expires:" "$SECTXT"; then�[0m
 �[36;1m  echo "::error::Missing Expires field"�[0m
...
 �[36;1mfi�[0m
 �[36;1mEXPIRES=$(grep "^Expires:" "$SECTXT" | cut -d: -f2- | tr -d ' ' | head -1)�[0m
 �[36;1mif date -d "$EXPIRES" > /dev/null 2>&1; then�[0m
 �[36;1m  DAYS=$(( ($(date -d "$EXPIRES" +%s) - $(date +%s)) / 86400 ))�[0m
 �[36;1m  if [ $DAYS -lt 0 ]; then�[0m
 �[36;1m    echo "::error::security.txt EXPIRED"�[0m
...
 ##[group]Run MIXED=$(grep -rE 'src="http://|href="http://' --include="*.html" --include="*.htm" . 2>/dev/null | grep -vE 'localhost|127\.0\.0\.1|example\.com|lol/|node_modules/|third-party/|vendor/' | head -5 || true)
 �[36;1mMIXED=$(grep -rE 'src="http://|href="http://' --include="*.html" --include="*.htm" . 2>/dev/null | grep -vE 'localhost|127\.0\.0\.1|example\.com|lol/|node_modules/|third-party/|vendor/' | head -5 || true)�[0m
 �[36;1mif [ -n "$MIXED" ]; then�[0m
 �[36;1m  echo "::error::Mixed content (HTTP in HTML)"�[0m

GitHub Actions: Governance / 4_governance _ Security policy checks.txt: ci(rust-ci): re-pin rust-ci-reusable past the toolchain-input breakage

Conclusion: failure

View job details

##[group]Run set -uo pipefail
 �[36;1mset -uo pipefail�[0m
 �[36;1mDIR=.github/canonical-references�[0m
 �[36;1mif [ ! -d "$DIR" ]; then�[0m
 �[36;1m  echo "ℹ️  [R5] no $DIR/ — skipped (repo has not opted in)"�[0m
 �[36;1m  exit 0�[0m
 �[36;1mfi�[0m
 �[36;1mif ! command -v python3 >/dev/null 2>&1; then�[0m
 �[36;1m  echo "❌ [R5] python3 missing on runner — required for YAML rule parsing"�[0m
 �[36;1m  exit 2�[0m
 �[36;1mfi�[0m
 �[36;1mpython3 - <<'PY'�[0m
 �[36;1mimport os, sys, glob, subprocess�[0m
 �[36;1mtry:�[0m
 �[36;1m    import yaml�[0m
 �[36;1mexcept ImportError:�[0m
 �[36;1m    sys.exit("❌ [R5] PyYAML not installed on runner; install python3-yaml")�[0m
 �[36;1m�[0m
 �[36;1mdir_ = ".github/canonical-references"�[0m
 �[36;1mfiles = sorted(glob.glob(f"{dir_}/*.yml") + glob.glob(f"{dir_}/*.yaml"))�[0m
 �[36;1mif not files:�[0m
 �[36;1m    print(f"ℹ️  [R5] {dir_}/ has no .yml/.yaml rules — skipped")�[0m
 �[36;1m    sys.exit(0)�[0m
 �[36;1m�[0m
 �[36;1mtotal = 0�[0m
 �[36;1mfor rf in files:�[0m
 �[36;1m    with open(rf, encoding="utf-8") as fh:�[0m
 �[36;1m        cfg = yaml.safe_load(fh)�[0m
 �[36;1m    if not isinstance(cfg, dict):�[0m
 �[36;1m        print(f"❌ [R5] {rf}: top-level must be a mapping"); total += 1; continue�[0m
 �[36;1m    rid  = cfg.get("id", os.path.basename(rf))�[0m
 �[36;1m    desc = cfg.get("description", "")�[0m
 �[36;1m    pats = cfg.get("patterns") or []�[0m
 �[36;1m    canon = cfg.get("canonical_pointer", "")�[0m
 �[36;1m    scope = (cfg.get("scope") or {})�[0m
 �[36;1m    includes = scope.get("include") or []�[0m
 �[36;1m    if not pats or not includes:�[0m
 �[36;1m        print(f"❌ [R5:{rid}] missing patterns or scope.include in {rf}")�[0m
 �[36;1m        total += 1; continue�[0m
 �[36;1m    # exclude self-references�[0m
 �[36;1m    skip = set(["CHANGELOG.md", "CHANGELOG.adoc", rf])�[0m
 �[36;1m    if canon: skip.add(canon)�[0m
 �[36;1m    rule_hits = 0�[0m
 �[36;1m    for f_ in includes:�[0m
 �[36;1m        if f_ in skip or not os...

GitHub Actions: Governance / 6_governance _ Code quality + docs.txt: ci(rust-ci): re-pin rust-ci-reusable past the toolchain-input breakage

Conclusion: failure

View job details

##[group]Run editorconfig-checker/action-editorconfig-checker@840e866d93b8e032123c23bac69dece044d4d84c
 with:
   github-***REDACTED_SECRET_ASSIGNMENT***
   version: latest
 ##[endgroup]
 Find 'latest' release
 ##[error]Error: The binary 'ec-linux-amd64*' not found

GitHub Actions: Governance / 9_governance _ Workflow security linter.txt: ci(rust-ci): re-pin rust-ci-reusable past the toolchain-input breakage

Conclusion: failure

View job details

##[group]Run failed=0
 �[36;1mfailed=0�[0m
 �[36;1mfor file in .github/workflows/*.yml .github/workflows/*.yaml; do�[0m
 �[36;1m  [ -f "$file" ] || continue�[0m
 �[36;1m  if ! head -1 "$file" | grep -q "^# SPDX-License-Identifier:"; then�[0m
 �[36;1m    echo "ERROR: $file missing SPDX header"; failed=1�[0m
 �[36;1m  fi�[0m
 �[36;1m  if ! grep -q "^permissions:" "$file"; then�[0m
 �[36;1m    echo "ERROR: $file missing top-level 'permissions:' declaration"; failed=1�[0m
 �[36;1m  fi�[0m
 �[36;1mdone�[0m
 �[36;1m[ $failed -eq 1 ] && { echo "Add SPDX header + permissions:"; exit 1; }�[0m
 �[36;1mecho "All workflows have SPDX headers + permissions"�[0m
 shell: /usr/bin/bash -e {0}
 ##[endgroup]
 ERROR: .github/workflows/abi-ffi-gate.yml missing SPDX header
 ERROR: .github/workflows/boj-build.yml missing SPDX header
 ERROR: .github/workflows/casket-pages.yml missing SPDX header
 ERROR: .github/workflows/codeql.yml missing SPDX header
 ERROR: .github/workflows/dogfood-gate.yml missing SPDX header
 ERROR: .github/workflows/governance.yml missing SPDX header
 ERROR: .github/workflows/hypatia-scan.yml missing SPDX header
 ERROR: .github/workflows/instant-sync.yml missing SPDX header
 ERROR: .github/workflows/label-triage.yml missing SPDX header
 ERROR: .github/workflows/labels.yml missing SPDX header
 ERROR: .github/workflows/mirror.yml missing SPDX header
 ERROR: .github/workflows/push-email-notify.yml missing SPDX header
 ERROR: .github/workflows/release.yml missing SPDX header
 ERROR: .github/workflows/rhodibot.yml missing SPDX header
 ERROR: .github/workflows/rust-ci.yml missing SPDX header
 ERROR: .github/workflows/scorecard.yml missing SPDX header
 ERROR: .github/workflows/secret-scanner.yml missing SPDX header
 ERROR: .github/workflows/static-analysis-gate.yml missing SPDX header
 Add SPDX header + permissions:
 ##[error]Process completed with exit code 1.
🧰 Additional context used
📚 Code guidelines: 1
.github/copilot-instructions.md — unknown
📓 Path-based instructions: 1
Source excerpt: Rust: no `transmute` unless FFI with `// SAFETY:` comment

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Files:

  • src/codegen/mod.rs
🔇 Additional comments: 1
src/codegen/mod.rs: 1

74-83: LGTM!

Also applies to: 120-124, 126-130

📝 Summary

Summary by CodeRabbit

  • Documentation
    • Clarified the output paths, overwrite behaviour, success results and possible errors for repository and cartridge generation.

The Rust CI job now uses a different reusable workflow commit. The code generation functions have expanded documentation, and their scaffolding error branches pass error messages directly to anyhow::bail!.

Changes: Rust CI workflow

Layer / File(s) Summary
Reusable workflow reference
.github/workflows/rust-ci.yml
The rust-ci job now references the reusable workflow at a different commit.

Code generation documentation and errors

Layer / File(s) Summary
Function documentation and error handling
src/codegen/mod.rs
Documentation for generate_repo_only and generate_cartridge describes output paths, overwrite behaviour, success results and possible validation or write errors, including partial output. Both scaffolding error branches now pass their messages directly to anyhow::bail!; the error outcomes are unchanged.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Merge Risk: ⚪ Minimal · up to a161b

The Rust CI pin uses a reusable workflow that supplies the stable toolchain internally. No actionable defect is established in the workflow or code-generation changes, so the PR appears mergeable with normal checks.

Pre-merge checks: Passed 5
Check name Status Explanation
Title check Passed The title clearly identifies the main change: re-pinning the Rust CI reusable workflow to address toolchain-input breakage.
Description check Passed The description is mostly complete. It explains the failure, the selected replacement pin, lockfile considerations, source changes, testing results, and unrelated checks. Some template checklist items…
Docstring Coverage Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 2 functions across 1 files.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

The description is mostly complete. It explains the failure, the selected replacement pin, lockfile considerations, source changes, testing results, and unrelated checks. Some template checklist items are omitted, but the critical information is present.

✨ Finishing Touches: 💡 1
🛠️ Fix failing CI checks: 💡
  • Commit to this branch
  • Create a new PR
📝 Generate docstrings
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

…her 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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0132Cdz3iwk2QGKv2sUhhsye
@hyperpolymath
hyperpolymath marked this pull request as ready for review October 19, 2026 17:22
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ⚠️ Failed 2026-10-19T17:22:11.676905Z 7605fe0 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@coderabbitai

coderabbitai Bot commented Oct 19, 2026

Copy link
Copy Markdown
Contributor

Add Carrot credits or activate Agent usage billing to use Autofix

@coderabbitai

coderabbitai Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

🤖 Completed: Generate docstrings for PR #135 — View commit a161b4e

@hyperpolymath
hyperpolymath merged commit c1ca9d5 into main Oct 20, 2026
32 of 36 checks passed
@hyperpolymath
hyperpolymath deleted the ci/rust-toolchain-input branch October 20, 2026 13:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants