A maintainer decision, raised by PR #526 (#425) and deliberately not taken there.
What #526 established, and how far
#526 corrected the README crates table. One row (gamut-dsp) had been derived faithfully from
crates/gamut-dsp/STATUS.md:67, which lists the jpeg module under "Deferred / tracked
follow-ups" — while crates/gamut-dsp/src/lib.rs:43 declares pub mod jpeg and
crates/gamut-dsp/src/jpeg/dct.rs ships fdct8x8/idct8x8. The row was true to the file and
false about the crate.
#526 settled it for its own deliverable: where a crate STATUS.md contradicts its lib.rs,
lib.rs wins — a claim must be true of the crate, not merely faithful to a file. That rule now
appears in three places, all of which #526 owns: the guard script header, the failure message a
contributor reads when the guard fires, and the mise.toml task description
(tooling/check-readme-crates/run.sh, mise.toml [tasks.check-readme-crates]).
The open question
Generalising that ordering to every documented claim in the repository — AGENTS.md, each
crate README.md, docs.rs module docs, Cargo.toml descriptions, STATUS.md — is a larger claim
than one README table established, and it is a maintainer call, not a lane one. So #526 put the
rule where the tooling speaks and filed this instead of editing AGENTS.md.
Reasons to take it repository-wide:
Reasons to hesitate:
STATUS.md is forward-looking in a way lib.rs is not: it records intent, disposition and
what is deliberately out of scope. "lib.rs wins" is right for "does this exist", and says
nothing about "is it finished" or "is it supported" — a pub item can exist and still be
unstable.
- The rule as written is about capability claims. Making it universal risks reading it as
"documentation is descriptive only", which is not what STATUS.md is for.
Scope
Acceptance
Either AGENTS.md states the authority order with its limits, or a written decision records why
the rule stays local to the crates-table guard.
Refs #425, #526, #545, #560.
A maintainer decision, raised by PR #526 (#425) and deliberately not taken there.
What #526 established, and how far
#526 corrected the README crates table. One row (
gamut-dsp) had been derived faithfully fromcrates/gamut-dsp/STATUS.md:67, which lists thejpegmodule under "Deferred / trackedfollow-ups" — while
crates/gamut-dsp/src/lib.rs:43declarespub mod jpegandcrates/gamut-dsp/src/jpeg/dct.rsshipsfdct8x8/idct8x8. The row was true to the file andfalse about the crate.
#526 settled it for its own deliverable: where a crate
STATUS.mdcontradicts itslib.rs,lib.rswins — a claim must be true of the crate, not merely faithful to a file. That rule nowappears in three places, all of which #526 owns: the guard script header, the failure message a
contributor reads when the guard fires, and the
mise.tomltask description(
tooling/check-readme-crates/run.sh,mise.toml[tasks.check-readme-crates]).The open question
Generalising that ordering to every documented claim in the repository —
AGENTS.md, eachcrate
README.md, docs.rs module docs,Cargo.tomldescriptions,STATUS.md— is a larger claimthan one README table established, and it is a maintainer call, not a lane one. So #526 put the
rule where the tooling speaks and filed this instead of editing
AGENTS.md.Reasons to take it repository-wide:
STATUS.mdfiles assertwhat their crates contradict) and gamut-av1 and gamut-avif publish crate descriptions that their own source contradicts #560 (a
Cargo.tomldescription and a module doc assert whattheir own source contradicts) are both instances, found in one pass.
Reasons to hesitate:
STATUS.mdis forward-looking in a waylib.rsis not: it records intent, disposition andwhat is deliberately out of scope. "
lib.rswins" is right for "does this exist", and saysnothing about "is it finished" or "is it supported" — a
pubitem can exist and still beunstable.
"documentation is descriptive only", which is not what
STATUS.mdis for.Scope
disposition claims.
AGENTS.mdand let the three sites docs(readme): correct the crates table against each crate STATUS.md, and gate it #526 added cite it rather thanrestate it.
STATUS.mdlisting asdeferred a module its
lib.rsdeclarespubis a grep, not a judgement call.Acceptance
Either
AGENTS.mdstates the authority order with its limits, or a written decision records whythe rule stays local to the crates-table guard.
Refs #425, #526, #545, #560.