Repository navigation
sweep: docs-audit wave (#10563) — 13 factual corrections across content/docs/** where the page contradicts the enforced platform #10616
Description
Activity
- addeddocumentationImprovements or additions to documentationImprovements or additions to documentation
on Aug 21, 2026 Claim — PM dispatch (devx seat)
- Session:
c970724d-303c-5614-9d20-a3f92205cfad - Branch:
claude/issue-10616-docs-audit-sweep
Premise re-verified on
origin/main=dd8172ee22(fetched 2026-08-21T08:55:41Z), which is
later than triage'sbde0ab9spot-check. Two members re-derived independently:- [finding] data-modeling/index.mdx says "Four database drivers in this repo" — there are five;
driver-tursois omitted and its sibling page documents it as first-class #10591 holds.content/docs/data-modeling/index.mdx:39reads "Four database drivers in
this repo" and lists four, while the tree carries five —driver-sql,driver-mongodb,
driver-memory,driver-sqlite-wasmandpackages/drivers/driver-turso. - [finding]
locationdocumented as{latitude,longitude}on two pages; the enforced value contract is{lat,lng}— the deprecated schema's own docblock says exactly this #10584 holds, and its citation is wrong. The docs side is confirmed at
content/docs/data-modeling/field-types.mdx:533, which still teaches
{ latitude, longitude, altitude?, accuracy? }. But the source of truth is
packages/spec/src/data/field-value.zod.ts— the card citesfield-value.zod.ts:251-256
without thedata/segment, and that path does not resolve. The real anchor is:250-253
(lat: z.number().min(-90).max(90),lng: …), and the file's own header at:24-25names
{latitude, longitude}as "the never-consumed" / retired shape. So the finding is
stronger than the card states, not weaker.
⚠️ Because one of the two citations I checked was wrong, the dispatch requires every member's
line numbers and source-of-truth path to be re-derived at the dev's own merge base rather than
adopted. A sweep is exactly where a stale citation gets copied into a diff without anyone
looking.Same-file serial check at claim time, per the card's dispatch note: #10469 (
ui/react-pages
sample) and #10355 (ai/agents.mdx) are both stillpm:queue, unassigned, and not in flight
from this seat; neither names a file in this sweep. #10487 is not on the devx board. No serial
constraint.No collision with this seat's five in-flight agents — #10653 (
packages/lint), #10566
(check-cross-package-test-inputs.mjs), #10667 (thescripts/**entry-guard burn-down), #10490
(new gate +lint.yml) and #10664 (#10687,dispatch-gates.mjs+packages/lint). This sweep
iscontent/docs/**only and touches none of them.The 13 member cards keep their
findinglabel and are not dispatch candidates; this anchor
card is the claim object.
Generated by Claude Code
- Session:
{ "issue": 10616, "status": "done", "branch": "claude/issue-10616-docs-audit-sweep", "pr": "https://github.com/objectstack-ai/objectstack/pull/10714", "premise_still_valid": true, "summary": "All 13 members implemented as a docs-only diff: 19 files, every one under content/docs/**, no source/gates/workflows and nothing under references/ or releases/. Every member's premise was re-derived at my own merge base c700fc98ff (later than both the triage and claim-time checks) and all 13 hold; several cards' line numbers had drifted and were re-derived rather than adopted (#10591 :44->:39, #10586 :41->:38, #10581's project_task :365->:374), and #10584's source-of-truth path was wrong exactly as the claim comment flagged (real anchor packages/spec/src/data/field-value.zod.ts:251-256). Two member cards carry census errors that do not invalidate them but do understate the defect: #10579 says 'three of five form-section examples' when the real ui/ census is 7 nameless of 15 across 5 pages and it misses content/docs/ui/forms.mdx entirely, and #10590's sibling trap exists on a second page it does not list. Both were fixed only at the sites the cards name, per gate 3, and the remainders filed as findings per gate 4.", "tests": "Gate set derived with `node scripts/pm/dispatch-gates.mjs` (no paths; it reads the change set from the merge base itself) -> 19 paths, 12 matched families. All gates run at branch head 0fb32ad2c0, which is the final commit, with exit codes captured before any pipe (redirect-then-capture, never `cmd | tail; EXIT=$?`). 13/13 green, each quoted from the gate's own verdict line, not from $?:\n - check:skill-examples -> '227 prose examples type-check against @objectstack/spec'\n - check:doc-anchors -> '272 internal #fragment link(s) across 408 source file(s) all resolve to a real heading'\n - check:doc-authoring -> '389 files clean - no bare metadata literals'\n - check:docs-audit-scope-> 'scope is in sync with content/docs/: 189 hand-written doc(s)'\n - check:docs-redirects -> 'OK (92 entries - 89 page destination(s) resolved, 98 chain probe(s) matched)'\n - check:role-word -> 'OK, no new occurrences of the reserved word' (the per-file ratchet blocked nothing)\n - check:published-readme-links -> '152 outbound link(s) across 60 published markdown file(s)'\n - check:nul-bytes -> 'OK (scanned 6216 text file(s); no raw ASCII control bytes)'\n - check:cross-package-test-inputs -> 'OK: 13 package(s) read outside themselves, all declared'\n - spec check:empty-state / check:liveness / check:strictness-ledger / check:variant-docs -> all green\nREASONED, NOT NAMED BY THE TOOL: check:skill-examples. dispatch-gates left it out, but 14 of the 22 #10581 sites sit under a {/* os:check */} marker and packages/spec/scripts/check-skill-examples.ts:143-150 compiles exactly those fences out of content/docs - so it is the gate that proves the edited blocks still type-check with sharingModel on them. It compiled content/docs/data-modeling/index.mdx:14 among the 227. check:nul-bytes was also added by reasoning (any edit).\nBuild under the shared lock: `bash scripts/pm/os-verify-lock.sh -c '... pnpm --workspace-concurrency=2 --filter @objectstack/spec^... --filter @objectstack/spec build'` -> 'os-verify-lock: VERDICT command-exit 0 - held the lock 133s'; gate batch -> 'VERDICT command-exit 0 - held the lock 28s - waited 0s'. Script names were verified to exist in packages/spec/package.json first, since a zero-match pnpm --filter exits 0 having run nothing.\nNO ABLATION was run: this is a prose/example diff with no new guard to prove failable.\nVoid-mutation defence: every one of the ~45 edits went through an anchored replace helper that asserts the anchor's before-count equals the expected n, asserts the file actually changed, and asserts the replacement count moved by exactly n - it exits 1 rather than 0 on a no-op, so a zero-match edit could not read as success. Before/after counts printed per site.\n#10587 was reconciled mechanically rather than by eye: 49-member FieldType enum vs the page's ### headings and its summary table, scoped to the table region - 44/44 before, 49/49 and 49/49 after.", "open_questions": [], "out_of_scope_findings": [ "filed as #10709: the ui/ form-section census is 7 nameless of 15 across 5 pages, not #10579's 'three of five' - four remain nameless (ui/forms.mdx:68, :328 and ui/views.mdx:352, :363), and ui/forms.mdx is named by no member card", "filed as #10710: content/docs/api/index.mdx:19 and :172 still document /graphql as a mounted route returning 501 pending an IGraphQLService implementation - the route is not mounted at all (http-dispatcher.ts:2026); #10583 parked this without filing it. Lower-severity residue at getting-started/quick-reference.mdx:135 and data-modeling/fields.mdx:319; the content/docs/references/** occurrences belong to the generator per gate 5", "filed as #10711: content/docs/data-modeling/objects.mdx:84's apiMethods sample omits 'bulk' too - same defect as #10590 on a page that card does not list, and it contradicts the property table twelve lines below it" ] }
Generated by Claude Code
- added a commit that references this issue
on Aug 23, 2026
Anchor card for the sweep-package promotion of the 2026-08-21 docs-audit finding wave (audit dispatch: #10563, closed). Triage seat authored per the batch-promotion rules (five gates below). This card is the claim/dispatch object; the member cards keep their
findinglabel and are NOT dispatch candidates.Family criterion (gate ①)
Every member is the same defect shape: a
content/docs/**page states something the current enforced platform contradicts, and the fix is a prose/example correction on that page against the cited source of truth. No member changes any contract, schema, or gate.Members (13)
ObjectSchema.create()examples omitsharingModel;os validateerrors on every one (SECURITY_OWD_UNSET)getting-started/examples.mdxpnpm build, contradicts README.md:210-212getting-started/index.mdxIGraphQLService— contract does not exist,/graphqlremoveddata-modeling/field-types.mdx:533,validation-rules.mdx:373locationvalue documented{latitude,longitude}; enforced contract is{lat,lng}(field-value.zod.ts:251-256)data-modeling/validation.mdxpartialindex key presented as livedata-modeling/index.mdxjoins+ window functions, both retired in protocol 17validation-rules.mdxdata-modeling/field-types.mdxFieldSchemais a strictObject that rejects with guidance (ADR-0078)validation-rules.mdxcurrencyis stored as{value,currency}— it is a bare numberdata-modeling/schema-design.mdxapiMethodssample says "six primitives" and lists five — silently deniesbulkdata-modeling/index.mdxdriver-tursoomittedui/actions.mdxrowActions/bulkActionsshown atdefineViewcontainer top level — strictObject rejects itui/form-section pagesnameRead each member card in full before editing — each carries exact line numbers, the source-of-truth citation, and (for #10581) the full 22-site table.
Gates ②–⑤
落点 (file:line) | before | after— one row per member, and aFixes #<n>line per member.content/docs/references/**, nocontent/docs/releases/**).@objectstack/studio's package header describes a pending boot-path switch that already concluded the other way #10592 —@objectstack/studiopackage-header prose: notcontent/docs/**, already queued (domain:cli).fixturesrecipe convention has hit its stated revisit trigger — 3 areas, and a consumer that cannot reference the recipe it needs #10593 — QA checklistfixturesrecipe convention: internal QA tooling, not customer docs; graded separately.sharingModel— the platform's ownos validaterejects every one of them #10581's mechanization idea (runos validateoveros:checkblocks inpackages/spec/scripts/check-skill-examples.ts) — gate work in the spec lane, explicitly NOT part of this sweep; tracked as a separate finding.content/docs/references/**— generator territory per docs audit (1/2) — the first-run path: index, build-without-code, getting-started/, concepts/, data-modeling/ #10563; file against the generator.Dispatch notes (for the devx seat)
locationdocumented as{latitude,longitude}on two pages; the enforced value contract is{lat,lng}— the deprecated schema's own docblock says exactly this #10584 and [finding] 22 object examples across 12 docs pages omitsharingModel— the platform's ownos validaterejects every one of them #10581 againstorigin/main@bde0ab9(2026-08-21 ~06:2xZ) — both hold.content/docs/ui/index.mdxcredits themes withspacing(retired at #3494) and its Cards grid is missing five of the module's pages #10487 (ui/index.mdx), docs(ui): the react-pages live-data sample readsresult.records, which is always undefined — and its Callout misstates what a dropped option does #10469 (ui/react-pages sample), [docs]ai/agents.mdxstill documentsagent.toolsas a live field — it was tombstoned in protocol 17 #10355 (ai/agents.mdx) touch neighbouring docs — different files on today's reading, re-verify at dispatch.mode:subagent; prose-vs-source verification per item — default judgment tier.Triage: lands in
content/docs/**⇒domain:devx; concrete named landing spots, no open questions ⇒pm:queue.