docs(skills): objectstack-platform factual sweep — 6 false behavioral claims corrected - #13760
Conversation
Published-skills factual sweep, flight 4 of program #13658. Every correction is settled against the implementing code, not against another document, and each is byte-neutral-or-shrinking under the token ratchet. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EnE7G31tqbxN1rqpQmzurT
…ills-sweep-platform
check:doc-authoring red: skills/** ships to customer projects, where an internal tracker id resolves to nothing. Keep the teaching, drop the citation — the row now reads exactly like its 'auth' sibling. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EnE7G31tqbxN1rqpQmzurT
Contract review — PASS at head
|
Fixes #13747
Part of #13658
Flight ④ of the published-skills factual sweep:
skills/objectstack-platform/**, 8 files / 2,633 lines, every behavioral claim verified against the implementing code — never against another document.Landing sites — 6 distinct facts, 8 sites
rules/service-registry.mdcore-fallback table,jobrow'job' → core → auto-inject createMemoryJob() if missing'job' → core → NO fallback — warns; getService throws if missingObjectKernelbootstrapped with only adataprovider,getService('job')threw[Kernel] Service 'job' not foundwhilecache/metadata/queue/i18nall resolved in the same kernel.CORE_FALLBACK_FACTORIESprinted from the built artifact asmetadata,cache,queue,i18n.packages/core/src/fallbacks/index.tsstates the omission is deliberate (maintainer ruling 2026-08-22): a fallback must not fake capability, and every consumer's documented no-job-service path has to stay reachable.authrowno fallback factory — degraded-capability warning if missingNO fallback — warns; getService throws if missinggetService('auth')threw identically. The row was true but understated the consequence;jobandauthnow read alike because they behave alike.core-criticality services" / "Auto-injected in-memory fallback if no plugin provides it"ObjectKernel.preInjectCoreFallbacks()andvalidateSystemRequirements()both branch onCORE_FALLBACK_FACTORIES[name]being present.createMemoryJobamong "the fallbacks"job/authhave none"createMemoryJobis still exported (for embedders who want a manual-trigger registry) but is not a fallback. Export presence confirmed by import in the same probe.SKILL.mddefineStack()top-level key enumerationserverserveraddedObjectStackDefinitionSchema's real shape: 43 keys. All 39 documented keys are real (zero phantoms).defineStack({ server: { trustProxy: true } })parses green, while the paragraph directly below tells the reader an undeclared top-level key makes the stack fail to load — so the omission actively taught that a live v17 key is refused.SKILL.mdobject namingnamespacefield "is deprecated and ignored by the runtime"defineStackwithobjects: [{ name, label, namespace: 'crm', fields }]throws —Unrecognized key(s) on this object: 'namespace'with the ADR-0129 D3 prescription. "Ignored" says the stack loads; it does not. This also contradicted SKILL.md's own "Refused — … eachobjects[]entry (ObjectSchema) … The parse throws" thirty lines earlier.SKILL.mdObjectKernellogger config// 'debug' | 'info' | 'warn' | 'error' | 'fatal'// debug|info|warn|error|fatal|silentLogLevelinpackages/spec/src/system/logging.zod.tsis a 6-member enum;LEVEL_ORDERinpackages/core/src/logger.tscarriessilent: 5. The skill's own examples uselevel: 'silent'eight times — it was contradicting itself.SKILL.md+rules/plugin-lifecycle.mdPlugin.typecommentstandard|ui|driver|server|app|theme|agent|objectql'standard'+CORE_PLUGIN_TYPES(packages/spec/src/kernel/plugin.zod.ts) = 8.objectqlis not decorative —ObjectQLPlugindeclarestype = 'objectql'. A cross-file contradiction inside the package, settled against the schema rather than against either document.Also corrected in the same stroke, same class: the "Complete Working Example"
package.jsonpinned^16.0.0-rc.1on six deps and claimed to mirror theblanktemplate. The real template (packages/create-objectstack/src/templates/blank/package.json) pins^17.0.0and ships a different dependency set (three connector packages, nodriver-memory) — and the skill's own frontmatter already declares 17.x. Versions corrected; the false "mirrors" claim removed rather than papered over.Budget
Net line delta across the package: 0 (2,633 → 2,633). Net tokens: −24, from the ratchet's own verdict lines —
SKILL.md−18,rules/plugin-lifecycle.md−4,rules/service-registry.md−2. No ceiling raised. Every remaining file was already sitting at zero headroom, so every edit was made byte-shrinking in place.Verification
Gate families derived from the real diff, not recalled —
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commandson the merged tree (13 families). Union re-run at the final commitf6c81ba5:check-test-completenessgrades a savedturbo run testlog and was handed none; it printsPREREQUISITE NOT METand exits 3 before parsing a line. Recorded as NOT MEASURED, per its own instruction — not a red.Two more run because the diff visibly implicates them even though the path derivation does not name them:
check:skill-examplespopulation for this package is NOT empty —SKILL.mdcarries twoos:checkfences (thedefineStackminimal example andtask.object.ts). Both type-check.check:doc-authoringcaught a defect I introduced: the first draft of thejobrow cited an internal issue id, whichskills/**forbids because the catalog ships into customer context windows where a tracker id resolves to nothing. Fixed inf6c81ba5— the teaching kept, the citation dropped.No changeset: the diff publishes nothing from any package.
skip-changesetapplied, matching the precedent this branch merged up to — flight ③'s PR #13740 landed fiveskills/objectstack-query/**files with no changeset.needs:contract-reviewattached at creation: these corrections make falsifiable operator/contract semantic claims, the CONTENT limb of clause ②. Not self-cleared.Governed posture
Published
skills/**— this PR stays draft for human merge..mdcontent goes to maintainer review.Generated by Claude Code