Repository navigation
Commit b7a688e
fix(client,platform-objects,docs): in-system copy says "this system", not "this environment" (cloud#3002 ruling A) (#24482)
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 (`6250167038` on #24327, `6252585695` on
#24368):
- a set "made here, not from a package" reads "authored in this system";
- "the system the caller is in" drops the noun, or says "this system";
- a string that means a deployment or configuration scope keeps its
word.
This PR makes the client SDK, the hand-written docs and the three
translated bundles match it. It also qualifies the `/ai/models` decision
citation as `cloud 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.
| site | before | after, or kept: reason |
|:--|:--|:--|
| `packages/client/src/index.ts:6702`, TSDoc of `ai.models()` (ships in
the `.d.ts`) | Models this environment offers in the chat model picker
(ADR-0028) | Models this system offers in the chat model picker (cloud
ADR-0028). Clause 2: the system the caller asks. This is the spec's
`AiModelsResponse.models` describe as PR #24454 left it. The citation is
qualified, see below |
| `content/docs/api/plugin-endpoints.mdx:112`, the `GET /ai/models` row
| Models this environment offers (ADR-0028) | Models this system offers
(cloud ADR-0028). Same reading |
| `content/docs/permissions/permission-sets.mdx:369`, "One authoritative
store" | a package's declaration, or a definition authored in this
environment and saved in `sys_metadata` | ... a definition authored in
this system and saved in `sys_metadata`. Clause 1: set against "a
package's declaration" |
| `permission-sets.mdx:387`, the edit consequence | Every other set (one
created in this environment, a clone, or one saved into a writable
runtime package) | (one authored in this system, a clone, or ...).
Clause 1 |
| `permission-sets.mdx:393-394`, the delete consequence (wrapped over
two lines, so a line grep misses it; found by a multi-line scan) | A set
you created in this environment is removed. | A set authored in this
system is removed. Clause 1: set against "a set that ships with an
installed package/app" |
| `permission-sets.mdx:422`, the clone door | saves the copy ... as a
set authored in this environment: no package, ... | ... as a set
authored in this system: no package, ... Clause 1: the clone is saved
into no package |
| `content/docs/permissions/authentication.mdx:252`, first-run bootstrap
status | does this environment have no **human** user yet? | does this
system have no **human** user yet? Clause 2: the probe asks the running
system about its own users |
| `authentication.mdx:312-313`, set-initial-password (wrapped over two
lines) | an email/password way in to this environment without the SSO
round-trip | ... way in to this system ... Clause 2. This is the same
sense as cloud-connection's "Sign in to this environment", which #24404
rewrote |
| `authentication.mdx:1125`, the endpoint list's bootstrap-status entry
| whether this environment has no human user yet | whether this system
has no human user yet. Clause 2, as `:252` |
| `zh-CN.metadata-forms.generated.ts:2337`,
`metadataForms.permission.fields.packageId.helpText` | ...
在本环境中创建的权限集请留空。 | ... 在本系统中创建的权限集请留空。 Follows the `en` value PR #24454
regenerated ("Leave empty for a set authored in this system.") |
| `ja-JP.metadata-forms.generated.ts:2337`, same key | ...
この環境で作成したセットでは空のままにします。 | ... このシステムで作成したセットでは空のままにします。 Same |
| `es-ES.metadata-forms.generated.ts:2337`, same key | ... Déjalo vacío
para un conjunto creado en este entorno. | ... Déjalo vacío para un
conjunto creado en este sistema. Same |
| `packages/client/src/index.ts:3341`, `:3343`, TSDoc of
`environments.activate(id)` | Activate this environment for the current
session ... routed to this environment's database | **kept**: deployment
scope. The method addresses `/api/v1/cloud/environments/:id` on the
control plane. "this environment" is the one `id` names, one environment
among several |
| `index.ts:3353`, TSDoc of `environments.rotateCredential(id, ...)` |
Rotate the active database credential for this environment. | **kept**:
the same control-plane route family and the same scope |
| `index.ts:3364`, TSDoc of `environments.updateHostname(id, ...)` |
Update the hostname bound to this environment. | **kept**: the same |
| `index.ts:7816-7817`, `:7852-7853`, TSDoc of the environment-scoped
metadata client's `deleteItem` and `history` (each wrapped) | ... scoped
to this environment. | **kept**: configuration scope. This is the scoped
client's `/environments/:environmentId` mount, set against its unscoped
twin in the same sentence |
| `permission-sets.mdx:380`, the edit consequence's lead | **A set
shipped in code cannot be edited in the environment.** | **A set shipped
in code cannot be edited in this system.** Clause 2: the running system,
in the same consequence list as `:387`'s "one authored in this system" |
| `permission-sets.mdx:394-395`, the delete consequence (wrapped) | A
set that ships with an installed package/app cannot be removed from the
environment: its definition stays served from the package. | ... cannot
be removed from this system: ... Clause 2: it follows "A set authored in
this system is removed." in the same bullet |
| `authentication.mdx:268-269`, the bootstrap-status fail-open sentence
(wrapped) | ... rather than offering to create an owner on an
environment that may already have one. | ... rather than offering to
create an owner when one may already exist. Clause 2, with the noun
dropped: the same running system `:252` names in this section |
| `content/docs/api/client-sdk.mdx:395`, the comment on the
`ai.models()` example | // plan-filtered picker list (ADR-0028) | //
plan-filtered picker list (cloud ADR-0028). The same qualification as
the TSDoc and the `plugin-endpoints.mdx` row; see the next section |
| `permission-sets.mdx:239`, how a position's `permissionSets` resolve |
Each name in `permissionSets` is resolved in the environment's catalog |
**kept**: the spec calls the same lookup "the environment catalog"
(`packages/spec/src/identity/position.zod.ts:16`, `:93`, `:107`), and PR
#24454 left it |
| `permission-sets.mdx:374`, `:401` | `?scope=environment`; "environment
metadata under `single`" | **kept**: configuration scope. Both name the
ADR-0131 environment scope, as against an organization's |
| `permission-sets.mdx:345`, `:350`, `:360`, `:421` | "package vs
environment sets", "environment-authored sets", "An environment write",
"Environment-authored sets", "environment-authored set" | **kept**:
"environment-authored" is the documented name of the provenance class,
which the spec also keeps (`permission-set-owner-binding.ts:103`). The
`:345` heading and `:350` use the same class vocabulary. This round's
census found those two beyond the seat's list; they are kept for the
same reason |
The 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-0028` citation: read as cloud's
- This registry's
`docs/adr/0028-metadata-naming-and-namespace-isolation.md` is "Metadata
Naming & Namespace Isolation". It says nothing about models, plans or a
picker.
- `/ai/models` is served by `service-ai`, which this repository does not
ship. `content/docs/kernel/services-checklist.mdx` says "`service-ai`
(chat, completion, models, conversations) is Cloud/EE". The v17.0.0
entry that introduced `ai.models()` together with this citation
(`packages/client/CHANGELOG.md`, changeset `8b9d71e`) says "`service-ai`
is a Cloud/EE package in the `cloud` repo". Plan policy also stays
server-side in cloud (`packages/cloud-connection/package.json`, cloud
ADR-0008).
- This session could not read cloud's own registry. `add_repo` for
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.mjs` recognises the `cloud 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 metadataForms` over the six `*.source-hashes.ts` /
`*.source-hashes.generated.ts` files answers 0 for each.
- A generated-section table carries an entry only while the leaf is a
byte copy of its source (`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 --write` ran on the edited tree
and exited 0. It rewrote every bundle file (mtimes moved to the run),
and `git status --porcelain` stayed empty afterwards. The generator kept
all three hand values and wrote no hash entry.
- No key was added or dropped.
## Changeset
`.changeset/24456-client-platform-objects-this-system.md` is a `patch`
for `@objectstack/client` and `@objectstack/platform-objects`. Both
publish (`private` unset, and `files` ships `dist`). 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 `3becd9711` on base `31ce45c07`, unless it is
marked as taken at `1fd900cfd`. The second commit, `3becd9711`, changes
three hand-written docs pages and no package file (`git diff --stat
1fd900c 3becd97`). So the typecheck, test and i18n `--write`
readings taken at `1fd900cfd` cover the same package bytes. Each exit
code was captured before any pipe.
- Build: `turbo run build --filter=!@objectstack/docs --concurrency=2`
through `scripts/pm/os-verify-lock.sh`. At `1fd900cfd`: `Tasks: 76
successful, 76 total`, `VERDICT command-exit 0`. At `3becd9711`, in a
recreated worktree: `Tasks: 76 successful, 76 total`, `Cached: 76
cached, 76 total` (FULL TURBO), `VERDICT command-exit 0`.
- Typecheck, at `1fd900cfd`: `pnpm --filter @objectstack/client --filter
@objectstack/platform-objects typecheck` exited 0 (`VERDICT command-exit
0`), with `check:test-typecheck: OK` for both.
- Tests, at `1fd900cfd`: `@objectstack/platform-objects` `Test Files 77
passed (77)`, `Tests 1184 passed (1184)`. `@objectstack/client` `Test
Files 52 passed (52)`, `Tests 671 passed (671)`. `VERDICT command-exit
0`.
- `eslint --no-inline-config` over the four changed `.ts` files: exit 0,
no output, at both heads.
- Gates: `node scripts/pm/dispatch-gates.mjs --commands --repo
objectstack-ai/objectstack` at `3becd9711` (9 paths) derived 90
commands, the same 90 as at `1fd900cfd`, and all 90 exited 0. The
reconciliation `--ran` answered "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.
- I also ran the 11 declared-wide families and the 4 artifact-roster
families whose roster sits under a path of this diff
(`check-changeset-fixed`, `check:authz-resolver`,
`check:error-code-casing`, `check:filter-alias-parity`). All 15 exited
0, at both heads.
- Control-byte self-scan over the 9 changed files at `3becd9711`: no
hits.
- No ablation and no reverse verification: the diff changes copy only,
and no test pins any old sentence. `git grep -F` finds each old sentence
only at its own site.
- Not run locally: `test:repo` (CI `Test 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:3359` and `:3362` cite a bare
`ADR-0028` beside `/ai/models` ("the environment's plan-filtered picker
list (ADR-0028)", "the ADR-0028 allowlist"). Spec is `domain:spec`'s and
on hold here. The same `:3359` line and `:3371` ("Whether this is the
environment default") keep "environment", as PR #24454 read them: the
deployment's plan-scoped list and its configured default.
---
_Generated by [Claude
Code](https://claude.ai/code/session_01SYEJqDL3NXxrJRBVqaMu9T)_
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 33a45cc commit b7a688e
9 files changed
Lines changed: 30 additions & 18 deletions
File tree
- .changeset
- content/docs
- api
- permissions
- packages
- client/src
- platform-objects/src/apps/translations
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
392 | 392 | | |
393 | 393 | | |
394 | 394 | | |
395 | | - | |
| 395 | + | |
396 | 396 | | |
397 | 397 | | |
398 | 398 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
109 | 109 | | |
110 | 110 | | |
111 | 111 | | |
112 | | - | |
| 112 | + | |
113 | 113 | | |
114 | 114 | | |
115 | 115 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
249 | 249 | | |
250 | 250 | | |
251 | 251 | | |
252 | | - | |
| 252 | + | |
253 | 253 | | |
254 | 254 | | |
255 | 255 | | |
| |||
265 | 265 | | |
266 | 266 | | |
267 | 267 | | |
268 | | - | |
269 | | - | |
| 268 | + | |
270 | 269 | | |
271 | 270 | | |
272 | 271 | | |
| |||
310 | 309 | | |
311 | 310 | | |
312 | 311 | | |
313 | | - | |
| 312 | + | |
314 | 313 | | |
315 | 314 | | |
316 | 315 | | |
| |||
1122 | 1121 | | |
1123 | 1122 | | |
1124 | 1123 | | |
1125 | | - | |
| 1124 | + | |
1126 | 1125 | | |
1127 | 1126 | | |
1128 | 1127 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
366 | 366 | | |
367 | 367 | | |
368 | 368 | | |
369 | | - | |
| 369 | + | |
370 | 370 | | |
371 | 371 | | |
372 | 372 | | |
| |||
377 | 377 | | |
378 | 378 | | |
379 | 379 | | |
380 | | - | |
| 380 | + | |
381 | 381 | | |
382 | 382 | | |
383 | 383 | | |
384 | 384 | | |
385 | 385 | | |
386 | 386 | | |
387 | | - | |
| 387 | + | |
388 | 388 | | |
389 | 389 | | |
390 | 390 | | |
391 | 391 | | |
392 | 392 | | |
393 | | - | |
394 | | - | |
395 | | - | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
396 | 396 | | |
397 | 397 | | |
398 | 398 | | |
| |||
419 | 419 | | |
420 | 420 | | |
421 | 421 | | |
422 | | - | |
| 422 | + | |
423 | 423 | | |
424 | 424 | | |
425 | 425 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6699 | 6699 | | |
6700 | 6700 | | |
6701 | 6701 | | |
6702 | | - | |
| 6702 | + | |
6703 | 6703 | | |
6704 | 6704 | | |
6705 | 6705 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2334 | 2334 | | |
2335 | 2335 | | |
2336 | 2336 | | |
2337 | | - | |
| 2337 | + | |
2338 | 2338 | | |
2339 | 2339 | | |
2340 | 2340 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2334 | 2334 | | |
2335 | 2335 | | |
2336 | 2336 | | |
2337 | | - | |
| 2337 | + | |
2338 | 2338 | | |
2339 | 2339 | | |
2340 | 2340 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2334 | 2334 | | |
2335 | 2335 | | |
2336 | 2336 | | |
2337 | | - | |
| 2337 | + | |
2338 | 2338 | | |
2339 | 2339 | | |
2340 | 2340 | | |
| |||
0 commit comments