Skip to content

Commit 99150ec

Browse files
claude[bot]claude
andauthored
feat(qa-checklist): flag an area-level recipe no item references (#11847)
`check:platform-checklist` resolved `fixtures.provisioning.use` forwards only. The reverse direction — a recipe nobody opts into — was deliberately deferred while cross-area reuse had no spelling: flagging it then would have settled that open convention by accident, in the direction of "recipes are area-local". The maintainer's option-A ruling of 2026-08-22 (#10593 gap 2, landed in #11508) discharged that reason. Every legitimate consumer can now express itself as a `use` from any area, so a recipe with no `use` pointing at it is unambiguously dead text rather than possibly-referenced-from-prose. Three definitional edges are decided rather than left to the reader: - a reference from a `retired` item still counts. The forward direction runs on every item regardless of status, so a retired item's `use` must resolve and its recipe must exist; an active-only reading would make the two directions mutually unsatisfiable the moment a recipe's last consumer retired; - the direction is suppressed while any `use` dangles, so one typo cannot also accuse the correct recipe it was aiming at; - no waiver spelling is invented — the population needing one is zero, and the failure names the two remedies that exist (give it a consumer, or delete it). All four recipes on the ledger are referenced by seven items, so this direction's subject population is zero and stays that way on a healthy ledger. That makes its green uninformative on its own, so the 19-assertion positive control runs inline on every invocation, like the trap-vocabulary and resolve controls beside it. Claude-Session: https://claude.ai/code/session_015ahemw8RcTgqtxrj15PEZx Co-authored-by: Claude <noreply@anthropic.com>
1 parent a1c804b commit 99150ec

2 files changed

Lines changed: 280 additions & 21 deletions

File tree

‎docs/qa/platform-checklist/README.md‎

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -199,14 +199,27 @@ the exact qualified spelling to write. This is option C on #7716's open question
199199
deferred at #7720 while the recipe shape lived in a single area and landed at #10593
200200
once it had spread to three areas and six references.
201201

202-
One thing the resolve deliberately does **not** do:
203-
204-
- **It does not flag a recipe no item references.** It was left out while cross-area
205-
reuse had no spelling, because redding it would have answered that question by
206-
accident in the direction of "recipes are area-local". With the qualified spelling
207-
ruled, that reason has expired and an unreferenced recipe is unambiguously dead text —
208-
but turning the direction on is its own change with its own blast radius, tracked at
209-
#11506 rather than folded in here.
202+
The resolve runs in **both directions** (#11506). As well as every `use` naming a real
203+
recipe, **every recipe must be named by some `use`** — a recipe nobody opts into is dead
204+
text a runner may still replay, and it fails the gate against the area file that owns it.
205+
The reverse direction was deferred while cross-area reuse had no spelling (redding it
206+
then would have answered that question by accident, in the direction of "recipes are
207+
area-local"); the 2026-08-22 ruling above discharged that reason, because every
208+
legitimate consumer can now express itself as a `use` from any area.
209+
210+
Three things worth knowing before you meet it:
211+
212+
- **A reference from a `retired` item still counts.** "Referenced" means referenced by
213+
any item, not by an active one — a retired item's `use` must still resolve, so its
214+
recipe must still exist. The two directions would otherwise be mutually unsatisfiable
215+
the moment a recipe's last consumer retired.
216+
- **It stays quiet while any `use` dangles.** A misspelt reference means the consumer
217+
graph is incomplete, so the run reports the dangling reference only — a typo must not
218+
also accuse the correct recipe it was aiming at.
219+
- **There is no waiver.** The two answers are: give the recipe a consumer (from this area
220+
or, qualified, from any other), or delete it. If you ever have a recipe that genuinely
221+
should be kept with no consumer, that case is the moment to decide the spelling — file
222+
it rather than working around the gate (#10885 may answer it as a retired recipe).
210223

211224
⚠️ Remember the cadence: this gate is **not** CI-wired (above), so it catches a typo'd
212225
`use` at the next manual run, not on the PR that introduced it. Copy the key, don't retype it.

0 commit comments

Comments
 (0)