Skip to content

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

Description

@yinlianghui-tw

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:

fence-language setpopulation
plaintext (what every batch has used)146 blocks / 102 files
plaintext + text + plain147 blocks / 103 files

The one block the wider set adds:

content/docs/components/form/file-upload.mdx:27 [text] interface FileUploadSchema {

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:

  1. 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.
  2. The block escapes the gate for the same reason the card exists.check-doc-snippet-types reads only ts / tsx / typescript fences, so a text-fenced interface is as invisible to it as a plaintext-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:

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).

Metadata

Metadata

Labels

domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repopm:dispatchedtooling

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions