Repository navigation
Commit 4d12b23
fix(mcp,platform-objects): SSO provider, OAuth application and Connect-an-Agent copy says "this system" (cloud#3002 ruling A) (#24432)
Fixes #24405
Clause-②: no (copy only: no accept set or public surface moves; owes the
seat's review of record at `TIER_DEFAULT` before the queue)
## What changed
objectstack-ai/cloud#3002 ruling A, as triage applied it (`6250167038`
on #24327, `6252585695` on #24368): "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. Every string the card lists was read
and is either changed or left with its reason below.
| site (by symbol) | before | after | reading |
|:--|:--|:--|:--|
| `sys_oauth_application` grid `all_apps`, `emptyState.message`
(`sys-oauth-application.object.ts`) | ... sign users in with this
environment. | ... sign users in with this system. | the system the user
is in: "this system" |
| `sys_sso_provider` object `description` (`sys-sso-provider.object.ts`)
| External SSO identity providers (OIDC / SAML) this environment
federates login to | ... this system federates login to | same |
| `sys_sso_provider` action `register_sso_provider`, param `clientId`
help text | OAuth client ID issued by the IdP for this environment. |
... for this system. | same: the relying party the IdP registered is the
running system; no environment is contrasted with another |
| Connect-an-Agent `page:header` subtitle
(`packages/mcp/src/connect-ui.ts`, `CONNECT_AGENT_PAGE`) and its `en`
copy (`platform-objects` `en.ts`, `pages.connect_agent.subtitle`) | Give
any MCP-capable AI client governed access to this environment — ... |
Give any MCP-capable AI client governed access to this system — every
call runs under the caller's own permissions and row-level security. |
the sentence #24404 chose; both literals in ONE commit (317fadc) |
| `deletePackage`'s retired-key refusal
(`packages/metadata-protocol/src/protocol.ts`) | An uninstall is
environment-wide — it removes every row bound to the package in this
environment — so no organization scope is stated or confirmed. |
**kept** | a deployment/configuration scope: "environment-wide" is
ADR-0131 D6's name for the row scope that is not an organization's
(`organizationId: null`), and the sentence exists to contrast that scope
with the organization scope the retired key used to pick. "in this
environment" restates the extent of that same scope; renaming it alone
would break the contrast the refusal is built on. The sibling remedy in
the same file ("the write then lands environment-wide, where every
organization reads it.") uses the same vocabulary and is not on this
card either. |
| `en.metadata-forms.generated.ts`, permission set `packageId` help text
("... created in this environment.") | — | **kept, not regenerated** |
it follows `packages/spec/src/security/permission.form.ts`, which is
#24406 (`domain:spec`, open). The spec source still says "created in
this environment" on `origin/main` `e22defb13`, so regenerating changes
nothing; it is never hand-edited. #24406 remains open for it. |
| `sys_metadata_activation` object description | — | untouched | already
"authored in this system" on `main` (PR #24401); verified, not touched |
**Translations.** The same phrase in the translated leaves is
re-translated by hand, as AGENTS.md allows for translated-locale values:
- Connect-an-Agent subtitle: zh-CN 此环境 → 本系统, ja-JP この環境 → このシステム, es-ES
este entorno → este sistema, in `zh-CN.ts`, `ja-JP.ts`, `es-ES.ts`. The
recorded source hash `pages.connect_agent.subtitle` in the three
`*.source-hashes.ts` files moves from `2d0f9a000824e78a` to
`b0d7c6d174511bcb`, computed with `hashSource` from `source-hash.ts`
(control: the same call on the old English text returns
`2d0f9a000824e78a`, the recorded value).
- The three object strings in `zh-CN` / `ja-JP` /
`es-ES.objects.generated.ts`, the same substitution. None of the three
leaves has an entry in any `*.source-hashes.generated.ts` (they are
legacy-trusted translator text), so no generated hash moves;
`check-i18n-bundles --write` kept all six hand values and rewrote only
the three `en` leaves.
No code, status, error code or envelope field changes. Nothing else in
`packages/mcp` moves.
## The fallback, measured
`packages/cli/test/platform-page-i18n-parity.test.ts`, through
`scripts/pm/os-verify-lock.sh`, after building the CLI closure:
- Both English literals and the three translations changed, hashes NOT
moved (WIP commit, since squashed): `Tests 1 failed | 26 passed (27)`;
the red test is "rewrites the page:header copy end-to-end for a
non-English locale" (the zh-CN subtitle fell back to English).
- Hashes moved: `Tests 27 passed (27)`.
So the hashes are load-bearing: without them every non-English locale
silently serves English.
## Pins
The parity test is the one consumer that parses this text (it holds the
`en` bundle byte-identical to the page literal), and it is green with
the new sentence on both sides. No other test, fixture, docs page, skill
or platform-checklist item quotes any of the changed strings (`git grep`
over the tree). `packages/rest/src/rest.test.ts` and
`packages/spec/src/system/i18n-resolver.test.ts` carry a zh-CN fixture
ending 受控访问此环境。 — it is each test's own inline translation fixture, not
read from this bundle, so it pins nothing here (and `packages/spec` is
outside this card).
## Verification (head d9ac891, after merging `origin/main`
`e22defb13`)
- Build: CLI closure (`--filter '@objectstack/cli^...'`) `VERDICT
command-exit 0`; the `check:i18n` prerequisite closure `61 successful,
61 total`; full `turbo run build --concurrency=2` `77 successful, 77
total`. After the last merge: `@objectstack/mcp` +
`@objectstack/platform-objects` rebuilt, exit 0.
- Typecheck (after the last merge): `@objectstack/mcp` exit 0,
`@objectstack/platform-objects` exit 0, `@objectstack/cli` (test-only
consumer) exit 0, each with `check:test-typecheck` green.
- Tests: `@objectstack/platform-objects` `Test Files 77 passed (77)`,
`Tests 1184 passed (1184)`; `@objectstack/mcp` `Test Files 40 passed
(40)`, `Tests 479 passed (479)`; `@objectstack/cli`
`test/platform-page-i18n-parity.test.ts` `Tests 27 passed (27)` (re-run
after the last merge: 27 passed).
- `pnpm check:i18n`: `OK (10 package(s) — all bundles in sync, no
undeclared authoring keys)`.
- Gates: `node scripts/pm/dispatch-gates.mjs --commands` (no paths) on
d9ac891 derived 59 commands; all 59 exit 0
(`check:dual-build-cjs-loads` first exited 3, PREREQUISITE NOT MET, on
the first run and exit 0 after the full build). `--ran`: `Run
reconciliation — 59 derived, 59 run, 0 NOT-MEASURED, 0 UNRUN`.
- `pnpm exec eslint --no-inline-config` over the 10 changed `.ts` source
files: exit 0.
- `test:repo` not run locally (CI `Test Core`).
## Acceptance notes
- `en.objects.generated.ts`'s `sys_metadata_history` description "...
(environment-wide, append-only)" is the same ADR-0131 D6 scope word and
not on this card's list. Left.
- `packages/mcp/src/connect-ui.ts`'s bundle `description` (about `:84`)
already reads "... to this system." on `main` (PR #24413); not touched.
`mcp-server-runtime.ts`'s `:1448` text is a `logger.warn` line, and
`skill-md.ts`'s "ObjectStack environment" names a deployment addressed
from outside; both are #24404's readings and outside this card.
- `plugin-auth`'s `auth-schema-config.ts` comment "OIDC/SAML IdP this
environment federates login to" is a code comment and `domain:services`'
(#24368); not touched.
- #24406 is not addressed here; it remains open for the
`permission.form.ts` help text and its generated `en` leaf.
Durable attribution: os-dev run for #24405, cloud session
`session_01QBmxwa8mRD3b48FhBBieJ9`, dispatched by the `domain:engine`
seat 1 PM (`session_01JtSQQ3EWsbNPzyYMug1tXy`).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---
_Generated by [Claude
Code](https://claude.ai/code/session_01QBmxwa8mRD3b48FhBBieJ9)_
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 538f923 commit 4d12b23
16 files changed
Lines changed: 44 additions & 23 deletions
File tree
- .changeset
- packages
- mcp/src
- platform-objects/src
- apps/translations
- identity
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
63 | | - | |
| 63 | + | |
64 | 64 | | |
65 | 65 | | |
66 | 66 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1491 | 1491 | | |
1492 | 1492 | | |
1493 | 1493 | | |
1494 | | - | |
| 1494 | + | |
1495 | 1495 | | |
1496 | 1496 | | |
1497 | 1497 | | |
| |||
1894 | 1894 | | |
1895 | 1895 | | |
1896 | 1896 | | |
1897 | | - | |
| 1897 | + | |
1898 | 1898 | | |
1899 | 1899 | | |
1900 | 1900 | | |
| |||
1965 | 1965 | | |
1966 | 1966 | | |
1967 | 1967 | | |
1968 | | - | |
| 1968 | + | |
1969 | 1969 | | |
1970 | 1970 | | |
1971 | 1971 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
267 | 267 | | |
268 | 268 | | |
269 | 269 | | |
270 | | - | |
| 270 | + | |
271 | 271 | | |
272 | 272 | | |
273 | 273 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1491 | 1491 | | |
1492 | 1492 | | |
1493 | 1493 | | |
1494 | | - | |
| 1494 | + | |
1495 | 1495 | | |
1496 | 1496 | | |
1497 | 1497 | | |
| |||
1894 | 1894 | | |
1895 | 1895 | | |
1896 | 1896 | | |
1897 | | - | |
| 1897 | + | |
1898 | 1898 | | |
1899 | 1899 | | |
1900 | 1900 | | |
| |||
1965 | 1965 | | |
1966 | 1966 | | |
1967 | 1967 | | |
1968 | | - | |
| 1968 | + | |
1969 | 1969 | | |
1970 | 1970 | | |
1971 | 1971 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
176 | 176 | | |
177 | 177 | | |
178 | 178 | | |
179 | | - | |
| 179 | + | |
180 | 180 | | |
181 | 181 | | |
182 | 182 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
176 | 176 | | |
177 | 177 | | |
178 | 178 | | |
179 | | - | |
| 179 | + | |
180 | 180 | | |
181 | 181 | | |
182 | 182 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1491 | 1491 | | |
1492 | 1492 | | |
1493 | 1493 | | |
1494 | | - | |
| 1494 | + | |
1495 | 1495 | | |
1496 | 1496 | | |
1497 | 1497 | | |
| |||
1894 | 1894 | | |
1895 | 1895 | | |
1896 | 1896 | | |
1897 | | - | |
| 1897 | + | |
1898 | 1898 | | |
1899 | 1899 | | |
1900 | 1900 | | |
| |||
1965 | 1965 | | |
1966 | 1966 | | |
1967 | 1967 | | |
1968 | | - | |
| 1968 | + | |
1969 | 1969 | | |
1970 | 1970 | | |
1971 | 1971 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
176 | 176 | | |
177 | 177 | | |
178 | 178 | | |
179 | | - | |
| 179 | + | |
180 | 180 | | |
181 | 181 | | |
182 | 182 | | |
0 commit comments