Repository navigation
docs: re-fence the plugins and core remainder of objectui#5867 as ts, 17 blocks across 8 pages (batch 6) - #11176
Conversation
…s and core remainder (objectui#5867 batch 6) Every block in content/docs/plugins/** and content/docs/core/report-schema.mdx that triage's classifier reads as code is now fenced ts, so check-doc-snippet-types compiles it. The gate then reddened four blocks, and each is fixed rather than marked: - plugin-gantt.mdx annotated an object-gantt node as ObjectGridSchema, whose type literal is 'object-grid' (TS2322). It now uses ObjectGanttSchema, the type every other example on the page already imports. - report-schema.mdx's ReportSection and scheduling blocks referenced SchemaNode, ChartSchema, ReportField and ReportExportFormat without importing them (TS2304); each block now imports what it names. - the scheduling block declared an interface named ReportSchedule, a name no package exports; the shipped name is ReportScheduleConfig. - the Complete Example annotated ReportComponentSchema without importing it. Claude-Session: https://claude.ai/code/session_01TdiauJaVCHuj45EzZGUxHh Co-authored-by: Claude <noreply@anthropic.com>
|
changeset-claim-re-read
|
|
One red, and what clears it.
|
…e-fenced (#5867) Batch 6 re-fenced every TypeScript block on core/report-schema.mdx and the seven plugin pages, so their shrink-only baseline rows now read as STALE. Delete exactly those 8 rows and add nothing. check:doc-fences is green over 72 remaining files / 72 blocks (the batch-7 remainder), and the checker's self-test passes (26 cases). Claude-Session: https://claude.ai/code/session_01TdiauJaVCHuj45EzZGUxHh Co-authored-by: Claude <noreply@anthropic.com>
|
|
…batch6 Brings in objectui#11210 (the computed strip reason), the repair for the Spec Main Shape Gate red that every objectui run carried since objectstack b2805465. A pull_request re-run compiles its original merge ref, so the base has to come in as a commit. Claude-Session: https://claude.ai/code/session_01TdiauJaVCHuj45EzZGUxHh Co-authored-by: Claude <noreply@anthropic.com>
Contract reviewServed-tier: Read-only, as the brief prescribes: card objectui#5867 (body and all 26 comments), PR #11176 (body, its 3 comments including the changeset-claim-re-read bot comment 5905479659, the 9-file list and the net diff against the merge base ① Derived judgments
② Semver levelThe diff publishes nothing from any released package: 8
③ Boundary flags
No flag is left unanswered and none needs escalation. Implemented-by: VERDICT: PASS |
Part of #5867
Clause-②: no. Docs fences only; no accept set and no public surface moves.
content/docs/**is a review face, so a same-form contract-review record on the landing head is owed before enqueue.Batch 6 of objectui#5867's lane (a whole-page batch; the card stays open for batch 7). Every TypeScript block under
content/docs/plugins/**andcontent/docs/core/report-schema.mdxthat triage's classifier reads as code was fencedplaintext, socheck-doc-snippet-typesnever compiled it. All 17 are now fencedts. The gate then reddened 4 blocks; each is fixed so the example teaches correct code, and none is marked.Session:
https://claude.ai/code/session_01TdiauJaVCHuj45EzZGUxHhDoc Fence Language Check: the 8 stale ledger rows are deleted (52f1267)check:doc-fenceskeeps objectui#5867's remaining population as the shrink-only mapKNOWN_UNHIGHLIGHTED_TS_FENCESinscripts/check-doc-fence-languages.mjs. It fails as STALE when a batch re-fences blocks without lowering the map in the same pull request.On
73b9ae9it flagged exactly the 8 pages this batch re-fenced:core/report-schema.mdx(7), andplugins/plugin-calendar(1),-chatbot(2),-dashboard(3),-gantt,-kanban,-mapand-timeline(1 each).Commit
52f1267deletes exactly those 8 rows and adds nothing. The auto-mode classifier had refused the edit to the dev twice. The domain:devx seat made it on the maintainer's explicit authorization in the seat session, after auto mode was turned off.At
52f1267:node scripts/check-doc-fence-languages.mjs: exit 0. "every TypeScript block in 227 document(s) is fenced ts/tsx/typescript, except 72 declared file(s) carrying 72 block(s) of objectui#5867's remaining population", which is the batch-7 remainder below.--self-test: 26 cases pass.The batch: 17 blocks, 8 whole files
content/docs/core/report-schema.mdxcontent/docs/plugins/plugin-calendar.mdxcontent/docs/plugins/plugin-chatbot.mdxcontent/docs/plugins/plugin-dashboard.mdxcontent/docs/plugins/plugin-gantt.mdxcontent/docs/plugins/plugin-kanban.mdxcontent/docs/plugins/plugin-map.mdxcontent/docs/plugins/plugin-timeline.mdxThe count of self-declared interface blocks is kept separate, per triage's execution note 2 (#6143 closed
not_planned). Six of the 17 blocks are report-schema'sinterfacelistings: ReportField, ReportFilter, ReportGroupBy, ReportSection, ReportExportConfig and ReportScheduleConfig. They compile because they declare their own shape, so the gate's green on them is not coverage, and they were not re-shaped. The other 11 blocks are real coverage. The 10 plugins blocks import real exports from@object-ui/types,@object-ui/coreand the plugin packages. The report-schema Complete Example annotates a literal with the importedReportComponentSchema.I also ran a throwaway parity probe outside the gate. It compared each of the six self-declared interfaces with the shipped type of the same name, for mutual assignability and an identical key set: tsc exit 0, so all six match today. Two must-fail controls each went red (exit 2): a flipped member value, and a dropped member. Nothing re-runs this probe, so it holds only for this head.
What the gate reddened, and the fixes
Round 1 was the re-fence alone, before any content edit: exit 1,
Semantic phase: 696 of 696 block(s) judged, 4 failed.TS2322: Type '"object-gantt"' is not assignable to type '"object-grid"'. The block annotated anobject-ganttnode asObjectGridSchema. It now usesObjectGanttSchema, which declarestype: 'object-gantt'andgantt?: GanttConfig, and which every other example on the page already imports. This is the objectui#5044 class: a reader copying the block wrote code that does not compile.TS2304onSchemaNode(twice),ChartSchemaandReportField. The block now imports them from@object-ui/types.TS2304onReportExportFormat, now imported. The block also declaredinterface ReportSchedule, a name that no package exports. The shipped name isReportScheduleConfig, and it is renamed. The gate could not see that fabricated name, because a self-declared interface compiles under any name.TS2304onReportComponentSchema, now imported.Hazard 1 (an unresolved name degrades the annotation to
any). After the import, the Complete Example compiled clean. That alone does not prove the annotation is live, so I ran an ablation withablation-replace.mjs. The anchor hit 1 to 0 and the blob changed. The run was restored under a trap: blob equal to HEAD,git diff HEADempty.frequency: 'monthly'was changed to'fortnightly'. Result: exit 1,TS2322: Type '"fortnightly"' is not assignable to type 'ReportScheduleFrequency | undefined'.So the annotation is live.refreshIntervalasrefreshIntervall. Result: exit 0,0 failed.ReportComponentSchemaextendsBaseSchema, which carries an open index signature, so this block checks values on declared members and nested closed types, but not the spelling of top-level keys. That is finding(docs): component reference pages declare their owninterface, so the doc-snippet gate can never see the props they invent — 4 measured on the 5 pages #6122 PR 2 touched alone #6143's measured property, restated for this one block.Hazard 2 (a parse failure hides the semantic phase).
Syntax phase: every block parsedheld on every run, so no block went uncompiled because it failed to parse.Gate counts, before and after
Both readings run
check-doc-snippet-types.mjsagainst the same built--build-filterclosure (35/35 turbo tasks). The build filter was re-derived after the re-fence and is byte-identical.0ffc423b173b9ae9At head:
Every covered documentation snippet compiles against the built types.Population, re-derived on
mainat0ffc423b1(triage note 1)The snippet gate's own
listDocuments(249 documents) was combined with the fence gate's run-length fence walk and triage's classifier, quoted there asclassifiesAsTypeScript. The fence gate's install-free copy of the walk lists 227 documents. The difference is the snippet gate's own extra legs, and the two walks give the same population.plaintextonlytext+plain(the objectui#6135 widening)txt+ no info stringThe widening adds exactly one block,
content/docs/components/form/file-upload.mdx(atextfence). By group: components 72/72, plugins 10/7, core 7/1, fields / layout / blocks 0. The handbacks'UNGATED_DOCSrow is now 0.UNGATED_DOCSnames only four ADR and audit records today, so the six plugin pages earlier batches listed as ungated are covered, and re-fencing them moved blocks-to-compile.Remainder for batch 7, measured at
73b9ae9: 72 blocks / 72 files, allcontent/docs/components/**All 72 open with
interface, so the whole remainder is in the #6143 own-interface count. A throwaway probe (all 72 re-fenced, gate run, restored under a trap withgit statusclean) gave:768 to compile(696 + 72, so every re-fence landed in the population), every block parsed,768 of 768 judged, 28 failed. All 70 diagnostics are TS2304 ambient names:SchemaNodex61,Dayx8,ReactNodex1.SchemaNodex4 files,ReactNodein data-table)Dayx8, a prose alias no package exports)components/basic/text.mdxis excluded while PR #11069 touches it.file-upload.mdxcarries its own labelled line in the fence map.Verification (all at
73b9ae9, tree clean; heavy runs through the shared verify lock; exit codes captured by redirect before any pipe)check-doc-snippet-types: exit 0, counts above.check:doc-fences: exit 1, the 8 STALE entries above and nothing else.check:doc-types: exit 0,Every documented component type is registered.check:doc-examples: exit 0,Every covered @example compiles, or fails exactly as its ledger row declares.docs:check-links: exit 0,Links are valid across 17 scan roots.check-doc-example-ids,check-prompt-component-keys,check:docs-route-closure: exit 0 each.check:control-bytes: exit 0,OK (scanned 9534 tracked text file(s); skipped 85 binary). A self-scan of the 8 changed files for control bytes had 0 hits.check:new-line-citations:0 new citation(s).check-changeset-presence.mjsexit 0,No source or published contract of a released package changed in this range, so no changeset is owed.No changeset file is added.markdown-test-inputs.mjs --list, which covers every tree-widecontent/docs/**reader plus each page's named readers, and agit grepfor the 8 page names. Root vitest, never package-scoped:Test Files 32 passed (32),Tests 1077 passed (1077).--format jsonon the 8 files gives 8 results, 0 errors, and 8File ignored because no matching configuration was supplied, becauseeslint.config.jsmatches only**/*.{ts,tsx}. Type-aware linting is off (noproject/projectService), so this diff cannot change the verdict on any untouched file. Repo-widepnpm lintis left to CI.tsfences through the same highlighter.plugin-dashboard.mdxheld none before, but the same pipeline renderstson the 128 other covered documents that hold one. This is a reasoned expectation, not a reading.Acceptance notes
text/plainadd exactly 1 block, andplain,txtand the empty info string add 0.ReportSchedulerename and the ganttObjectGridSchemacorrection are both changes a reader would copy. Neither was visible to any gate before this batch.Generated by Claude Code