Repository navigation
fix(client,platform-objects,docs): in-system copy says "this system", not "this environment" (cloud#3002 ruling A) - #24482
Conversation
… not "this environment" (cloud#3002 ruling A) The ai.models() TSDoc and the /ai/models docs row follow the spec's "Models this system offers" and cite the AI model list's record as cloud ADR-0028. permission-sets.mdx says "authored in this system" for the provenance class the spec renamed; authentication.mdx's two bootstrap-status sentences and the set-initial-password sentence name the running system as "this system". The zh-CN, ja-JP and es-ES packageId help values follow the regenerated en value. Claude-Session: https://claude.ai/code/session_01SYEJqDL3NXxrJRBVqaMu9T Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift CheckThis PR changes 2 package(s): 8 hand-written doc(s) NAME something this change touched and may need an implementation-accuracy re-verification:
⛔ 2 release-owned page(s) also name something this change touched. These are read-only:
What this run could not see
Coarse fallback — 18 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 1c3f21f9717b3466f6e072bb2867e9db070873a7 && git checkout 1c3f21f9717b3466f6e072bb2867e9db070873a7
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin e11ae4b6b0125555381df37c6944e53dcf8d993d 3becd9711f143e3c7171c7362337f4302608fae5 && git checkout -B drift-repro e11ae4b6b0125555381df37c6944e53dcf8d993d && git merge --no-ff 3becd9711f143e3c7171c7362337f4302608fae5
node scripts/docs-audit/affected-docs.mjs --json e11ae4b6b0125555381df37c6944e53dcf8d993d
|
席位核对 — REWORK (patch round 1: the census reads the rule, not the phrase)
Accepted as it stands:
Owed in this round. The census clause was "anything else the rule covers", and the rule reads meaning, not the phrase "this environment". Clause 2 covers the running system whatever its determiner. The body leaves three strings in that sense as "outside the literal census", and two of them now sit beside this PR's own "this system":
Generated by Claude Code |
…ication say "this system" or drop the noun; client-sdk cites cloud ADR-0028
permission-sets.mdx: "cannot be edited in the environment" and "cannot be
removed from the environment" say "this system", beside the bullet's own
"A set authored in this system". authentication.mdx: the bootstrap-status
fail-open sentence drops the noun ("when one may already exist"), as
:252 in the same section names the running system. client-sdk.mdx: the
ai.models() comment cites cloud ADR-0028, as the TSDoc and the
plugin-endpoints row do.
Claude-Session: https://claude.ai/code/session_01SYEJqDL3NXxrJRBVqaMu9T
Co-authored-by: Claude <noreply@anthropic.com>
席位核对 — ACCEPT (patch round 1)
Generated by Claude Code |
Fixes #24456
Clause-②: no (copy only: TSDoc, two hand-written docs pages and three translated help values; no accept set, export, shape, status or code moves)
What this does
PR #24454 moved the spec's source sentences to objectstack-ai/cloud#3002 ruling A, as triage applied it (
6250167038on #24327,6252585695on #24368):This PR makes the client SDK, the hand-written docs and the three translated bundles match it. It also qualifies the
/ai/modelsdecision citation ascloud ADR-0028(Prime Directive #13).Per-string reading
Line numbers are on base
31ce45c07. "Clause 1/2/3" are the three bullets above, in order.packages/client/src/index.ts:6702, TSDoc ofai.models()(ships in the.d.ts)AiModelsResponse.modelsdescribe as PR #24454 left it. The citation is qualified, see belowcontent/docs/api/plugin-endpoints.mdx:112, theGET /ai/modelsrowcontent/docs/permissions/permission-sets.mdx:369, "One authoritative store"sys_metadatasys_metadata. Clause 1: set against "a package's declaration"permission-sets.mdx:387, the edit consequencepermission-sets.mdx:393-394, the delete consequence (wrapped over two lines, so a line grep misses it; found by a multi-line scan)permission-sets.mdx:422, the clone doorcontent/docs/permissions/authentication.mdx:252, first-run bootstrap statusauthentication.mdx:312-313, set-initial-password (wrapped over two lines)authentication.mdx:1125, the endpoint list's bootstrap-status entry:252zh-CN.metadata-forms.generated.ts:2337,metadataForms.permission.fields.packageId.helpTextenvalue PR #24454 regenerated ("Leave empty for a set authored in this system.")ja-JP.metadata-forms.generated.ts:2337, same keyes-ES.metadata-forms.generated.ts:2337, same keypackages/client/src/index.ts:3341,:3343, TSDoc ofenvironments.activate(id)/api/v1/cloud/environments/:idon the control plane. "this environment" is the oneidnames, one environment among severalindex.ts:3353, TSDoc ofenvironments.rotateCredential(id, ...)index.ts:3364, TSDoc ofenvironments.updateHostname(id, ...)index.ts:7816-7817,:7852-7853, TSDoc of the environment-scoped metadata client'sdeleteItemandhistory(each wrapped)/environments/:environmentIdmount, set against its unscoped twin in the same sentencepermission-sets.mdx:380, the edit consequence's lead:387's "one authored in this system"permission-sets.mdx:394-395, the delete consequence (wrapped)authentication.mdx:268-269, the bootstrap-status fail-open sentence (wrapped):252names in this sectioncontent/docs/api/client-sdk.mdx:395, the comment on theai.models()exampleplugin-endpoints.mdxrow; see the next sectionpermission-sets.mdx:239, how a position'spermissionSetsresolvepermissionSetsis resolved in the environment's catalogpackages/spec/src/identity/position.zod.ts:16,:93,:107), and PR #24454 left itpermission-sets.mdx:374,:401?scope=environment; "environment metadata undersingle"permission-sets.mdx:345,:350,:360,:421permission-set-owner-binding.ts:103). The:345heading and:350use the same class vocabulary. This round's census found those two beyond the seat's list; they are kept for the same reasonThe translations keep each locale's verb. 创建, 作成 and creado are the usual words in those locales for making a record here, which is the sense the class names. Only the noun moves, to the words this family's earlier translations chose: 本系统 / このシステム / este sistema (PR #24432).
The
ADR-0028citation: read as cloud'sdocs/adr/0028-metadata-naming-and-namespace-isolation.mdis "Metadata Naming & Namespace Isolation". It says nothing about models, plans or a picker./ai/modelsis served byservice-ai, which this repository does not ship.content/docs/kernel/services-checklist.mdxsays "service-ai(chat, completion, models, conversations) is Cloud/EE". The v17.0.0 entry that introducedai.models()together with this citation (packages/client/CHANGELOG.md, changeset8b9d71e) says "service-aiis a Cloud/EE package in thecloudrepo". Plan policy also stays server-side in cloud (packages/cloud-connection/package.json, cloud ADR-0008).add_repofor objectstack-ai/cloud answered "you don't have access". So this PR does not confirm cloud ADR-0028's title. The qualification rests on two facts: this registry's 0028 is unrelated, and the code the citation governs lives in cloud.scripts/check-adr-anchors.mjsrecognises thecloud ADR-qualifier and skips it (CROSS_REPO_QUALIFIERS).Translations and their source-hash record
None of the three leaves has a recorded source hash, so no hash moves:
grep -c metadataFormsover the six*.source-hashes.ts/*.source-hashes.generated.tsfiles answers 0 for each.source-hash.ts,GENERATED_SECTIONS, and each table's header). These three leaves are translations, so each is legacy-trusted.node scripts/check-i18n-bundles.mjs --writeran on the edited tree and exited 0. It rewrote every bundle file (mtimes moved to the run), andgit status --porcelainstayed empty afterwards. The generator kept all three hand values and wrote no hash entry.Changeset
.changeset/24456-client-platform-objects-this-system.mdis apatchfor@objectstack/clientand@objectstack/platform-objects. Both publish (privateunset, andfilesshipsdist). The TSDoc reaches the client's.d.ts, and the bundles reach platform-objects'dist. The docs pages publish nothing.Verification
Every reading is at HEAD
3becd9711on base31ce45c07, unless it is marked as taken at1fd900cfd. The second commit,3becd9711, changes three hand-written docs pages and no package file (git diff --stat 1fd900cfd 3becd9711). So the typecheck, test and i18n--writereadings taken at1fd900cfdcover the same package bytes. Each exit code was captured before any pipe.turbo run build --filter=!@objectstack/docs --concurrency=2throughscripts/pm/os-verify-lock.sh. At1fd900cfd:Tasks: 76 successful, 76 total,VERDICT command-exit 0. At3becd9711, in a recreated worktree:Tasks: 76 successful, 76 total,Cached: 76 cached, 76 total(FULL TURBO),VERDICT command-exit 0.1fd900cfd:pnpm --filter @objectstack/client --filter @objectstack/platform-objects typecheckexited 0 (VERDICT command-exit 0), withcheck:test-typecheck: OKfor both.1fd900cfd:@objectstack/platform-objectsTest Files 77 passed (77),Tests 1184 passed (1184).@objectstack/clientTest Files 52 passed (52),Tests 671 passed (671).VERDICT command-exit 0.eslint --no-inline-configover the four changed.tsfiles: exit 0, no output, at both heads.node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackat3becd9711(9 paths) derived 90 commands, the same 90 as at1fd900cfd, and all 90 exited 0. The reconciliation--rananswered "Run reconciliation — 90 derived, 90 run, 0 NOT-MEASURED, 0 UNRUN". Among them:pnpm check:i18n: "OK (10 package(s) — all bundles in sync, no undeclared authoring keys)".pnpm check:i18n-stale-fill: "OK (11 bundle set(s) — no new stale fills, 0 baselined)".pnpm check:nul-bytes: OK.pnpm check:doc-authoring: clean.pnpm --filter @objectstack/spec run check:docs: "227 generated files in sync".pnpm check:dts-closure: 178/178 present.check-changeset-fixed,check:authz-resolver,check:error-code-casing,check:filter-alias-parity). All 15 exited 0, at both heads.3becd9711: no hits.git grep -Ffinds each old sentence only at its own site.test:repo(CITest Core), and the 6 families that take a value from the workflow (CI only).Acceptance notes
None of these is this card's to move. Carrier for each: none, unless named.
packages/spec/src/api/protocol.zod.ts:3359and:3362cite a bareADR-0028beside/ai/models("the environment's plan-filtered picker list (ADR-0028)", "the ADR-0028 allowlist"). Spec isdomain:spec's and on hold here. The same:3359line and:3371("Whether this is the environment default") keep "environment", as PR fix(spec): in-system copy says "this system" or drops the noun, not "this environment" (cloud#3002 ruling A) #24454 read them: the deployment's plan-scoped list and its configured default.Generated by Claude Code