Skip to content

ci(afm): gate wasm + playground build at PR time; harden docs rustdoc#41

Merged
P4suta merged 3 commits into
mainfrom
ci/afm-pr-time-wasm-gate
May 30, 2026
Merged

ci(afm): gate wasm + playground build at PR time; harden docs rustdoc#41
P4suta merged 3 commits into
mainfrom
ci/afm-pr-time-wasm-gate

Conversation

@P4suta

@P4suta P4suta commented May 30, 2026

Copy link
Copy Markdown
Owner
  • Add a PR-time wasm-build job (needs: check) running just wasm-build
    • just playground-build. afm-wasm and the Vite playground were built
      only post-merge in docs.yml, so a wasm-pack / playground break stayed
      invisible until it blocked the Pages deploy — now it fails the PR.
      Mirrors aozora's PR-time wasm job. (aozora's native cross-target jobs —
      wasip1 / aarch64 / ffi / pandoc / wheel — are correctly NOT ported.)
  • Add RUSTDOCFLAGS: "-D warnings" to docs.yml's cargo doc step as
    defense-in-depth for the deploy build.

This gate verifies afm-wasm BUILDS; whether it should be PUBLISHED to npm
(vs build-from-source for sibling hosts) is an open owner decision, out of
scope here.

Stacked on #38; retarget to main once that merges.

🤖 Generated with Claude Code

P4suta and others added 3 commits May 31, 2026 04:04
Mirror of the sibling aozora fix. The cargo-target / cargo-registry /
cargo-git / sccache named volumes were mounted at
/workspace/{target,.cargo,.sccache} — nested inside the `.:/workspace`
source bind mount. Because the dev container runs as root, the Docker
daemon created those host-side mountpoints (./target, ./.cargo,
./.sccache) as root, littering the working tree with root-owned dirs and
breaking any host-side cargo invocation.

Move all four caches to /cargo/* (CARGO_HOME=/cargo/home,
CARGO_TARGET_DIR=/cargo/target, SCCACHE_DIR=/cargo/sccache) — outside the
bind mount. The daemon no longer touches the host tree and the checkout
stays clean. The named volumes still persist the caches between runs. The
build-time rustup override (CARGO_HOME=/usr/local/cargo for the fuzz
stage's nightly install) is unaffected.

Verified: `docker compose run dev` leaves the host ./target absent.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The pre-push hook ran only `test` / `deny` / `prop-deep` (in parallel),
even though the repo already owns an 18-step `just ci` recipe — so a push
could still introduce a lint / check / doc / spec / coverage /
upstream-diff / verify-version-pins / book regression that only surfaced
on the PR. Mirror the sibling aozora repo: run `just ci` sequentially
(cheap-to-expensive) with `prop-deep` as a trailing deep sweep, and drop
the now-redundant standalone `test` / `deny`.

Also bring over aozora's lefthook DX: an explicit `output:` block so
failures stay loud across lefthook version bumps, and a `fail_text:` on
every command with a concrete repro hint (matches the project's
dev-visibility / "no silent death" posture). `prop-deep` is tagged `deep`
for `SKIP_TAGS=deep` opt-out.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…tdoc

- Add a PR-time `wasm-build` job (needs: check) that runs `just wasm-build`
  + `just playground-build`. afm-wasm and the Vite playground were built
  only post-merge in docs.yml, so a wasm-pack or playground regression
  stayed invisible until it blocked the Pages deploy. Now it fails the PR.
  Mirrors the sibling aozora repo's PR-time wasm-build job. (Native
  cross-target jobs aozora has — wasip1 / aarch64 / ffi / pandoc / wheel —
  are correctly NOT ported: afm has no such crates.)
- Add `RUSTDOCFLAGS: "-D warnings"` to docs.yml's `cargo doc` step as
  defense-in-depth, so the deploy build can't ship a doc regression even
  if the ci.yml `doc` gate is ever weakened.

Note: this gate verifies afm-wasm BUILDS; whether afm-wasm should also be
PUBLISHED to npm (vs build-from-source for sibling hosts) remains an open
owner decision and is intentionally out of scope here.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Base automatically changed from ci/lefthook-pre-push-mirror to main May 30, 2026 19:49
@P4suta P4suta merged commit b49fac6 into main May 30, 2026
@P4suta P4suta deleted the ci/afm-pr-time-wasm-gate branch May 30, 2026 19:58
@P4suta P4suta restored the ci/afm-pr-time-wasm-gate branch June 1, 2026 14:35
@P4suta P4suta deleted the ci/afm-pr-time-wasm-gate branch June 1, 2026 15:03
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