You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
finding(docs): #5867's population is derived from plaintext fences only, so a TS block fenced text is invisible to both the gate and the batch lane #6135
Filed unassigned by #5867's batch 4 dev while re-deriving the population. Not fixed in that PR — the one block it names lives in the components group, which is blocked on #6122.
The measurement
#5867's card, its reproduction, and every batch's derivation (1, 2, 3 and 4) collect plaintext fences and apply triage's classifier to the body. Re-running batch 4's derivation on origin/main133e2ea1e with the fence-language set widened to plaintext + text + plain, and nothing else changed, moves the total by exactly one:
It passes triage's classifier unmodified — first line starts with interface — so by the binding triage ruling it is code. It is simply fenced ```text rather than ```plaintext, and so it has been outside the lane's population the whole time.
Why this is worth a card rather than a silent widening
⛔ This is not a request to widen triage's classifier — that ruling is binding and untouched here. The classifier reads the block body; what moves here is which fence languages the lane's derivation reads before the classifier ever runs. Those are two different edges, and only the first one was ruled.
It is also the same shape as the card's own dedupe table, which lists four independent coverage axes on this gate (directory #5465, file extension #5174, fence language json #5250, fence language plaintext #5867). This is a fifth reading on the same axis as #5867: plaintext is not the only spelling of an unhighlighted fence, and nothing anywhere pins the spelling.
Consequences, both measured rather than predicted:
The lane under-counts. Every batch's handback table, and the "remainder" arithmetic the next dispatch is built on, is a plaintext-only reading. Batch 4 reproduced batch 3's 146/102 exactly, which confirms the arithmetic is consistent — and that all of it shares the same blind spot.
B. Leave the lane on plaintext and take this block under whichever card eventually covers content/docs/components/form/. Keeps the batch arithmetic stable, at the cost of one block nobody is tracking.
C. Fold it into the future fence-language guard the card defers (its "separate follow-up, not a rider"), so the guard pins the allowed spellings rather than the lane chasing them.
Recommendation: A, then C. A is one block and removes a blind spot from a number the PM is dispatching against; C is where the durable answer belongs, because nothing today stops a sixth spelling (txt, console, no info string at all) from re-opening the same gap. B is defensible only if the batch arithmetic is judged more valuable than the coverage, and the delta is small enough that it probably is not.
⚠️ Whoever takes this: content/docs/components/form/file-upload.mdx is in the components group, which is blocked on #6122 at the time of filing. Check that first.
Reproduction
Batch 4's derivation, which uses the gate's own listDocuments and its own fence-run-length walk, differing only in the fence language collected:
node -e "…" # walk content/docs, collect fences whose info string is
# plaintext | text | plain, apply triage's classifier to the body
Toggle the language set between plaintext and plaintext,text,plain and diff the totals: 146/102 versus 147/103.
Refs: #5867 (the parent lane) · #6122 (blocks the file this names) · #5044 (the class) · #5250 / #5174 / #5465 (the sibling coverage axes).
Filed unassigned by #5867's batch 4 dev while re-deriving the population. Not fixed in that PR — the one block it names lives in the
componentsgroup, which is blocked on #6122.The measurement
#5867's card, its reproduction, and every batch's derivation (1, 2, 3 and 4) collect
plaintextfences and apply triage's classifier to the body. Re-running batch 4's derivation onorigin/main133e2ea1ewith the fence-language set widened toplaintext+text+plain, and nothing else changed, moves the total by exactly one:plaintext(what every batch has used)plaintext+text+plainThe one block the wider set adds:
It passes triage's classifier unmodified — first line starts with
interface— so by the binding triage ruling it is code. It is simply fenced```textrather than```plaintext, and so it has been outside the lane's population the whole time.Why this is worth a card rather than a silent widening
⛔ This is not a request to widen triage's classifier — that ruling is binding and untouched here. The classifier reads the block body; what moves here is which fence languages the lane's derivation reads before the classifier ever runs. Those are two different edges, and only the first one was ruled.
It is also the same shape as the card's own dedupe table, which lists four independent coverage axes on this gate (directory
#5465, file extension#5174, fence language json#5250, fence language plaintext#5867). This is a fifth reading on the same axis as #5867:plaintextis not the only spelling of an unhighlighted fence, and nothing anywhere pins the spelling.Consequences, both measured rather than predicted:
plaintext-only reading. Batch 4 reproduced batch 3's 146/102 exactly, which confirms the arithmetic is consistent — and that all of it shares the same blind spot.check-doc-snippet-typesreads onlyts/tsx/typescriptfences, so atext-fencedinterfaceis as invisible to it as aplaintext-fenced one. This is exactly the finding: 两个结构不兼容的CalendarEvent同名并存(@object-ui/types授权型 vs@object-ui/plugin-calendar运行时型),已造成一处文档示例不可编译 #5044 class the card was filed about, one spelling over.What this card is asking for
A ruling on the population definition, not an implementation:
textandplainas synonyms ofplaintextfor the remainder of finding(docs): TypeScript examples fenced as plaintext escape check-doc-snippet-types — 211 blocks in 122 files, and #5044 proved one of them taught a type error under a gate that reports the file as covered #5867's batches, and re-state the remainder once with the wider set. Cheapest; the delta measured today is one block.plaintextand take this block under whichever card eventually coverscontent/docs/components/form/. Keeps the batch arithmetic stable, at the cost of one block nobody is tracking.Recommendation: A, then C. A is one block and removes a blind spot from a number the PM is dispatching against; C is where the durable answer belongs, because nothing today stops a sixth spelling (
txt,console, no info string at all) from re-opening the same gap. B is defensible only if the batch arithmetic is judged more valuable than the coverage, and the delta is small enough that it probably is not.content/docs/components/form/file-upload.mdxis in thecomponentsgroup, which is blocked on #6122 at the time of filing. Check that first.Reproduction
Batch 4's derivation, which uses the gate's own
listDocumentsand its own fence-run-length walk, differing only in the fence language collected:Toggle the language set between
plaintextandplaintext,text,plainand diff the totals: 146/102 versus 147/103.Refs: #5867 (the parent lane) · #6122 (blocks the file this names) · #5044 (the class) · #5250 / #5174 / #5465 (the sibling coverage axes).