Skip to content

docs(spec): retarget PageSchema source TSDoc to canonical kind==='html' - #10536

Merged
qq9340100 merged 1 commit into
mainfrom
claude/issue-10437-page-source-tsdoc-alias
Aug 21, 2026
Merged

docs(spec): retarget PageSchema source TSDoc to canonical kind==='html'#10536
qq9340100 merged 1 commit into
mainfrom
claude/issue-10437-page-source-tsdoc-alias

Conversation

@qq9340100

Copy link
Copy Markdown
Collaborator

Fixes#10437

What

packages/spec/src/ui/page.zod.ts, the TSDoc block above source, keyed the
JSX-source-of-truth rule (ADR-0080) to the deprecated kind === 'jsx' alias:

JSX-source authoring (ADR-0080). When `kind === 'jsx'`, `source` is the
source-of-truth: a constrained JSX text compiled by ...

source's own .describe() (the string that ships to
content/docs/references/ui/page.mdx) and kind's own .describe() both state
the canonical value is 'html', with 'jsx' a deprecated alias. The TSDoc is
the in-editor hover text for the property, so it was teaching authors the
legacy spelling.

Fix

One-line retarget of the TSDoc to the canonical value, matching the describe's
own phrasing:

JSX-source authoring (ADR-0080). When `kind === 'html'` (alias `'jsx'`),
`source` is the source-of-truth: a constrained JSX text compiled by ...

Nothing else in the block, the .describe() strings, the schema, or the
superRefine changed.

Scope verification

  • Re-synced to main after PR docs(spec): name the real per-tier styling primitive on PageSchema kind/source #10436 (same file) merged; re-found the TSDoc
    block at the same line (565) on the merged ref — the card's premise held.
  • Confirmed the TSDoc sentence does not appear in
    content/docs/references/ui/page.mdx (grep, no match) — matches the card's
    claim that this block does not project into the generated reference, so no
    check:generated/docs regen is expected from this change.

Verification (at f94c13b56)

  • pnpm --filter @objectstack/spec typecheck — pass
  • pnpm --filter @objectstack/spec test -- --maxWorkers=2 — 416 files / 11092 tests passed
  • pnpm --filter @objectstack/spec run check:generated — all 14 generated artifacts up to date (check:docs clean — confirms no page.mdx regen, per the card's own claim)
  • node scripts/pm/dispatch-gates.mjs (no paths, at final commit) — local gate list unchanged from dispatch time; all matched:
    check:cross-package-test-inputs, check:doc-formula-expressions, check:empty-state,
    check:liveness, check:merge-driver, check:slot-lookup, check:spec-parsed-alias,
    check:strictness-ledger, check:type-source-resolution, check:variant-docs,
    check-cross-package-test-inputs.mjs, check-affected-docs.mjs — all pass
  • check:nul-bytes — clean
  • scripts/check-dev-prereqs.mjs (repo-wide "workspace built" precondition, all 67 packages) not run locally — out of scope for a one-line TSDoc change under directed local-verification scope; CI builds the full farm regardless.

Changeset

Comment-only TSDoc change (in-editor hover text), no schema/describe/behavior
change — no user-facing published change. Routed via the skip-changeset
label per the #10168 JSDoc precedent instead of a changeset file.


Generated by Claude Code

The TSDoc block above `source` keyed the JSX-source-of-truth rule
(ADR-0080) to the deprecated `kind === 'jsx'` alias, while source's own
`.describe()` and kind's own `.describe()` both state the canonical
value is 'html' with 'jsx' a deprecated alias. The TSDoc is the
in-editor hover text, so it was teaching authors the legacy spelling.
Retarget the TSDoc to the canonical value, matching the describe's own
phrasing. One-line change; describe strings, schema, and superRefine
untouched.
Fixes#10437
Co-Authored-By: Claude Code <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016gcKVsiywU9CcS96S5t9qD
@qq9340100qq9340100 added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Aug 21, 2026 — with Claude
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 1 package(s): @objectstack/spec, touching 1 documentable anchor(s).

1 hand-written doc(s) NAME something this change touched and may need an implementation-accuracy re-verification:

  • content/docs/protocol/objectui/layout-dsl.mdx(via PageSchema (symbol))
What this run could not see
  • the SDK route bridge reached 45 of 221 client-bound route-ledger rows — the other 176 have no registrar path: tail to select them, so pages documenting THEIR client methods cannot appear above, on this or any run: node scripts/docs-audit/affected-docs.mjs --bridge-coverage

Coarse fallback — 122 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json 359f5956d7910aed7ae9f8fccc9fbb988b3e4882packageMentionDocs.

Which tree this was computed on

This run read content/docs from 8248786622dea7445cac47ebf4fe1f687042e0f0 — the merge of head f94c13b56c6b015a01866c622f64d4cc128d26f0 into base 359f5956d7910aed7ae9f8fccc9fbb988b3e4882, which is what actions/checkout gives a pull_request run. Not the PR head.

A worktree cut from an older main holds a different content/docs, so re-deriving there can legitimately return a different list — that is a different tree, not a wrong row. To answer on the same tree:

# while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 8248786622dea7445cac47ebf4fe1f687042e0f0 && git checkout 8248786622dea7445cac47ebf4fe1f687042e0f0
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 359f5956d7910aed7ae9f8fccc9fbb988b3e4882 f94c13b56c6b015a01866c622f64d4cc128d26f0 && git checkout -B drift-repro 359f5956d7910aed7ae9f8fccc9fbb988b3e4882 && git merge --no-ff f94c13b56c6b015a01866c622f64d4cc128d26f0
node scripts/docs-audit/affected-docs.mjs --json 359f5956d7910aed7ae9f8fccc9fbb988b3e4882

⚠️ That checkout carried uncommitted changes, so the commit above does not fully identify what was read.

Advisory only, and a precision-first one (#9192): a page is listed because it names a
symbol, wire route or SDK method this diff touched — not because it mentions a changed
package. Each row says which anchor put it there, so a wrong row is reportable rather than
merely annoying. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs 359f5956d7910aed7ae9f8fccc9fbb988b3e4882 → pass the list as
args.docs, on the commit named under Which tree this was computed on.

@qq9340100
qq9340100 marked this pull request as ready for review August 21, 2026 04:01
@qq9340100
qq9340100 added this pull request to the merge queueAug 21, 2026
Merged via the queue into main with commit 3ea4d3fAug 21, 2026
36 checks passed
@qq9340100
qq9340100 deleted the claude/issue-10437-page-source-tsdoc-alias branch August 21, 2026 04:25
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

protocol:uisize/xsskip-changesetPR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

spec: PageSchema's source TSDoc still keys its rule to the deprecated kind === 'jsx' alias, while the describe says kind==='html'

2 participants

@qq9340100@claude