Skip to content

feat(governance): add rust-ci-reusable + elixir-ci-reusable workflows#174

Open
hyperpolymath wants to merge 2 commits into
mainfrom
feat/rust-ci-reusable
Open

feat(governance): add rust-ci-reusable + elixir-ci-reusable workflows#174
hyperpolymath wants to merge 2 commits into
mainfrom
feat/rust-ci-reusable

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

Why — extends #168 to the next two template-drift bug classes

`#168` (merged) consolidated language-policy into governance-reusable and added deno-ci-reusable. That pattern — single source-of-truth reusable in standards consumed via a thin wrapper — kills the "every copy drifts independently" failure mode.

Estate audit done with `gh api search/code` (2026-05-26):

template repos unique SHAs drift
`rust-ci.yml` 137 30 high
`elixir-ci.yml` 9 9 100%
`rescript-deno-ci.yml` 1+ 2+ fixed in #168

`elixir-ci.yml` is especially bad — every copy is unique, and at least one (`bofig`) is YAML-broken with literal `npermissions:` lines from a botched estate sweep.

What changes

Two new reusable workflows in `.github/workflows/`:

`rust-ci-reusable.yml`

  • Split jobs: `check` (cargo check + fmt + clippy) and `test` (cargo test). `test` `needs: check`.
  • `if: hashFiles('Cargo.toml')` guard on every job so the wrapper is safe to add to non-Rust repos.
  • Top-level + per-job `permissions: contents: read`.
  • Opt-in inputs:
    • `enable_audit` (default false — `cargo install cargo-audit` adds ~3-4 min per run)
    • `enable_coverage` (default false — tarpaulin + codecov upload)
    • `clippy_args` / `test_args` / `check_args` — per-repo overrides
    • `runs-on`

`elixir-ci-reusable.yml`

  • Two-cache layers (`deps` + `_build`), keyed by `elixir-version` + `mix.lock` hash.
  • `mix deps.compile` step BEFORE `mix compile --warnings-as-errors` so transitive-dep warnings (e.g. rustler's `:json.decode` requiring Elixir 1.18, deprecated `use Bitwise`) don't fail the strict gate. Validated against tma-mark2 ci(antipattern): fix top-level dir + benchmark/lsp filename matching #41 in commit `fa32c4f`.
  • Default `elixir-version: "1.17"` — the `1.15` default in the legacy template produced the `(Mix) … declared in its mix.exs file it supports only Elixir ~> 1.17` error tma-mark2 ci(antipattern): fix top-level dir + benchmark/lsp filename matching #41 lived.
  • Opt-in inputs:
    • `enable_dialyzer` (default false — slow cold-cache)
    • `enable_credo` (default true)
    • `otp-version` / `elixir-version` overrides
  • Guards every job on `hashFiles('mix.exs')`.

Downstream rollout

After merge, each of the 137 (Rust) / 9 (Elixir) repos can replace its local copy with a 5-line wrapper:

```yaml

.github/workflows/rust-ci.yml

name: Rust CI
on:
push: { branches: [main, master] }
pull_request:
permissions:
contents: read
jobs:
rust-ci:
uses: hyperpolymath/standards/.github/workflows/rust-ci-reusable.yml@main
```

Same shape as `governance.yml` → `governance-reusable.yml`, and the absolute-zero #41 + tma-mark2 #41 `deno-ci.yml` wrappers landed yesterday. Rollout can be fanned out per-repo.

Test plan

  • CI green on this PR (the reusables are workflow_call-only; their content gets exercised via the next PR that adopts them).
  • After merge, file 1-2 wrapper PRs against repos with known-red rust-ci CI as smoke tests (e.g., repos in the inbox triage that fail on `Workflow security linter` complaining about missing `permissions:`).
  • Confirm `enable_audit: true` works on a repo that opts in.

Extends the #168 pattern (deno-ci-reusable, language-policy in
governance-reusable) to two more high-drift workflow templates.

Estate audit 2026-05-26 (via gh api search/code):
  rust-ci.yml:    137 repos, 30 unique SHAs (high drift)
  elixir-ci.yml:  9 repos, 9 unique SHAs (100% drift; one corrupt YAML
                  with literal 'npermissions:' lines from a botched
                  permissions-injection sweep)

rust-ci-reusable.yml
  * Split jobs (check / test) + opt-in audit + opt-in coverage.
  * if: hashFiles('Cargo.toml') guard on every job.
  * Top-level + per-job permissions: contents: read.
  * Inputs: enable_audit, enable_coverage, clippy_args, test_args,
    check_args, runs-on.

elixir-ci-reusable.yml
  * Two-cache layers (deps + _build) keyed by elixir-version +
    mix.lock hash.
  * mix deps.compile step BEFORE mix compile --warnings-as-errors
    so upstream-dep warnings don't fail the strict gate. Validated
    against tma-mark2 #41 in commit fa32c4f.
  * Default elixir-version 1.17 (1.15 default in legacy template
    produced the (Mix) declared in mix.exs supports only Elixir
    ~> 1.17 error tma-mark2 hit).
  * Inputs: otp-version, elixir-version, enable_dialyzer,
    enable_credo, runs-on.

Downstream rollout (separate PRs, can be fanned out per-repo):
each repo carrying rust-ci.yml or elixir-ci.yml replaces it with a
5-line wrapper, same shape as governance.yml + the deno-ci wrappers
landed by absolute-zero #41 and tma-mark2 #41.

Refs #168 (the deno-ci precedent).
@github-actions
Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 122 issues detected

Severity Count
🔴 Critical 64
🟠 High 47
🟡 Medium 11

⚠️ Action Required: Critical security issues found!

View findings
[
  {
    "reason": "Action hyperpolymath/standards/.github/workflows/deno-ci-reusable.yml@main needs attention",
    "type": "unpinned_action",
    "file": "deno-ci-reusable.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "high"
  },
  {
    "reason": "Action hyperpolymath/standards/.github/workflows/elixir-ci-reusable.yml@main needs attention",
    "type": "unpinned_action",
    "file": "elixir-ci-reusable.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "high"
  },
  {
    "reason": "Action hyperpolymath/standards/.github/workflows/elixir-ci-reusable.yml@main needs attention",
    "type": "unpinned_action",
    "file": "elixir-ci-reusable.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "high"
  },
  {
    "reason": "Action hyperpolymath/standards/.github/workflows/governance-reusable.yml@main needs attention",
    "type": "unpinned_action",
    "file": "governance-reusable.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "high"
  },
  {
    "reason": "Action hyperpolymath/standards/.github/workflows/governance-reusable.yml@main needs attention",
    "type": "unpinned_action",
    "file": "governance.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "high"
  },
  {
    "reason": "Action hyperpolymath/standards/.github/workflows/rust-ci-reusable.yml@main needs attention",
    "type": "unpinned_action",
    "file": "rust-ci-reusable.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "high"
  },
  {
    "reason": "Action hyperpolymath/standards/.github/workflows/rust-ci-reusable.yml@main needs attention",
    "type": "unpinned_action",
    "file": "rust-ci-reusable.yml",
    "action": "pin_sha",
    "rule_module": "workflow_audit",
    "severity": "high"
  },
  {
    "reason": "Python file detected -- banned language",
    "type": "banned_language_file",
    "file": "/home/runner/work/standards/standards/a2ml-templates/state-scm-to-v2.py",
    "action": "flag",
    "rule_module": "cicd_rules",
    "severity": "critical"
  },
  {
    "reason": "TypeScript file detected -- banned language",
    "type": "banned_language_file",
    "file": "/home/runner/work/standards/standards/a2ml/bindings/deno/mod.ts",
    "action": "flag",
    "rule_module": "cicd_rules",
    "severity": "critical"
  },
  {
    "reason": "TypeScript file detected -- banned language",
    "type": "banned_language_file",
    "file": "/home/runner/work/standards/standards/lol/test/vitest.config.ts",
    "action": "flag",
    "rule_module": "cicd_rules",
    "severity": "critical"
  }
]

Powered by Hypatia Neurosymbolic CI/CD Intelligence

@hyperpolymath hyperpolymath enabled auto-merge (squash) May 26, 2026 08:21
This was referenced May 26, 2026
hyperpolymath added a commit to hyperpolymath/bqniser that referenced this pull request May 26, 2026
## Summary

Replaces the per-repo `rust-ci.yml` copy with a 5-line wrapper invoking
the shared reusable workflow filed in
[standards#174](hyperpolymath/standards#174).

Pinned to that PR's HEAD SHA
(`4fdf4314b4ab54269adbaff10e30e483b5e86845`); will resolve to
standards/main once #174 merges.

## Why

Estate audit found ~87 `rust-ci.yml` copies across the estate with
significant drift. Converting each to a 5-line wrapper means future Rust
CI changes propagate in one place.

This PR is part of the foundational sweep following the established
[standards#168](hyperpolymath/standards#168)
precedent (governance-reusable + absolute-zero#41 + tma-mark2#41
wrappers).

Variant: **trivial** ("baseline check + clippy + fmt + test")

## Test plan

- [ ] CI: `rust-ci` job invokes the reusable and reports the same checks
- [ ] Awaiting standards#174 merge before this becomes useful long-term
(still works today via SHA pin)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit to hyperpolymath/hesiod-dns-map that referenced this pull request May 26, 2026
## Summary

Replaces the per-repo `rust-ci.yml` copy with a 5-line wrapper invoking
the shared reusable workflow filed in
[standards#174](hyperpolymath/standards#174).

Pinned to that PR's HEAD SHA
(`4fdf4314b4ab54269adbaff10e30e483b5e86845`); will resolve to
standards/main once #174 merges.

## Why

Estate audit found ~87 `rust-ci.yml` copies across the estate with
significant drift. Converting each to a 5-line wrapper means future Rust
CI changes propagate in one place.

This PR is part of the foundational sweep following the established
[standards#168](hyperpolymath/standards#168)
precedent (governance-reusable + absolute-zero#41 + tma-mark2#41
wrappers).

Variant: **trivial** ("baseline check + clippy + fmt + test")

## Test plan

- [ ] CI: `rust-ci` job invokes the reusable and reports the same checks
- [ ] Awaiting standards#174 merge before this becomes useful long-term
(still works today via SHA pin)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit to hyperpolymath/natsci-studio that referenced this pull request May 26, 2026
## Summary

Replaces the per-repo `rust-ci.yml` copy with a 5-line wrapper invoking
the shared reusable workflow filed in
[standards#174](hyperpolymath/standards#174).

Pinned to that PR's HEAD SHA
(`4fdf4314b4ab54269adbaff10e30e483b5e86845`); will resolve to
standards/main once #174 merges.

## Why

Estate audit found ~87 `rust-ci.yml` copies across the estate with
significant drift. Converting each to a 5-line wrapper means future Rust
CI changes propagate in one place.

This PR is part of the foundational sweep following the established
[standards#168](hyperpolymath/standards#168)
precedent (governance-reusable + absolute-zero#41 + tma-mark2#41
wrappers).

Variant: **trivial** ("baseline check + clippy + fmt + test")

## Test plan

- [ ] CI: `rust-ci` job invokes the reusable and reports the same checks
- [ ] Awaiting standards#174 merge before this becomes useful long-term
(still works today via SHA pin)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit to hyperpolymath/panic-attack that referenced this pull request May 26, 2026
## Summary

Replaces the per-repo `rust-ci.yml` copy with a 5-line wrapper invoking
the shared reusable workflow filed in
[standards#174](hyperpolymath/standards#174).

Pinned to that PR's HEAD SHA
(`4fdf4314b4ab54269adbaff10e30e483b5e86845`); will resolve to
standards/main once #174 merges.

## Why

Estate audit found ~87 `rust-ci.yml` copies across the estate with
significant drift. Converting each to a 5-line wrapper means future Rust
CI changes propagate in one place.

This PR is part of the foundational sweep following the established
[standards#168](hyperpolymath/standards#168)
precedent (governance-reusable + absolute-zero#41 + tma-mark2#41
wrappers).

Variant: **trivial** ("baseline check + clippy + fmt + test")

## Test plan

- [ ] CI: `rust-ci` job invokes the reusable and reports the same checks
- [ ] Awaiting standards#174 merge before this becomes useful long-term
(still works today via SHA pin)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit to hyperpolymath/phronesiser that referenced this pull request May 26, 2026
## Summary

Replaces the per-repo `rust-ci.yml` copy with a 5-line wrapper invoking
the shared reusable workflow filed in
[standards#174](hyperpolymath/standards#174).

Pinned to that PR's HEAD SHA
(`4fdf4314b4ab54269adbaff10e30e483b5e86845`); will resolve to
standards/main once #174 merges.

## Why

Estate audit found ~87 `rust-ci.yml` copies across the estate with
significant drift. Converting each to a 5-line wrapper means future Rust
CI changes propagate in one place.

This PR is part of the foundational sweep following the established
[standards#168](hyperpolymath/standards#168)
precedent (governance-reusable + absolute-zero#41 + tma-mark2#41
wrappers).

Variant: **trivial** ("baseline check + clippy + fmt + test")

## Test plan

- [ ] CI: `rust-ci` job invokes the reusable and reports the same checks
- [ ] Awaiting standards#174 merge before this becomes useful long-term
(still works today via SHA pin)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit to hyperpolymath/proof-of-work that referenced this pull request May 26, 2026
## Summary

Replaces the per-repo `rust-ci.yml` copy with a 5-line wrapper invoking
the shared reusable workflow filed in
[standards#174](hyperpolymath/standards#174).

Pinned to that PR's HEAD SHA
(`4fdf4314b4ab54269adbaff10e30e483b5e86845`); will resolve to
standards/main once #174 merges.

## Why

Estate audit found ~87 `rust-ci.yml` copies across the estate with
significant drift. Converting each to a 5-line wrapper means future Rust
CI changes propagate in one place.

This PR is part of the foundational sweep following the established
[standards#168](hyperpolymath/standards#168)
precedent (governance-reusable + absolute-zero#41 + tma-mark2#41
wrappers).

Variant: **audit-cov** ("opts into cargo-audit + coverage")

## Test plan

- [ ] CI: `rust-ci` job invokes the reusable and reports the same checks
- [ ] Awaiting standards#174 merge before this becomes useful long-term
(still works today via SHA pin)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit to hyperpolymath/rpa-elysium that referenced this pull request May 26, 2026
## Summary

Replaces the per-repo `rust-ci.yml` copy with a 5-line wrapper invoking
the shared reusable workflow filed in
[standards#174](hyperpolymath/standards#174).

Pinned to that PR's HEAD SHA
(`4fdf4314b4ab54269adbaff10e30e483b5e86845`); will resolve to
standards/main once #174 merges.

## Why

Estate audit found ~87 `rust-ci.yml` copies across the estate with
significant drift. Converting each to a 5-line wrapper means future Rust
CI changes propagate in one place.

This PR is part of the foundational sweep following the established
[standards#168](hyperpolymath/standards#168)
precedent (governance-reusable + absolute-zero#41 + tma-mark2#41
wrappers).

Variant: **trivial** ("baseline check + clippy + fmt + test")

## Test plan

- [ ] CI: `rust-ci` job invokes the reusable and reports the same checks
- [ ] Awaiting standards#174 merge before this becomes useful long-term
(still works today via SHA pin)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit to hyperpolymath/ephapax that referenced this pull request May 26, 2026
## Summary

Replaces the per-repo `rust-ci.yml` copy with a 5-line wrapper invoking
the shared reusable workflow filed in
[standards#174](hyperpolymath/standards#174).

Pinned to that PR's HEAD SHA
(`4fdf4314b4ab54269adbaff10e30e483b5e86845`); will resolve to
standards/main once #174 merges.

## Why

Estate audit found ~87 `rust-ci.yml` copies across the estate with
significant drift. Converting each to a 5-line wrapper means future Rust
CI changes propagate in one place.

This PR is part of the foundational sweep following the established
[standards#168](hyperpolymath/standards#168)
precedent (governance-reusable + absolute-zero#41 + tma-mark2#41
wrappers).

Variant: **trivial** ("baseline check + clippy + fmt + test")

## Test plan

- [ ] CI: `rust-ci` job invokes the reusable and reports the same checks
- [ ] Awaiting standards#174 merge before this becomes useful long-term
(still works today via SHA pin)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit to hyperpolymath/januskey that referenced this pull request May 26, 2026
## Summary

Replaces the per-repo `rust-ci.yml` copy with a 5-line wrapper invoking
the shared reusable workflow filed in
[standards#174](hyperpolymath/standards#174).

Pinned to that PR's HEAD SHA
(`4fdf4314b4ab54269adbaff10e30e483b5e86845`); will resolve to
standards/main once #174 merges.

## Why

Estate audit found ~87 `rust-ci.yml` copies across the estate with
significant drift. Converting each to a 5-line wrapper means future Rust
CI changes propagate in one place.

This PR is part of the foundational sweep following the established
[standards#168](hyperpolymath/standards#168)
precedent (governance-reusable + absolute-zero#41 + tma-mark2#41
wrappers).

Variant: **trivial** ("baseline check + clippy + fmt + test")

## Test plan

- [ ] CI: `rust-ci` job invokes the reusable and reports the same checks
- [ ] Awaiting standards#174 merge before this becomes useful long-term
(still works today via SHA pin)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit to hyperpolymath/heterogenous-mobile-computing that referenced this pull request May 26, 2026
## Summary

Replaces the per-repo `rust-ci.yml` copy with a 5-line wrapper invoking
the shared reusable workflow filed in
[standards#174](hyperpolymath/standards#174).

Pinned to that PR's HEAD SHA
(`4fdf4314b4ab54269adbaff10e30e483b5e86845`); will resolve to
standards/main once #174 merges.

## Why

Estate audit found ~87 `rust-ci.yml` copies across the estate with
significant drift. Converting each to a 5-line wrapper means future Rust
CI changes propagate in one place.

This PR is part of the foundational sweep following the established
[standards#168](hyperpolymath/standards#168)
precedent (governance-reusable + absolute-zero#41 + tma-mark2#41
wrappers).

Variant: **audit-cov** ("opts into cargo-audit + coverage")

## Test plan

- [ ] CI: `rust-ci` job invokes the reusable and reports the same checks
- [ ] Awaiting standards#174 merge before this becomes useful long-term
(still works today via SHA pin)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit to hyperpolymath/snifs that referenced this pull request May 26, 2026
## Summary

Replaces the per-repo `rust-ci.yml` copy with a 5-line wrapper invoking
the shared reusable workflow filed in
[standards#174](hyperpolymath/standards#174).

Pinned to that PR's HEAD SHA
(`4fdf4314b4ab54269adbaff10e30e483b5e86845`); will resolve to
standards/main once #174 merges.

## Why

Estate audit found ~87 `rust-ci.yml` copies across the estate with
significant drift. Converting each to a 5-line wrapper means future Rust
CI changes propagate in one place.

This PR is part of the foundational sweep following the established
[standards#168](hyperpolymath/standards#168)
precedent (governance-reusable + absolute-zero#41 + tma-mark2#41
wrappers).

Variant: **trivial** ("baseline check + clippy + fmt + test")

## Test plan

- [ ] CI: `rust-ci` job invokes the reusable and reports the same checks
- [ ] Awaiting standards#174 merge before this becomes useful long-term
(still works today via SHA pin)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit to hyperpolymath/conative-gating that referenced this pull request May 26, 2026
## Summary

Replaces the per-repo `rust-ci.yml` copy with a 5-line wrapper invoking
the shared reusable workflow filed in
[standards#174](hyperpolymath/standards#174).

Pinned to that PR's HEAD SHA
(`4fdf4314b4ab54269adbaff10e30e483b5e86845`); will resolve to
standards/main once #174 merges.

## Why

Estate audit found ~87 `rust-ci.yml` copies across the estate with
significant drift. Converting each to a 5-line wrapper means future Rust
CI changes propagate in one place.

This PR is part of the foundational sweep following the established
[standards#168](hyperpolymath/standards#168)
precedent (governance-reusable + absolute-zero#41 + tma-mark2#41
wrappers).

Variant: **audit-cov** ("opts into cargo-audit + coverage")

## Test plan

- [ ] CI: `rust-ci` job invokes the reusable and reports the same checks
- [ ] Awaiting standards#174 merge before this becomes useful long-term
(still works today via SHA pin)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit to hyperpolymath/dafniser that referenced this pull request May 26, 2026
## Summary

Replaces the per-repo `rust-ci.yml` copy with a 5-line wrapper invoking
the shared reusable workflow filed in
[standards#174](hyperpolymath/standards#174).

Pinned to that PR's HEAD SHA
(`4fdf4314b4ab54269adbaff10e30e483b5e86845`); will resolve to
standards/main once #174 merges.

## Why

Estate audit found ~87 `rust-ci.yml` copies across the estate with
significant drift. Converting each to a 5-line wrapper means future Rust
CI changes propagate in one place.

This PR is part of the foundational sweep following the established
[standards#168](hyperpolymath/standards#168)
precedent (governance-reusable + absolute-zero#41 + tma-mark2#41
wrappers).

Variant: **trivial** ("baseline check + clippy + fmt + test")

## Test plan

- [ ] CI: `rust-ci` job invokes the reusable and reports the same checks
- [ ] Awaiting standards#174 merge before this becomes useful long-term
(still works today via SHA pin)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit to hyperpolymath/oblibeniser that referenced this pull request May 26, 2026
## Summary

Replaces the per-repo `rust-ci.yml` copy with a 5-line wrapper invoking
the shared reusable workflow filed in
[standards#174](hyperpolymath/standards#174).

Pinned to that PR's HEAD SHA
(`4fdf4314b4ab54269adbaff10e30e483b5e86845`); will resolve to
standards/main once #174 merges.

## Why

Estate audit found ~87 `rust-ci.yml` copies across the estate with
significant drift. Converting each to a 5-line wrapper means future Rust
CI changes propagate in one place.

This PR is part of the foundational sweep following the established
[standards#168](hyperpolymath/standards#168)
precedent (governance-reusable + absolute-zero#41 + tma-mark2#41
wrappers).

Variant: **trivial** ("baseline check + clippy + fmt + test")

## Test plan

- [ ] CI: `rust-ci` job invokes the reusable and reports the same checks
- [ ] Awaiting standards#174 merge before this becomes useful long-term
(still works today via SHA pin)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit to hyperpolymath/affinescriptiser that referenced this pull request May 26, 2026
## Summary

Replaces the per-repo `rust-ci.yml` copy with a 5-line wrapper invoking
the shared reusable workflow filed in
[standards#174](hyperpolymath/standards#174).

Pinned to that PR's HEAD SHA
(`4fdf4314b4ab54269adbaff10e30e483b5e86845`); will resolve to
standards/main once #174 merges.

## Why

Estate audit found ~87 `rust-ci.yml` copies across the estate with
significant drift. Converting each to a 5-line wrapper means future Rust
CI changes propagate in one place.

This PR is part of the foundational sweep following the established
[standards#168](hyperpolymath/standards#168)
precedent (governance-reusable + absolute-zero#41 + tma-mark2#41
wrappers).

Variant: **trivial** ("baseline check + clippy + fmt + test")

## Test plan

- [ ] CI: `rust-ci` job invokes the reusable and reports the same checks
- [ ] Awaiting standards#174 merge before this becomes useful long-term
(still works today via SHA pin)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…186)

## Summary

Stacked on #174. Adds a `working_directory` string input (default `.`)
to both reusable workflows so wrappers can target a sub-crate or sub-app
layout without re-implementing the workflow.

## What changes

**rust-ci-reusable.yml:**
- New `working_directory` input (default `.`)
- Each job declares `defaults.run.working-directory: ${{
inputs.working_directory }}`
- `hashFiles('Cargo.toml')` guards now use
`hashFiles(format('{0}/Cargo.toml', inputs.working_directory))`
- Swatinem/rust-cache `workspaces:` parameter passes the working
directory so caches are keyed per sub-crate

**elixir-ci-reusable.yml:**
- New `working_directory` input (default `.`)
- Job declares `defaults.run.working-directory`
- `mix.exs` and `mix.lock` lookups + cache `path:` entries all consult
the input via `format()`

## Why

Audit of the 6 remaining elixir-ci.yml consumers + the 5 complex
rust-ci.yml consumers (as of 2026-05-26):

**elixir (3 of 6 need this):**
- burble → `server/`
- feedback-o-tron → (working-directory)
- verisimdb → (working-directory)

**rust (1 of 5 needs this; the rest use matrix dimensions):**
- reasonably-good-token-vault → per-crate (`vault-broker`, `rgtv-cli`)

## Explicitly out of scope

Multi-OS / multi-Rust-version / multi-crate matrices and `cross build`
support are deferred. The 4 matrix-using rust-ci repos each use a
**different** matrix dimension (`os` / `rust` / `workspaces` /
`manifests`) — no single shared abstraction fits cleanly. They stay
bespoke for now; re-evaluate after the current wrapper sweep completes.

| Repo | Matrix dimension |
|---|---|
| julia-the-viper | `os` (linux/macos/windows) |
| verisimiser | `rust` (1.85, stable) |
| reasonably-good-token-vault | `crate` (multi-workspace — covered by
`working_directory` per-job) |
| verisimdb | `manifest` (fuzz/Cargo.toml + rust-core/fuzz/Cargo.toml) +
coverage + audit |

## Test plan

- [x] YAML parse OK locally (python3 yaml.safe_load both files)
- [ ] CI on this PR — but circular-validation caveat applies (per #174
PR description) — `pull_request` runs target-branch workflow, not the
PR's
- [ ] Owner merge order: #174 → this PR (this is stacked on
`feat/rust-ci-reusable`; GitHub will retarget to `main` automatically
once #174 merges)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit to hyperpolymath/eclexiaiser that referenced this pull request May 26, 2026
## Summary

Replaces the per-repo `rust-ci.yml` copy with a 5-line wrapper invoking
the shared reusable workflow filed in
[standards#174](hyperpolymath/standards#174).

Pinned to that PR's HEAD SHA
(`4fdf4314b4ab54269adbaff10e30e483b5e86845`); will resolve to
standards/main once #174 merges.

## Why

Estate audit found ~87 `rust-ci.yml` copies across the estate with
significant drift. Converting each to a 5-line wrapper means future Rust
CI changes propagate in one place.

This PR is part of the foundational sweep following the established
[standards#168](hyperpolymath/standards#168)
precedent (governance-reusable + absolute-zero#41 + tma-mark2#41
wrappers).

Variant: **trivial** ("baseline check + clippy + fmt + test")

## Test plan

- [ ] CI: `rust-ci` job invokes the reusable and reports the same checks
- [ ] Awaiting standards#174 merge before this becomes useful long-term
(still works today via SHA pin)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit to hyperpolymath/reposystem that referenced this pull request May 26, 2026
## Summary

Replaces the per-repo `rust-ci.yml` copy with a 5-line wrapper invoking
the shared reusable workflow filed in
[standards#174](hyperpolymath/standards#174).

Pinned to that PR's HEAD SHA
(`4fdf4314b4ab54269adbaff10e30e483b5e86845`); will resolve to
standards/main once #174 merges.

## Why

Estate audit found ~87 `rust-ci.yml` copies across the estate with
significant drift. Converting each to a 5-line wrapper means future Rust
CI changes propagate in one place.

This PR is part of the foundational sweep following the established
[standards#168](hyperpolymath/standards#168)
precedent (governance-reusable + absolute-zero#41 + tma-mark2#41
wrappers).

Variant: **trivial** ("baseline check + clippy + fmt + test")

## Test plan

- [ ] CI: `rust-ci` job invokes the reusable and reports the same checks
- [ ] Awaiting standards#174 merge before this becomes useful long-term
(still works today via SHA pin)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit to hyperpolymath/wokelang that referenced this pull request May 26, 2026
## Summary

Replaces the per-repo `rust-ci.yml` copy with a 5-line wrapper invoking
the shared reusable workflow filed in
[standards#174](hyperpolymath/standards#174).

Pinned to that PR's HEAD SHA
(`4fdf4314b4ab54269adbaff10e30e483b5e86845`); will resolve to
standards/main once #174 merges.

## Why

Estate audit found ~87 `rust-ci.yml` copies across the estate with
significant drift. Converting each to a 5-line wrapper means future Rust
CI changes propagate in one place.

This PR is part of the foundational sweep following the established
[standards#168](hyperpolymath/standards#168)
precedent (governance-reusable + absolute-zero#41 + tma-mark2#41
wrappers).

Variant: **trivial** ("baseline check + clippy + fmt + test")

## Test plan

- [ ] CI: `rust-ci` job invokes the reusable and reports the same checks
- [ ] Awaiting standards#174 merge before this becomes useful long-term
(still works today via SHA pin)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.

1 participant