Found while implementing #9092 (re-deriving the os compile / os validate transcripts from real runs). Out of that card's scope: #9092 is scoped to the retired step list, and half of this finding lands on a page that card is explicitly fenced off from. Filed unassigned.
Measured
Two pages share one Support Desk fixture and both print the same stats line in their os validate transcript:
Both show:
Data: 1 Objects 6 Fields
UI: 1 Apps 1 Views 1 Actions
But build-with-claude-code.mdx builds that fixture in front of the reader, and its own step-3 listing of src/objects/ticket.object.ts declares four fields — subject, description, priority, status. stats.fields in printMetadataStats (packages/cli/src/utils/format.ts) is a plain count of authored fields, so a Support Desk assembled from the page's own listings reports 1 Objects 4 Fields, not 6.
Verified by rebuilding the fixture from the page's three listings plus a Support-nav app and running the CLI built at origin/main:
✓ Validation passed (131ms)
Support Desk v0.1.0
Data: 1 Objects 4 Fields
UI: 1 Apps 1 Views 1 Actions
Runtime: 3 plugins
Two separate discrepancies fall out of that run:
6 Fields vs 4 Fields. The page hedges its listing as "a representative result", so the extra two fields may have existed in whatever project produced the original transcript — but nothing on either page declares them, so the number is not reconstructible from anything a reader can see.- The
Runtime: 3 plugins line is absent from both pages. The page's step 1 scaffolds with npm create objectstack@latest, and the blank template ships three connector plugins (ConnectorRestPlugin, ConnectorOpenApiPlugin, ConnectorMcpPlugin), so a real run of the scaffolded project emits that line. Both transcripts stop after the UI: line.
Why this is the same defect class as #9092
A transcript is a reproduction of program output. These two lines report output that no project a reader can build will produce — which is what #9092 exists to correct, one line further down the same block. #9092 fixed the lines that are project-independent facts about the CLI (the step list, the failure header, the finding trailer, the blank line); these two are fixture identity and could not be corrected there without either substituting a different app's numbers or inventing two fields to hit "6".
Suggested shape (for triage, not a decision)
The clean fix is one job, not two: stand up the Support Desk fixture once — either checked into examples/ or fully specified on the page — and re-derive all three clean-run blocks from that single run, so the two pages agree because they came from the same program execution rather than because someone kept two numbers in sync by hand. Doing it per-page would just relocate the drift.
Note the coupling: the two pages currently agree with each other. Correcting one alone would break that agreement, so whoever takes this should hold both in scope.
For triage
Generated by Claude Code
Found while implementing #9092 (re-deriving the
os compile/os validatetranscripts from real runs). Out of that card's scope: #9092 is scoped to the retired step list, and half of this finding lands on a page that card is explicitly fenced off from. Filed unassigned.Measured
Two pages share one Support Desk fixture and both print the same stats line in their
os validatetranscript:content/docs/getting-started/build-with-claude-code.mdx— clean-run blockcontent/docs/deployment/validating-metadata.mdx— clean-run block (this one was corrected by docs: the sampleos validatetranscript on validating-metadata.mdx prints a stale author-time rule count (38 shown, registry holds more) #9034 earlier today; the stats line was not part of that fix)Both show:
But
build-with-claude-code.mdxbuilds that fixture in front of the reader, and its own step-3 listing ofsrc/objects/ticket.object.tsdeclares four fields —subject,description,priority,status.stats.fieldsinprintMetadataStats(packages/cli/src/utils/format.ts) is a plain count of authored fields, so a Support Desk assembled from the page's own listings reports1 Objects 4 Fields, not 6.Verified by rebuilding the fixture from the page's three listings plus a Support-nav app and running the CLI built at
origin/main:Two separate discrepancies fall out of that run:
6 Fieldsvs4 Fields. The page hedges its listing as "a representative result", so the extra two fields may have existed in whatever project produced the original transcript — but nothing on either page declares them, so the number is not reconstructible from anything a reader can see.Runtime: 3 pluginsline is absent from both pages. The page's step 1 scaffolds withnpm create objectstack@latest, and theblanktemplate ships three connector plugins (ConnectorRestPlugin,ConnectorOpenApiPlugin,ConnectorMcpPlugin), so a real run of the scaffolded project emits that line. Both transcripts stop after theUI:line.Why this is the same defect class as #9092
A transcript is a reproduction of program output. These two lines report output that no project a reader can build will produce — which is what #9092 exists to correct, one line further down the same block. #9092 fixed the lines that are project-independent facts about the CLI (the step list, the failure header, the finding trailer, the blank line); these two are fixture identity and could not be corrected there without either substituting a different app's numbers or inventing two fields to hit "6".
Suggested shape (for triage, not a decision)
The clean fix is one job, not two: stand up the Support Desk fixture once — either checked into
examples/or fully specified on the page — and re-derive all three clean-run blocks from that single run, so the two pages agree because they came from the same program execution rather than because someone kept two numbers in sync by hand. Doing it per-page would just relocate the drift.Note the coupling: the two pages currently agree with each other. Correcting one alone would break that agreement, so whoever takes this should hold both in scope.
For triage
content/docs/getting-started/build-with-claude-code.mdx,content/docs/deployment/validating-metadata.mdx. Docs-only.content/docs/releases/**stays out of scope as always.Generated by Claude Code