Repository navigation
fix(mcp,platform-objects): SSO provider, OAuth application and Connect-an-Agent copy says "this system" (cloud#3002 ruling A) - #24432
Conversation
…m" (cloud#3002 ruling A) The page literal in `@objectstack/mcp` and its `en` copy in `@objectstack/platform-objects` move together: the CLI parity test holds the `en` bundle byte-identical to the page literal. The zh-CN, ja-JP and es-ES translations are re-translated and their recorded source hashes move to the new `en` text, so those locales keep their translation instead of falling back to English. Claude-Session: https://claude.ai/code/session_01QBmxwa8mRD3b48FhBBieJ9 Co-authored-by: Claude <noreply@anthropic.com>
…this system" (cloud#3002 ruling A) `sys_sso_provider`'s description and its `clientId` help text, and the OAuth applications grid's empty-state message, named the running system "this environment". They now say "this system". The `en` bundle is regenerated by `check-i18n-bundles --write`; the zh-CN, ja-JP and es-ES leaves carrying the same phrase are re-translated by hand (none of them has a recorded generated-source hash). Claude-Session: https://claude.ai/code/session_01QBmxwa8mRD3b48FhBBieJ9 Co-authored-by: Claude <noreply@anthropic.com>
…ack/platform-objects Claude-Session: https://claude.ai/code/session_01QBmxwa8mRD3b48FhBBieJ9 Co-authored-by: Claude <noreply@anthropic.com>
…atform-objects-this-system
…atform-objects-this-system
📓 Docs Drift CheckThis PR changes 2 package(s): 19 hand-written doc(s) name something this change touched — list omitted above 15 rows. Re-derive on the tree named below: ⛔ 3 release-owned page(s) also affected — read-only, see AGENTS.md Documentation Guardrails. What this run could not see
Coarse fallback — 14 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 a1676815ec3091b0f705263e3f9118282a31bffa && git checkout a1676815ec3091b0f705263e3f9118282a31bffa
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin e22defb13c171900e2c1c54d1d15c24ed85fe91b d9ac89199d525c9a8b55b4b81c96fc6ce2d27a76 && git checkout -B drift-repro e22defb13c171900e2c1c54d1d15c24ed85fe91b && git merge --no-ff d9ac89199d525c9a8b55b4b81c96fc6ce2d27a76
node scripts/docs-audit/affected-docs.mjs --json e22defb13c171900e2c1c54d1d15c24ed85fe91b
|
Contract reviewServed-tier: What this record read:
① Derived judgmentsThe changed strings: right, per objectstack-ai/cloud#3002 ruling A. Each now names the running system "this system":
None of them contrasts a deployment scope with another scope. The The coupled subtitle: right, in one commit. Kept, right (open question 2, A): the uninstall refusal in Left, right:
What still says "this environment" on the head, none of it this card's:
② Semver levelTwo ③ Boundary flags
Implemented-by: VERDICT: PASS Generated by Claude Code |
席位核对 ·
|
| Item | Reading |
|---|---|
| Shape | Draft PR → main. The body opens Fixes #24405. 16 files, +44 / −23. Not governed (check-governed-merges.mjs --pr 24432: 0 of 16 paths hit the register). |
| Scope | sys-sso-provider.object.ts (the description and clientId help text) and sys-oauth-application.object.ts (the empty state) now say "this system", with their bundles. The Connect-an-Agent subtitle changes in one commit across en.ts, packages/mcp/src/connect-ui.ts:63 (under domain:cli's consent 6257116088), the three locale values and their recorded hashes. Two patch changesets. |
| Kept | The uninstall refusal's "environment-wide" / "in this environment": ADR-0131 D6's scope word, ruling A's keep-clause. en.metadata-forms.generated.ts:2337 waits for #24406. |
| Measured | platform-page-i18n-parity.test.ts went red, 1 of 27 (zh-CN fell back to English), with the hashes unmoved; with them moved it passes, 27 of 27. |
| Review | TIER_DEFAULT record of record 6258708367 on this head: PASS, in-seat. |
| Declaration | Clause-②: no on the claim, the PR body and both changesets. Copy only. |
| Gates | Dev at d9ac89199d: 59 derived, 59 run, 0 NOT MEASURED. Typecheck exit 0 for mcp, platform-objects and cli. |
| CI | 40 check-runs on d9ac89199d: 34 success, 6 skipped, 0 failed. |
Disposition:
open_questions: both settled A and accepted. TheclientIdhelp text reads "this system"; the uninstall refusal is kept.deviations: all accepted, as the record's ③ judges them: the detached shared checkout; one pre-PR--force-with-leasesquash on this worktree's own branch; noprotocol.tscommit, the reason recorded; the trailers.out_of_scope_findings: the spec copy, the rest of cloud#3002 ruling A: 9 published "this environment" strings in packages/spec need the per-string reading (split from #24368) #24406 carrier is right. The rest are code comments, inline test fixtures and the D6 scope word, which are kept. Thepackages/mcp/src/mcp-server-runtime.ts:1448string went todomain:clias a pointer.
Landing: ordinary queue (pr_ready + automerge_enable through the relay). Fixes #24405 then closes the card.
Generated by Claude Code
Fixes #24405
Clause-②: no (copy only: no accept set or public surface moves; owes the seat's review of record at
TIER_DEFAULTbefore the queue)What changed
objectstack-ai/cloud#3002 ruling A, as triage applied it (
6250167038on #24327,6252585695on #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.sys_oauth_applicationgridall_apps,emptyState.message(sys-oauth-application.object.ts)sys_sso_providerobjectdescription(sys-sso-provider.object.ts)sys_sso_provideractionregister_sso_provider, paramclientIdhelp textpage:headersubtitle (packages/mcp/src/connect-ui.ts,CONNECT_AGENT_PAGE) and itsencopy (platform-objectsen.ts,pages.connect_agent.subtitle)deletePackage's retired-key refusal (packages/metadata-protocol/src/protocol.ts)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 setpackageIdhelp text ("... created in this environment.")packages/spec/src/security/permission.form.ts, which is #24406 (domain:spec, open). The spec source still says "created in this environment" onorigin/maine22defb13, so regenerating changes nothing; it is never hand-edited. #24406 remains open for it.sys_metadata_activationobject descriptionmain(PR #24401); verified, not touchedTranslations. The same phrase in the translated leaves is re-translated by hand, as AGENTS.md allows for translated-locale values:
zh-CN.ts,ja-JP.ts,es-ES.ts. The recorded source hashpages.connect_agent.subtitlein the three*.source-hashes.tsfiles moves from2d0f9a000824e78atob0d7c6d174511bcb, computed withhashSourcefromsource-hash.ts(control: the same call on the old English text returns2d0f9a000824e78a, the recorded value).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 --writekept all six hand values and rewrote only the threeenleaves.No code, status, error code or envelope field changes. Nothing else in
packages/mcpmoves.The fallback, measured
packages/cli/test/platform-page-i18n-parity.test.ts, throughscripts/pm/os-verify-lock.sh, after building the CLI closure: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).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
enbundle 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 grepover the tree).packages/rest/src/rest.test.tsandpackages/spec/src/system/i18n-resolver.test.tscarry a zh-CN fixture ending 受控访问此环境。 — it is each test's own inline translation fixture, not read from this bundle, so it pins nothing here (andpackages/specis outside this card).Verification (head d9ac891, after merging
origin/maine22defb13)--filter '@objectstack/cli^...')VERDICT command-exit 0; thecheck:i18nprerequisite closure61 successful, 61 total; fullturbo run build --concurrency=277 successful, 77 total. After the last merge:@objectstack/mcp+@objectstack/platform-objectsrebuilt, exit 0.@objectstack/mcpexit 0,@objectstack/platform-objectsexit 0,@objectstack/cli(test-only consumer) exit 0, each withcheck:test-typecheckgreen.@objectstack/platform-objectsTest Files 77 passed (77),Tests 1184 passed (1184);@objectstack/mcpTest Files 40 passed (40),Tests 479 passed (479);@objectstack/clitest/platform-page-i18n-parity.test.tsTests 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).node scripts/pm/dispatch-gates.mjs --commands(no paths) on d9ac891 derived 59 commands; all 59 exit 0 (check:dual-build-cjs-loadsfirst 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-configover the 10 changed.tssource files: exit 0.test:reponot run locally (CITest Core).Acceptance notes
en.objects.generated.ts'ssys_metadata_historydescription "... (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 bundledescription(about:84) already reads "... to this system." onmain(PR fix(cloud-connection,mcp): in-system copy says "this system" or drops the noun, not "this environment" (cloud#3002 ruling A) #24413); not touched.mcp-server-runtime.ts's:1448text is alogger.warnline, andskill-md.ts's "ObjectStack environment" names a deployment addressed from outside; both are cloud-connection and mcp copy, the rest of cloud#3002 ruling A: 14 user-visible "this environment" strings need the per-string reading (split from #24368) #24404's readings and outside this card.plugin-auth'sauth-schema-config.tscomment "OIDC/SAML IdP this environment federates login to" is a code comment anddomain:services' (platform copy, the rest of cloud#3002 ruling A: about 50 non-comment "this environment" strings outside #24327 and #24360 (cloud-connection, plugin-auth, service-settings, platform-objects, mcp, plugin-security, spec) need the per-string reading #24368); not touched.permission.form.tshelp text and its generatedenleaf.Durable attribution: os-dev run for #24405, cloud session
session_01QBmxwa8mRD3b48FhBBieJ9, dispatched by thedomain:engineseat 1 PM (session_01JtSQQ3EWsbNPzyYMug1tXy).🤖 Generated with Claude Code
Generated by Claude Code