open-standards/.github/workflows/jouleclaw-public-surface-documented.yml
Transaction Science 6cdc923813
Some checks failed
wai cross-architecture byte-equality / windows-x86_64 (push) Successful in 31s
wai cross-architecture byte-equality / linux-aarch64 (push) Successful in 1m7s
joule-code conformance gate / Build + round-trip C1-C4 vectors (push) Failing after 1m24s
WAI conformance / cargo-class corpora · windows (push) Successful in 1m13s
WAI conformance / cross-arch byte-equality · windows (push) Successful in 22s
jouleclaw public surface must stay documented / Public-surface audit (jouleclaw-rs) (push) Successful in 1m4s
wai cross-architecture byte-equality / linux-x86_64 (push) Successful in 22s
WAI conformance / cargo-class corpora · linux-arm64 (push) Successful in 2m4s
WAI conformance / cargo-class corpora · linux (push) Successful in 36s
WAI conformance / cross-arch byte-equality · linux (push) Successful in 21s
WAI conformance / cross-arch byte-equality · linux-arm64 (push) Successful in 1m16s
WAI neural decoders end-to-end / synthetic fixtures → Rust decode → reference (±4) (push) Failing after 1m17s
wai cross-architecture byte-equality / macos-arm64 (reference) (push) Successful in 5m56s
WAI conformance / cargo-class corpora · macos (push) Successful in 12m7s
WAI conformance / cross-arch byte-equality · macos (push) Successful in 36s
ci: bump hardcoded toolchain pins 1.97.1 → 1.98.0
Five workflows install an exact toolchain instead of deferring to
rust-toolchain.toml (wai-conformance, wai-neural-e2e, wai-byte-equality,
joule-code-conformance, jouleclaw-public-surface-documented). Align them with the
now-uniform 1.98.0 dev/root pin so CI builds the same compiler as the dev box.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-08-26 07:41:56 -04:00

71 lines
2.9 KiB
YAML

name: jouleclaw public surface must stay documented
# Regression-prevention gate for jouleclaw-rs. The brownfield
# onramp (`cargo run -p jouleclaw-brownfield --example
# scan_self`) walks every crate, infers reasons for every
# public function (docs / name pattern / error-handling
# signal), and reports those whose best-available reason is
# Lost. After the 219 → 0 curation pass that closed the
# initial baseline, every new `pub fn` is expected to ship
# with the same minimal `///` doc, OR be downgraded to
# `pub(crate)` if it isn't part of the consumer-visible
# surface. The `--fail-on-lost` flag exits non-zero when any
# public-surface Lost reason remains, so this workflow is a
# permanent safety net against drift.
on:
# Manual re-run, so a transient runner/setup failure (which surfaces as a red
# "audit" even though the audit itself never ran) can be retried without a
# code change.
workflow_dispatch:
pull_request:
paths:
- 'jouleclaw/jouleclaw-rs/**'
- '.github/workflows/jouleclaw-public-surface-documented.yml'
push:
branches:
- main
paths:
- 'jouleclaw/jouleclaw-rs/**'
- '.github/workflows/jouleclaw-public-surface-documented.yml'
jobs:
scan:
name: Public-surface audit (jouleclaw-rs)
runs-on: linux
steps:
- name: Checkout
uses: actions/checkout@v4
# Bootstrap rustup: the docker runner image ships no Rust, and
# dtolnay/rust-toolchain cannot help — it calls `rustup`, which is absent.
- name: Install Rust 1.98.0
run: |
export PATH="$HOME/.cargo/bin:$PATH"
command -v rustup >/dev/null 2>&1 || \
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.0
rustup toolchain install 1.98.0 --profile minimal
rustup default 1.98.0
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
- name: Cache cargo registry + target
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
jouleclaw/jouleclaw-rs/target
key: ${{ runner.os }}-cargo-brownfield-${{ hashFiles('jouleclaw/jouleclaw-rs/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-brownfield-
- name: Run brownfield self-scan with --fail-on-lost
working-directory: jouleclaw/jouleclaw-rs
run: |
set -euo pipefail
if ! cargo run -q -p jouleclaw-brownfield --example scan_self -- --fail-on-lost; then
echo "::error::Public-surface Lost > 0 — jouleclaw-rs has undocumented public functions."
echo "::error::Fix by adding a `///` doc comment above each flagged `pub fn`, OR by downgrading to `pub(crate)` if it isn't consumer-visible."
echo "::error::Run locally with: cargo run -p jouleclaw-brownfield --example scan_self"
exit 1
fi