Skip to content

gate: rustdoc private-link errors surface one dependency layer at a time — try --keep-going on doc-warnings #1835

Description

@macanderson

Problem

make doc-warnings (RUSTDOCFLAGS="-D warnings" cargo doc --workspace --no-deps, Makefile line ~220) and the CI cargo doc -D warnings step abort scheduling new units once one crate fails to document. A dependent crate's check (rmeta) succeeds, so its own doc errors exist but are never reached — they surface only in the NEXT run, after the first layer is fixed.

This bit on 2026-08-06: main went red with two private-intra-doc-link errors in crates/stella-core/src/loop_detect.rs (from #1775). Four parallel unbreak PRs were opened (#1822, #1823, #1829, #1830); the first three fixed only the visible stella-core layer and went red again on two more errors the abort had masked — TRIAGE_STRUCTURE_CHARS in crates/stella-pipeline/src/triage.rs and diff_accountable_mutator in crates/stella-pipeline/src/witness/warrant.rs. Only #1830 (which fixed both crates) unbroke main.

Proposed fix

Add --keep-going to the doc-warnings target and the matching CI step. Documenting a dependent crate needs only its dependencies' rmeta (from Checking), not their successful doc output, so --keep-going should let every workspace crate's doc unit run and report ALL private-link errors in one pass. (Hypothesis — verify it, see below.)

Verify

  1. On a scratch branch, reintroduce a private intra-doc link in a public doc comment in stella-core AND one in stella-pipeline (e.g. revert the relevant hunks of docs(stella-core,stella-pipeline): unbreak main — drop rustdoc links to private items #1830).
  2. Run RUSTDOCFLAGS="-D warnings" cargo doc --workspace --no-deps --keep-going and confirm BOTH crates' errors appear in a single run, and the exit code is nonzero.
  3. If the hypothesis fails (dependent doc units genuinely wait on dep doc units), close this with that finding recorded.

Constraints

  • doc-warnings honours CARGO_SCOPE (Pre-push gate and CI run the full workspace for a single-crate diff #1135) — keep that working.
  • The Makefile gate block in AGENTS.md/CONTRIBUTING.md is guarded by gate-parity (scripts/check-gate-parity.sh); a flag change inside a step should not trip it, but run make gate-parity to confirm.
  • CI's required job (.github/workflows/ci.yml) has its own doc step — change both in the same PR.

Done when

A PR that breaks rustdoc in two crates at different dependency depths shows both errors in one doc-warnings run, locally and in CI.

Metadata

Metadata

Assignees

Labels

P1Important — next in linearea:ciGitHub Actions, release pipeline, packaging

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions