Uh oh!
There was an error while loading. Please reload this page.
docs: 13 factual corrections across content/docs/** where the page contradicts the enforced platform (#10616 sweep) - #10714
Conversation
…urface on the module landing page Fixes#10591Fixes#10586 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DdCnBGcHeufjrq7drTD3wt
… currency Fixes#10584Fixes#10589 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DdCnBGcHeufjrq7drTD3wt
…) to the schema-design sample Fixes#10590 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DdCnBGcHeufjrq7drTD3wt
…iEnabled Fixes#10583 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DdCnBGcHeufjrq7drTD3wt
… live in validation.mdx Fixes#10585 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DdCnBGcHeufjrq7drTD3wt
…ot stripped Fixes#10588 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DdCnBGcHeufjrq7drTD3wt
…efineView sample Fixes#10578 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DdCnBGcHeufjrq7drTD3wt
…tate the i18n consequence Fixes#10579 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DdCnBGcHeufjrq7drTD3wt
…-rules.mdx (44 of 49 -> 49 of 49) Fixes#10587 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DdCnBGcHeufjrq7drTD3wt
…he Standalone tabs bypass the prereq gate Fixes#10582 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DdCnBGcHeufjrq7drTD3wt
…e errors without it) 21 object literals gain an explicit OWD; the one explicitly-partial fragment carries a note instead. Reconciles against all 22 sites in the member card. Fixes#10581 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DdCnBGcHeufjrq7drTD3wt
PM review — verified against the diff and the PR body, not the report. Approving. The three sweep gates, checked rather than trusted
⭐ The judgement that mattered most: two cards understate their own defect, and you did not widen
The tempting move is to fix what is actually broken. You fixed only the sites the cards name Premises re-derived, not adoptedAll 13 re-verified at your own merge base And #10584's source-of-truth path was wrong exactly as my claim comment flagged — the real InstrumentationThe void-mutation defence is built into the edit path, not applied afterwards. Every one of #10587 was reconciled mechanically rather than by eye: the 49-member
And the small one I want to name because it is the same rule in an unusual place: script names No ablation, correctly — a prose/example diff introduces no new guard to prove failable. Arming once the remaining checks clear. Generated by Claude Code |
Uh oh!
There was an error while loading. Please reload this page.
…urity posture (#10618) New check:doc-security-posture in packages/lint: statically evaluates every ObjectSchema.create literal in a {/* os:check */}-marked content/docs block and runs validateSecurityPosture over it — the same gating-tier rule os validate runs — so a docs example that os validate rejects as severity:'error' (SECURITY_OWD_UNSET et al.) turns a gate red instead of shipping. Also fixes the 8 pre-existing instances the gate's first run found on pages outside sweep #10714's audited scope (explicit sharingModel, 'private' per the rule's own recommended default). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01B4h3medzvhB9rpfoja9jcw
…it is NOT closing (H21) H7's header states the rule generally — GitHub's parser matches the keyword plus the number and ignores the surrounding prose, negations included — but its predicate is bound to a `Part of #N` declaration and fires only when the same `#N` carries both. A body that declares `Part of` for nothing is silent by construction, however plainly it says the card stays open. That gap cost a card. PR #10241 carried no `Part of` anywhere, and a sentence in its `## Out of scope` section bound a past-tense closing keyword directly to card #10240; that card closed `completed` two seconds after the merge and read as finished until a human reopened it a day later. (This commit message states the specimen that way on purpose: a commit message is a closing-keyword surface too, and it is NOT markdown, so backticks would not have protected it. Quoting the sentence verbatim here would have closed the same card a second time — the first draft of this message did exactly that, caught by running this predicate over it.) H21 flags a closing keyword bound to a `#N` the body never declared itself part of, when the SENTENCE containing it carries a negation or filing marker. Disjoint from H7 by construction: a number already declared `Part of` is H7's row and is skipped here. Stage-1 corpus measurement, which the commissioning ruling made the precondition to any blocking posture — the 300 most recently merged PR bodies (2026-08-19T15:13:23Z..2026-08-21T19:11:30Z, 2,564,259 body chars): sentence window (shipped) 1 / 301 keyword matches — the specimen. 0 FP. paragraph window 1 / 301 whole body before match 14 / 301 — 13 false positives anywhere in body 301 / 301 — the naive shape The 13 whole-body false positives are one PR (#10714) legitimately closing fourteen cards, so the sentence bound is load-bearing rather than stylistic. The result is not clean for lack of opportunity: the same corpus carries 116 sentences in the deliberate-non-closure register ("## Out of scope", "filed, not repaired here", "#N is not addressed here") and only one author bound a closing keyword to the number. Second corpus, same answer: 1,418 squash commit messages on main (2026-08-11..21), 228 keyword matches, 0 flags. Report-only, and deliberately NOT wired into the blocking gate: scripts/check-partof-closing-keyword.mjs imports h7PartOfWithClosingKeyword and fails PRs on it, so H21 is a separate function that gate does not import — widening the class must not silently widen a check that fails builds. The scheduled patrol already calls this sweep, so no workflow edit is needed. Part of #10392
Implements the 13-member docs-audit sweep in #10616. Every member is the same
defect shape: a
content/docs/**page states something the current enforcedplatform contradicts. Docs-only diff — no source, no gates, no workflows.
Fixes#10616
Per-member checklist (gate 2)
data-modeling/index.mdx:18sharingModelgetting-started/examples.mdx:55,:114,:295pnpm installthenpnpm dev:showcasepnpm buildadded + warn callout; both Standalone tabs note the unguarded pathgetting-started/index.mdx:99,:133(+3 glosses)IGraphQLServicecontractapiEnabledgloss now matches the schema's own describe()data-modeling/field-types.mdx:533,validation-rules.mdx:379{ latitude, longitude, altitude?, accuracy? }{ lat, lng, altitude?, accuracy? }(LocationValueSchema)data-modeling/validation.mdx:3,:13,:135,:139partialpresented as a live index key; frontmatter still sellsuniquenesspartialremoved + retirement note; frontmatter tracks the page bodydata-modeling/index.mdx:39data-modeling/validation-rules.mdx:94,:274,:387(+5 summary rows)FieldTypemembers documentedsecret/user/composite/repeater/recordaddeddata-modeling/field-types.mdx:317,:339FieldSchemais a strictObject, ADR-0078)data-modeling/validation-rules.mdx:156{ value, currency }paircurrencyConfig's concerndata-modeling/schema-design.mdx:78'bulk'added — six listed, with the denial consequence in the commentdata-modeling/index.mdx:40driver-tursoadded, flagged as the optional installui/actions.mdx:203rowActions/bulkActionsat thedefineViewcontainer top levellist:, with whyViewSchemarejects the flat formui/views.mdx:53,create-vs-edit-form.mdx:82,public-data-collection.mdx:24namenameadded to all three;views.mdxsection table states the i18n consequenceClosing lines, one per member
Fixes#10581
Fixes#10582
Fixes#10583
Fixes#10584
Fixes#10585
Fixes#10586
Fixes#10587
Fixes#10588
Fixes#10589
Fixes#10590
Fixes#10591
Fixes#10578
Fixes#10579
Premise re-derivation (all 13 checked at my own merge base)
Merge base
c700fc98ff— later than the triage spot-check (bde0ab9)and the claim-time check (
dd8172ee22). Every member's premise holds. Linenumbers had drifted on several cards and were re-derived rather than adopted:
driver-tursois omitted and its sibling page documents it as first-class #10591 citedindex.mdx:44; the sentence is at:39. Five drivers confirmed inpackages/drivers/, all five public (driver-tursois@objectstack/driver-tursov17.1.0).joinsand window functions — both retired in protocol 17, and the child page it links to documents them as removed #10586 citedindex.mdx:41; the sentence is at:38.joins/windowFunctionsconfirmedas
retiredKeytombstones inquery.zod.ts:539,551;havingis live at:548, so it stayed.locationdocumented as{latitude,longitude}on two pages; the enforced value contract is{lat,lng}— the deprecated schema's own docblock says exactly this #10584's source-of-truth path was wrong (missing thedata/segment), as the claim commentflagged. Re-derived:
packages/spec/src/data/field-value.zod.ts:251-256. The deprecatedLocationCoordinatesSchemadocblock (field.zod.ts:222-229) names{latitude, longitude}as theretired shape in as many words.
sharingModel— the platform's ownos validaterejects every one of them #10581 citedobjects.mdx:365forproject_task; it is at:374.locationandcurrencyshape errors #10587's count verified mechanically, not read off the card: 49-memberFieldTypeenum vs44
###headings. After the fix, 49 headings and 49 summary-table rows, reconciledagainst the enum by script.
#10581 site-count reconciliation (22 of 22)
ObjectSchema.create()foundgetting-started/examples.mdxconcepts/architecture.mdxconcepts/metadata-driven.mdxdata-modeling/schema-design.mdxdata-modeling/fields.mdxdata-modeling/seed-data.mdxdata-modeling/validation.mdxdata-modeling/objects.mdxdata-modeling/formulas.mdxdata-modeling/external-datasources.mdxdata-modeling/index.mdxdata-modeling/drivers.mdx21 inline
sharingModelinsertions + 1 prose note = 22.The note is
external-datasources.mdx:256, the one site the card describes as anexplicitly-partial fragment (
ObjectSchema.create({ /* ... */ external: {...} })) — per thecard's own suggested shape, a fragment gets a pointer to the requirement rather than a key.
The
objects.mdxrow reads 5 found / 2 addressed on purpose: the other three literals aresys_user_preference,sys_user_permission_setandsys_holiday_calendar.security-owd-unsetexempts system objects (
isSystemObject,validate-security-posture.ts:265), so they arecorrectly left alone. A 23rd
sharingModeloccurrence in these pages is the pre-existingproperty-table row at
objects.mdx:257, untouched.Every edit was applied through an anchored replace that asserts the anchor count before
and after and refuses to exit 0 on a no-op, so a zero-match edit could not read as success.
Gates
Derived with
node scripts/pm/dispatch-gates.mjs(no paths — it reads the change set fromthe merge base itself). 19 files, 12 matched families. All run at
0fb32ad2c0, which is thebranch head; exit codes captured before any pipe.
check:skill-examplescheck:doc-anchorscheck:doc-authoringcheck:docs-audit-scopecheck:docs-redirectscheck:role-wordcheck:published-readme-linkscheck:nul-bytescheck:cross-package-test-inputsspec check:empty-statespec check:livenessspec check:strictness-ledgerspec check:variant-docscheck:skill-examplesis the one that matters most here and dispatch-gates did not name it.I added it by reasoning about the diff: 14 of the 22 #10581 sites sit under a
{/* os:check */}marker, and
packages/spec/scripts/check-skill-examples.ts:143-150compiles exactly those fencesout of
content/docs. It confirms all 14 edited blocks still type-check withsharingModelon them.check:role-word's per-file ratchet did not block anything in this diff.No changeset
Docs-only — publishes nothing. The
skip-changesetlabel is applied additively.Scope (gates 3 and 5)
Diff is 19 files, all
content/docs/**. Untouched, as the sweep card requires:content/docs/references/**(generator territory),content/docs/releases/**,all source, gates and workflows. Out of scope and not touched here: #10592, #10593, and
#10581's
os validatemechanization idea.Adjacent defects — filed, not folded in (gate 4)
name: the ui/ census is 7 of 15 across 5 pages, not "three of five" — #10579 missed forms.mdx entirely #10709 — theui/form-section census is 7 of 15 across 5 pages, not [finding] Three of five form-section examples in ui/ omitname, which the spec says makes the section render its authored label in every locale #10579's"three of five". [finding] Three of five form-section examples in ui/ omit
name, which the spec says makes the section render its authored label in every locale #10579's three named sites were real and are fixed here; four more remainnameless, two of them on
ui/forms.mdx, a page no member card mentions.api/index.mdxstill documents a/graphqlroute that the dispatcher removed #10710 —api/index.mdx:19still documents/graphqlas a mounted route returning 501.[finding] getting-started/index.mdx advertises GraphQL via
IGraphQLService— the contract does not exist and/graphqlwas removed from the dispatcher #10583 parked it without filing it. The route is not mounted at all.apiMethodssample omitsbulktoo — same trap as #10590, different page, outside that card's site list #10711 —objects.mdx:84'sapiMethodssample omitsbulktoo, contradicting theproperty table twelve lines below it.
Generated by Claude Code