You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
objectstack 17.0.0 was released on 2026-08-14 (release notes). These docs were aligned to 16.0 in #52 and have not moved since, so several pages now describe a contract the runtime no longer has.
Measured against the release notes and origin/main of both repositories. Grouped by how much a reader loses, not by page.
Live contradictions — a reader who follows these fails
Page
Line
Says
17.0
quickstart.mdx
18
"Node.js 20 or newer — node --version"
engines.node is >=22.0.0 across all 50 manifests. Node 20 reached EOL 2026-04-30
resources/faq.mdx
13
"Node 20+ and the CLI are enough"
same
resources/faq.mdx
38-39
"Q: Does ObjectOS support GraphQL? A: REST is the primary surface. GraphQL is on the roadmap"
The GraphQL surface was removed in 17.0. The answer promises a roadmap item that was deleted
build/data/index.mdx
220, 226-228
documents enable: { trash: true } as the shipped key, "on by default", and explicitly directs readers to it as the replacement for a 16.0 removal
object.enable.trash and mru were removed in 17.0. The page now points at a key that no longer parses
The enable.trash one is the worst of the four: it is not stale prose, it is an instruction that tells a reader to write a key which — under 17.0's closed authorable surface — now fails at parse time with a named error.
Stale framing — nothing fails, but the page describes the wrong product
GraphQL, elsewhere.reference/runtime-capabilities.mdx:73 ("GraphQL and OData are framework-level capabilities"), extend-existing-systems.mdx:72 ("REST/GraphQL endpoints"), and the skill blurbs at reference/skills-cli.mdx:53 and build/ai-skills.mdx:45 ("REST/GraphQL endpoints, auth, realtime"). Each needs a different call — some should drop the word, the skill blurbs may be quoting upstream text that itself changed.
Media fields.reference/field-types.mdx:136-158 documents file/image/avatar/video/audio with flat accept / maxSize, and carries a 16.0 note about fileAttachmentConfig. In 17.0 a media field stores an opaque sys_file id, the {url, name, size, …} object is the read (expanded) form, and accept / maxSize moved from declarable to declarable and server-enforced. The page never states what is stored, so it is not wrong so much as silent about the thing that changed. configure/storage.mdx:19-21 already says metadata persists in sys_file and should be checked for agreement.
Export as a privilege.configure/permissions/index.mdx:83, permission-sets.mdx:19,56 and managing-access.mdx:147 treat export as one system permission among several. In 17.0 allowExport unset means denied rather than "inherit read", and viewAllRecords / modifyAllRecords no longer confer it. Whether these pages actually assert the old inheritance needs reading — the grep found the word, not the claim.
Record access fail-closed.configure/permissions/record-access.mdx:14 and resources/glossary.mdx:182 describe sharing rules as "grant access based on declarative criteria". 17.0 made a rule stored without criteria share nothing (it previously matched every record), and an RLS policy with enabled: false actually disabled (it previously still contributed its grant). If either page implies the old behaviour, it is describing a security contract that no longer holds.
Approvals. 17.0 adds expression approvers (CEL), a node-level onEmptyApprovers policy, and declared decision outputs resuming as <nodeId>.<key>. build/automation/approvals.mdx was rewritten for 16.0 quorum/会签 in docs: align product docs with framework 15.x→16.0 changes #52 and does not have these.
Boot and readiness. 17.0 makes a datasource that objects bind to fail the boot, objectql.init() refuse to start on a dead driver, and /ready answer 503 when one stops answering. deploy/docker.mdx:121, deploy/kubernetes.mdx:38 and operate/backup.mdx:137 already describe /api/v1/ready; they should be checked for whether they now under-promise.
resources/changelog.mdx stops at 16. No 17 entry exists.
One item to verify, not to transcribe
configure/mcp.mdx:157 documents ai.requiresConfirmation on an action. 17.0 removed tool.requiresConfirmation. Those may be different keys on different schemas. ⛔ Do not assume they are the same — read packages/spec and decide from the schema, not from the similar name.
How to work this card
The release notes are a lead. packages/spec on objectstack@main is the authority. Every claim above was derived from release prose plus a grep of this repository; none of it was checked against the schema. Where the two disagree, the schema wins and the finding should be corrected in the PR body.
Same constraints as #64: this repository is not the authority for runtime behaviour or measurements. Where 17.0 changed something this repo cannot observe, describe the shape and link to the reference rather than inventing detail.
English only. Locale siblings are generated artifacts; leave them, they will report as stale and the next translation pass picks them up. The output validator landing in #74 blocks only on locale files a PR changes, so an English-only PR is unaffected.
Related: #52 (the 16.0 alignment, same shape), #63, #70 (six pages still teaching the multi-Environment model — adjacent, decide whether to fold in or keep separate).
objectstack17.0.0 was released on 2026-08-14 (release notes). These docs were aligned to 16.0 in #52 and have not moved since, so several pages now describe a contract the runtime no longer has.Measured against the release notes and
origin/mainof both repositories. Grouped by how much a reader loses, not by page.Live contradictions — a reader who follows these fails
quickstart.mdxnode --version"engines.nodeis>=22.0.0across all 50 manifests. Node 20 reached EOL 2026-04-30resources/faq.mdxresources/faq.mdxbuild/data/index.mdxenable: { trash: true }as the shipped key, "on by default", and explicitly directs readers to it as the replacement for a 16.0 removalobject.enable.trashandmruwere removed in 17.0. The page now points at a key that no longer parsesThe
enable.trashone is the worst of the four: it is not stale prose, it is an instruction that tells a reader to write a key which — under 17.0's closed authorable surface — now fails at parse time with a named error.Stale framing — nothing fails, but the page describes the wrong product
reference/runtime-capabilities.mdx:73("GraphQL and OData are framework-level capabilities"),extend-existing-systems.mdx:72("REST/GraphQL endpoints"), and the skill blurbs atreference/skills-cli.mdx:53andbuild/ai-skills.mdx:45("REST/GraphQL endpoints, auth, realtime"). Each needs a different call — some should drop the word, the skill blurbs may be quoting upstream text that itself changed.reference/field-types.mdx:136-158documentsfile/image/avatar/video/audiowith flataccept/maxSize, and carries a 16.0 note aboutfileAttachmentConfig. In 17.0 a media field stores an opaquesys_fileid, the{url, name, size, …}object is the read (expanded) form, andaccept/maxSizemoved from declarable to declarable and server-enforced. The page never states what is stored, so it is not wrong so much as silent about the thing that changed.configure/storage.mdx:19-21already says metadata persists insys_fileand should be checked for agreement.configure/permissions/index.mdx:83,permission-sets.mdx:19,56andmanaging-access.mdx:147treat export as one system permission among several. In 17.0allowExportunset means denied rather than "inherit read", andviewAllRecords/modifyAllRecordsno longer confer it. Whether these pages actually assert the old inheritance needs reading — the grep found the word, not the claim.configure/permissions/record-access.mdx:14andresources/glossary.mdx:182describe sharing rules as "grant access based on declarative criteria". 17.0 made a rule stored without criteria share nothing (it previously matched every record), and an RLS policy withenabled: falseactually disabled (it previously still contributed its grant). If either page implies the old behaviour, it is describing a security contract that no longer holds.expressionapprovers (CEL), a node-levelonEmptyApproverspolicy, and declared decision outputs resuming as<nodeId>.<key>.build/automation/approvals.mdxwas rewritten for 16.0 quorum/会签 in docs: align product docs with framework 15.x→16.0 changes #52 and does not have these.objectql.init()refuse to start on a dead driver, and/readyanswer 503 when one stops answering.deploy/docker.mdx:121,deploy/kubernetes.mdx:38andoperate/backup.mdx:137already describe/api/v1/ready; they should be checked for whether they now under-promise.resources/changelog.mdxstops at 16. No 17 entry exists.One item to verify, not to transcribe
configure/mcp.mdx:157documentsai.requiresConfirmationon an action. 17.0 removedtool.requiresConfirmation. Those may be different keys on different schemas. ⛔ Do not assume they are the same — readpackages/specand decide from the schema, not from the similar name.How to work this card
The release notes are a lead.
packages/speconobjectstack@mainis the authority. Every claim above was derived from release prose plus a grep of this repository; none of it was checked against the schema. Where the two disagree, the schema wins and the finding should be corrected in the PR body.Same constraints as #64: this repository is not the authority for runtime behaviour or measurements. Where 17.0 changed something this repo cannot observe, describe the shape and link to the reference rather than inventing detail.
English only. Locale siblings are generated artifacts; leave them, they will report as stale and the next translation pass picks them up. The output validator landing in #74 blocks only on locale files a PR changes, so an English-only PR is unaffected.
Related: #52 (the 16.0 alignment, same shape), #63, #70 (six pages still teaching the multi-Environment model — adjacent, decide whether to fold in or keep separate).