Repository navigation
docs: Build, API and operations pages up to ObjectStack 17.7 - #333
Conversation
The changelog gains 17.2-17.7 entries and stops calling minors backward-compatible; upgrade.mdx gains per-version operator steps; the REST, CEL, environment-variable, CLI, flows, validation-rule, email and localization pages drop what 17.0-17.7 removed and add what they introduced. Locale siblings of rest-api, validation-rules and email are deleted where the English correction reverses a capability claim. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CXCwzqwMhkphKoBC11oPSz
Move the upgrade page's version-specific steps after the generic sections, state how `os migrate` picks its database in 17.7.0, keep the error envelope's flat example in a code block, and say plainly that a validation rule cannot answer current_user.can(). Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CXCwzqwMhkphKoBC11oPSz
Record-view auditing and the read-only approval tier are switched on only by constructor options the ObjectOS runtime does not set, so the 17.1 entry says so instead of pointing at pages that do not describe them. The 17.6 audit bullet notes 17.7's view_all_audit_log, and the 17.4 upgrade step limits the org-less API key refusal to `isolated`, as the 17.7.0 code does. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CXCwzqwMhkphKoBC11oPSz
…tired An action is an agent tool only with ai.exposed, an ai.description of 40 characters or more, and a headless type (script, flow or api), as the 17.7.0 runtime's materialisesAsTool decides. `os create example` was retired in 17.4 and exits naming `os init`. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CXCwzqwMhkphKoBC11oPSz
席位核对ACCEPT: PR #333 for #330 · 2026-10-16T04:48Z · seat Shape.
Checks pinned to Prose, checked against the 17.x release notes on objectstack
Locale siblings: 16 deleted ( Open questions: three, about the ObjectOS image's own contract (the default of Landing. Non-governed and under the size line. The seat marks the PR ready. ❗ Merging to Generated by Claude Code |
维护者速读这个 PR 共 3311 行(+761 / −2550),超过了 3000 行的人工合并线(2026-09-18 的裁定;objectstack#20153)。其中约 2550 行是删除,主要是删掉那些已经过时、要从英文重新生成的 zh-Hans / zh-Hant 兄弟页。英文正文的改动集中在 changelog 17.2–17.7、升级指南的分版本步骤,以及 rest-api、cel、env-vars、cli、flows、validation-rules、email、localization 这几页。 按规则,席位要等 os-zhuang 或 hotlong 在 GitHub 上提交 Approve 评审之后才能落地;另一种落地方式是维护者自己合并。席位的 ACCEPT 在 席位自查:这个 PR 不该由席位翻成 ready。翻之前没有跑尺寸闸,这是席位的失误。PR 保持 ready 不动,免得你合并时多点一步。 Seat note (English)This PR is 3311 changed lines, over the 3000-line human-merge line, so it needs an APPROVE review from an account in Generated by Claude Code |
Fixes #330
What this does
Ten English pages are brought up to ObjectStack 17.7.0, the current npm
latest. Each claim was checked against the 17.x release notes on objectstackorigin/main54770208. Where a note could disagree with the current docs, the published 17.7.0 tarballs from npm settled it:@objectstack/cli,runtime,rest,objectql,service-automation,formula,spec,service-settings,plugin-auth,coreandtypes. The current objectstack docs already describe 18.0.0-next in places, for example double-brace text holes in flows and.envloading inos migrate. Neither is in 17.7.0, so nothing from those parts of the docs was copied in.Card rows: fixed or falsified, with the line each rests on
resources/changelog.mdxv17/index.mdx(the "minors by version number, not by blast radius" callout); each note's Highlightsoperate/upgrade.mdx, new## Version-specific stepsat the end;:3and:6untouched (#295)## Upgrade checklistquery.cursorreference/rest-api.mdxdata table and example17-0.mdx"The query request surface sheds five inert keys"; 17.7.0FindDataResponseSchemais object / records / total / hasMoreerror.codesetreference/rest-api.mdxError envelope17-0.mdx"Error codes are one SCREAMING_SNAKE vocabulary";17-1#9106 (declaredCode)reference/rest-api.mdxAutomation + Flow status table;build/automation/flows.mdx(its trigger URL was already right, so it gains the status table only)17-1.mdx"The flow doors answer real HTTP statuses"; 17.7.0 runtimeclassifyFlowRefusal(404 / 409 / 422 / 400)reference/rest-api.mdxMetadata17-3.mdx"Compound metadata addressing is retired"rest-api.mdxandconfigure/email.mdx:9; falsified forviews.mdx:24717-5.mdx: "Thereportmetadata kind, datasets and the analytics service are unchanged". The Console still rendersreportmetadata: objectuipackages/plugin-report, a dependency ofapps/console. Line 247 points at that surface, not at the removed/api/v1/reportsstack, so it stayssharing.enabled: truereference/rest-api.mdxPublic forms (theviews.mdxsample already had it)17-7.mdx"Public forms"endnodeoutcome,refusedrun statusbuild/automation/flows.mdxnode table and new "Ending a run" section17-4Highlights; the 17.7.0 engine stampsrefusedat the end node (FlowRefusalSignal)OS_AUTOMATION_SCHEDULED_WORK_ENABLEDbuild/automation/flows.mdxScheduled;reference/environment-variables.mdxRuntime services17-5.mdx"Scheduled work is off until a deployment turns it on"; 17.7.0resolveScheduledWorkEnabled(unset means off). Whether the ObjectOS image sets it: NOT MEASURED, no public source. The pages say so plainlybuild/automation/flows.mdxVisual builder17-6.mdx"Flows: one rule decides which flow is packaged"readonlystripped on insert toobuild/data/validation-rules.mdx:4717-4.mdx"A staticreadonlyfield is stripped from a non-system INSERT"current_user.can()validation-rules.mdxnew "Reading a related record";reference/cel.mdxnew "Permission checks" and acurrent_userrow17-5.mdxNew capabilities. Measured: 17.7.0 evaluates a validation rule withrecordandpreviousonly (objectqlcheckPredicate), socurrent_useris an unknown variable there and the rule fails closed. The page says so rather than suggestingcan()in a ruleconfigure/localization.mdx17-7.mdx"Four Localization settings are retired"; the 17.7.0 settings manifest has Region and Finance sectionsOS_ALLOW_LAX_*;OS_PLATFORM_OWNER_EMAILreference/environment-variables.mdx17-0.mdx(action params, value shapes);17-3checklist (walled boot refusal, measured);17-5.mdx"Identity, sessions and platform administration". Each variable's reader was found in the 17.7.0 codeos migratefamilyreference/cli.mdx, new "Database migrations"dist/commands/migrate/*); flags from each command'sstatic flagsAlso corrected on the same pages
validation-rules.mdx: the tip said a broken rule is "logged and skipped". 17.7.0 fails closed instead: "a rule that cannot be evaluated fails closed, it is never skipped". An unevaluablerequiredWhenorreadonlyWhenrefuses the write too (17.5).flows.mdx: decisionmode: 'inclusive'(17.5), and anapiflow needs aconfig.secret(17.5).rest-api.mdx: a by-id write to a row the caller cannot read answers 404 (17.7)./meta/:type/:name/layersreplaces the deprecated?layers=true. The action routes are/actions/:object/:action(plus/:recordId) and/actions/:action, the routes the 17.7.0 runtime mounts.environment-variables.mdx: the retiredOS_LOCALIZATION_*names, and the in-memory boot store, which is refused (17.7).changelog.mdx17.1, following the seat's note from Access, audit and approval pages predate ObjectStack 17.0–17.6: masking, record-view audit, deactivation, query-door FLS, the guest baseline and approval visibility are missing or wrong #329 / docs: align access, audit and approval pages with ObjectStack 17.0–17.7 #331. Record-view auditing (AuditPlugin'sreadAudit) and the read-only approval tier (recordReaderVisibleObjects) are switched on only by constructor options the ObjectOS runtime does not set. The 17.1 entry now says ObjectOS does not expose them, instead of linking Audit Logs and Approvals, which (correctly) do not describe them. The 17.6 audit bullet notes 17.7'sview_all_audit_log. The 17.4 upgrade step limits the org-less API key refusal toisolated: in the 17.7.0 core,groupadmits such a key.rest-api.mdx: "each action is also exposed to the AI as a tool" was wrong. In 17.7.0 an action reaches agents only when its author setsai: { exposed: true }with anai.descriptionof 40 characters or more, on a headless type (script,floworapi): thematerialisesAsToolandHEADLESS_ACTION_TYPESchecks in the 17.7.0 rest package, and the spec'sActionAiSchema.cli.mdx:os create examplewas retired in 17.4 (17-4.mdx, #16483). The 17.7.0 CLI'sRETIRED_TEMPLATESanswers it with an error namingos initand exits 1. The page now documents onlyos create plugin.https://objectstack.ai/docs/releases/v17/17-N. Sources: objectstackapps/docs/lib/site.tsSITE_ORIGIN, and thedocs.host listed as a redirecting alias inscripts/check-published-readme-links.mjs. Live fetch: NOT MEASURED, because this container's proxy refuses objectstack.ai.Locale siblings deleted (the #256 criterion)
13 translated files and 3 generated ones go:
rest-api: de, es, fr, ja, ko, zh-Hans, plus zh-Hantvalidation-rules: zh-Hans, plus zh-Hantemail: de, es, fr, ja, ko, zh-Hans, plus zh-HantEach English correction removes or reverses a capability claim the sibling still makes:
rest-api: cursor paging, the/flows/*routes, the/reports/*routes and the sectioned metadata routes.validation-rules: "insert exempt" and "a broken rule is skipped".email: scheduled-report emails.gen-zh-hant.mjspruned the zh-Hant files; none was deleted by hand. No locale file was edited.Gates (local, on head
aaa4eb9)node apps/docs/scripts/gen-zh-hant.mjs --checknpm ci --prefix .github/scripts/doc-samples …thennode .github/scripts/check-doc-samples.mjsendwith nomessagefails the gate (exit 1)pnpm turbo run type-check --continue(shared lock)pnpm turbo run build(shared lock)pnpm turbo run test(shared lock)ci-scriptstests read no contentcheck-positioning.mjs/check-locale-surface.mjs/check-search-locales.mjs(after build)--name-status --no-renames, withTRANSLATION_BOT_LOGINset for the run)enHTMLCI on
aaa4eb9:buildsuccess, including "Worker bundle fits the size budget" and "The docs site renders — smoke-check a local preview".Node floorsuccess;Ownership & freshnesssuccess;Deploy docsskipped (PR).Acceptance notes
reference/runtime-capabilities.mdx:41-52says a requested capability whose package is missing "logs a warning and continues". The 17.x CLI docs say a declared service capability fails the boot instead. I did not check this against the ObjectOS image. Carrier: none.automation/flows.mdxcallout "the engine and runner halves follow" is stale for the engine half: 17.7.0 stampsrefused. That is objectstack's page, not this repo's. Carrier: none.current_userfails closed at run time (measured with the 17.7.0 formula engine). Whetheros validaterefuses it at authoring is NOT MEASURED.OS_AUTOMATION_SCHEDULED_WORK_ENABLEDos migratedata steps and the 17.3sys_record_sharebackfill against the licensed image (ObjectStack ships the backfill only as a library function)Generated by Claude Code