Skip to content

finding(gate): the repo-root docs/ tree is in no doc gate's scan surface — measured, it would report 40 diagnostics, 26 of them in the governed docs/adr/** #7856

Description

@os-sam

Measured while fixing objectui#7838, which asked for this number rather than an estimate. Filed as the shape of the next card; objectui#7838 deliberately changed no gate's population, because moving one is a change that carries its own ruling — objectui#7115 needed a dedicated card and a whole UNGATED_DOCS ledger entry to bring the root README.md in.

The gap, re-verified at 8507a2283

The repo-root docs/ tree is read by no documentation gate:

  • scripts/check-doc-snippet-types.mjslistDocuments() walks content/docs (its DOCS_ROOT), the per-app docs trees, packages/NAME/README.md, and ROOT_PAGES = ['README.md']. No repo-root docs/.
  • scripts/check-readme-exports.mjs — its own census line prints 43 tracked README(s) under packages/ (0 outside any package).
  • lint:root — literally --ignore-pattern 'docs/**' in the root package.json script.
  • check:doc-fences and check:doc-types root at content/docs plus the same app/package trees.

So docs/*.md is an authored-documentation directory that nothing judges. objectui#7838 is the third phantom-teaching site found in it by hand.

How big the tree is

17 markdown files, of which 5 hold any ts/tsx fenced block, 10 blocks total:

docs/ARCHITECTURE.md                                     5 blocks
docs/adr/0001-master-detail-subform.md                   2
docs/adr/0036-field-conditional-rules.md                 1
docs/adr/0057-console-ai-chat-one-conversation-docked.md 1
docs/audits/2026-07-objectview-detailview-schema.md      1

What it would report — measured, not estimated

Run over the gate's own analyze() / derivePackageTypePaths() / deriveDeclaredDependencyPaths() / compileSnippets(), against the gate's own build closure (pnpm exec turbo run build $(node scripts/check-doc-snippet-types.mjs --build-filter) --concurrency=2, 34/34 tasks successful), with the docs/ tree substituted for the document list. All 27 imported workspace packages were built, so this is a result and not an unmet prerequisite.

40 diagnostics, and the split is the interesting part:

count
syntax phase (blocks that do not parse as TSX at all) 21
semantic phase 19
total 40
subtree diagnostics
docs/adr/** 26
docs/*.md 11
docs/audits/** 3

By code: TS1005 x11, TS1109 x9, TS7031 x5, TS2304 x4, TS7006 x3, TS2552 x2, TS2323 x2, TS2393 x2, TS1011 x1, TS7053 x1.

⚠️ Tens of diagnostics is itself the answer to "why was it never added"

Half of the total (21) is the syntax phase: three files carry pseudo-code in ts/tsx fences that does not parse as TypeScript at all — docs/adr/0001-master-detail-subform.md alone accounts for 15. Those are not import defects; they are prose-shaped blocks in a code fence, and the gate's fragment-marker escape hatch would have to be applied to each before the tree could go green.

And 26 of the 40 sit in docs/adr/**, which is a governed surface (node scripts/check-governed-queue-guard.mjs --test docs/adr/0001-master-detail-subform.md). A card that brings the whole tree in is therefore partly a governed-surface change, which is a materially different review route from the rest of docs/.

Suggested shape for the card

Two cards, not one, and in this order:

  1. docs/*.md only (the two top-level files, 11 diagnostics, ungoverned). Small enough to pay down or declare, and it is where the three phantom-teaching sites were actually found.
  2. docs/adr/** and docs/audits/** separately, as a governed-surface card, where the honest first move is probably declaring the pseudo-code blocks as fragments rather than making them compile.

Either card must bring its own UNGATED_DOCS ledger entry or its own declaration, exactly as objectui#7115 did for the root README — the ledger is re-derived and never trusted, so an entry that names no live measurement fails the gate's own stale-ungated-entry check.

Related: objectui#7838 (found it), objectui#7417 / PR objectui#7836 (the root README's equivalent), objectui#7115 (the precedent for moving a doc gate's population), objectui#7854 (three more wrong names in the same ungated files).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repofindingpm:queuepm:retriageQuestion for triage, answered each fire; coexists with the standing pm:* label; no dispatch

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions