Skip to content

Align the docs with framework 17.0 — the pages still describe the 16.x contract #78

Description

@os-zhuang

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

PageLineSays17.0
quickstart.mdx18"Node.js 20 or newernode --version"engines.node is >=22.0.0 across all 50 manifests. Node 20 reached EOL 2026-04-30
resources/faq.mdx13"Node 20+ and the CLI are enough"same
resources/faq.mdx38-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.mdx220, 226-228documents enable: { trash: true } as the shipped key, "on by default", and explicitly directs readers to it as the replacement for a 16.0 removalobject.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).

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions