Uh oh!
There was an error while loading. Please reload this page.
docs(api): record the os:check decision for client-sdk.mdx, and fence its JSX as tsx - #12045
Merged
Merged
Conversation
… its JSX as tsx The page has 13 TypeScript fences and 0 os:check markers. Marking them was measured rather than assumed: all 13 marked at once produce 128 diagnostics and not one is a doc-vs-SDK divergence. Two structural reasons, neither fixable on this page: - content/docs/** belongs to check:skill-examples' "skills + docs" surface, whose paths map derives from @objectstack/spec alone, and spec does not depend on @objectstack/client. Every fence importing the SDK reds TS2307. - The remaining fences are deliberate continuation fragments sharing the Quick Start's `client`, so they red TS2304. Making either class compile would mean hand-declaring the SDK's own types or injecting casts into prose whose subject is the real API. Also retags the React Hooks block tsx (it is JSX). The gate writes each block out with its fence's extension, so as `typescript` a marker on it produced only TS1xxx syntax errors -- and tsc never runs the semantic pass after those, which suppressed type-checking for every marked block across skills/ and content/docs/ (measured: 128 semantic diagnostics collapse to 0). check:doc-authoring accepts tsx, so the block stays visible to it. Part of #11942 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UjM2ia8Av1v5NqfqQEQmC6
This was referenced Aug 25, 2026
yinlianghui
marked this pull request as ready for review
August 25, 2026 07:00
This was referenced Aug 25, 2026
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #11942
Why this is not "13 markers"
The card's scope was: opt the page's fences into
check:skill-examples, compile, and repaireach red honestly, on the premise that "each red is a real doc-vs-SDK divergence, not a marker
problem."
Measured, that premise does not hold: not one of the 13 reds is a doc-vs-SDK divergence.
All 13 fences were marked, the gate run, and the tree reverted. Result: 128 diagnostics, zero
divergences, in two structural classes neither of which this page can fix.
Class 1 — the docs surface cannot resolve the SDK (3 fences)
check:skill-examplescompiles per surface.content/docs/**belongs to theskills + docs (@objectstack/spec)surface, whoseresolutionDirandpathsmap derive from@objectstack/specalone — and@objectstack/specdoes not depend on@objectstack/client(confirmed: neither
packages/spec/node_modules/@objectstack/nor the rootnode_modules/@objectstack/exists).Marking the single most self-contained fence on the page — a pure
createFilter()builder chainthat is unambiguously correct SDK code — yields:
That is a surface-resolution gap, not drift. The only real fix is adding
@objectstack/clienttothat surface's
selfPackages, i.e. editing the gate — explicitly out of scope for this card.This is not a new observation:
content/docs/kernel/runtime-services/data-service.mdxalreadyrecords the identical constraint in prose, for the identical reason, and leaves its own SDK block
deliberately unmarked.
Class 2 — deliberate continuation fragments (10 fences)
Quick Start establishes
const client = new ObjectStackClient(...)once; every later fencecontinues that implied context. Marking them reds with 93 x TS2304
Cannot find name 'client',plus TS18004 (
conversationId,messages,userId,orderId,recordId), TS18046 (errorisunknownin acatch), TS2591 (process) and TS7006.Making these compile means hand-declaring the SDK's own types or injecting casts into prose whose
subject is the real API — which pins each example to itself and teaches worse code than the page
teaches now. The card forbids editing a correct example into something that merely compiles.
What this PR does deliver
1. It records the decision. The issue's actual claim is that "nobody has decided, page by
page, which side of that line each block is on." This PR decides it for this page and writes the
measurement down, as a contributor-facing MDX comment (renders to nothing), following the
data-service.mdxprecedent. The next agent reads the answer instead of re-deriving it.2. It defuses a measured landmine. The React Hooks block is JSX but was fenced as
typescript.The gate writes each block out with its fence's own extension, so a marker on it produced only
TS1xxx syntax errors — and
tscstops at syntax errors and never runs the semantic pass. Measuredconsequence, on this page:
typescripttypescripttsxOne mis-tagged fence suppresses type-checking for every marked block across
skills/andcontent/docs/— 227 blocks — not just this page. Retagging ittsxis correct on its own terms(the block is JSX) and converts a whole-surface blackout into honest per-block diagnostics.
check:doc-authoring'sFENCE_OPENacceptstsx, so the block stays visible to it.The marker becomes available here the day the docs surface can resolve
@objectstack/client.Verification
Baseline and final are identical and unchanged, as intended — this PR adds no markers:
All 20 gate families derived at the final commit
c84df2983bynode scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack(no hand-written path list),plus
check:nul-bytesandcheck:skill-examples— 22/22 green, each exit code captured beforeany pipe. MDX parse confirmed by compiling the page with the workspace's own
@mdx-js/mdx@3.1.1.Docs-only; no published package changes, so
skip-changesetrather than a changeset.Every mutation run above was performed under an
EXIT INT TERMrestore trap, with the marker counton disk asserted before each run and the tree confirmed pristine after.
Generated by Claude Code