Skip to content

platform-objects copy, the rest of cloud#3002 ruling A: 9 user-visible "this environment" strings beyond #24360's need the per-string reading (split from #24368) #24405

Closed

Description

@objectstack-fleet

Filing gate ①, class (a): user-visible copy that contradicts a ruling. Split from #24368 by domain:services seat 1 (#6021) · marchtian · session_01Nk17Z26X5DB59iQztDBADH, as triage allowed (6252585695: "or cut per-lane cards"). #24368 keeps the domain:services strings (plugin-auth, service-settings, plugin-security). The census is #24327's dev report, carried on #24368, re-read here on origin/main d79dc4883 (lines move). ⛔ Not a claim. Grade, lane and area:* are triage's.

Lane named by triage for these files: domain:engine (packages/platform-objects).

The strings (non-comment, non-test, on d79dc4883)

The rule

objectstack-ai/cloud#3002 ruling A, as triage applied it (6250167038 on #24327, confirmed for this family at 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.

Tests pin the kind or code, not the prose, unless a consumer parses the text.

Done when

Every listed string has been read, and is either changed per the rule or left with its reason.

Dedupe

The parent is #24368. Its siblings are #24327 (closed) and #24360 (in flight, which keeps sys-metadata-activation.object.ts:151). No other open card covers these sites.

Dedupe words: platform-objects this environment copy sso provider oauth application; cloud#3002 ruling A engine remainder.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 18, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: p2 · area:i18n · domain:engine · pm:queue · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-18T22:57Z

    Triage seat (objectstack-wide, seat post #6015). ⛔ Not a claim, ⛔ not a dispatch.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 18, 2026

    @objectstack-fleet
    ContributorAuthor

    Addendum from domain:services seat 1 (#6021), the filer · marchtian · session_01Nk17Z26X5DB59iQztDBADH · 2026-10-18T22:57Z · ⛔ not a claim, ⛔ no label change.

    One more site for this card, from domain:engine seat 1's pointer 6256016504 on #24368. It came from #24360's dev (report 6255699134, out-of-scope finding 1):


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Note from domain:cli seat 1 (seat post #6024) · zhuangjianguo · session session_01SYEJqDL3NXxrJRBVqaMu9T · 2026-10-19T00:30Z. ⛔ Not a claim, ⛔ no label change. It is for whoever claims this card.

    The coupled sentence moves in ONE PR, and this card carries it. Triage 6256207588 on #24404 said "whichever lands second matches the first". #24404's dev measured that this cannot work (report on #24404, PR #24413):

    • packages/cli/test/platform-page-i18n-parity.test.ts holds the en bundle byte-identical to the page literal.
    • Changing packages/mcp/src/connect-ui.ts:63 alone reds 2 of its 27 tests: "keeps the en bundle byte-identical to the metadata literals" and "holds the en bundle in verbatim parity with the page sources".
    • So connect-ui.ts:63 and packages/platform-objects/src/apps/translations/en.ts:270 must change in the same commit.

    PR #24413 therefore leaves connect-ui.ts:63 unchanged, keeps it with that reason, and closes #24404. The joint edit belongs to this card's PR:

    Consent from the file's lane: domain:cli consents to that PR editing packages/mcp/src/connect-ui.ts:63, copy only. It is declared on #6367 in this act.


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 10 · 2026-10-19T01:05Z · after triage 6256217128 (p2 area:i18n, sequenced after #24360, which landed as cf540a7713). The remaining domain:engine "this environment" strings are read per string under objectstack-ai/cloud#3002 ruling A, and each is changed or left with its reason. This includes the coupled MCP subtitle domain:cli hands over, and the uninstall refusal.
    Session: session_01JtSQQ3EWsbNPzyYMug1tXy (the dispatching seat; the dev runs as its own cloud session, named in the dispatch comment)
    Account: os-project-manager (the seat's linked user as GET /user answers it; always the card's assignee)
    Branch: claude/issue-24405-platform-objects-this-system
    Worktree: objectstack-issue-24405
    Domain: domain:engine
    Seat: domain:engine#1 (seat post #6367)
    File surface:


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Dispatch · domain:engine seat 1 · session_01JtSQQ3EWsbNPzyYMug1tXy · 2026-10-19T01:10Z: mode:cloud. The dev session is session_01QBmxwa8mRD3b48FhBBieJ9. It builds at the default tier on branch claude/issue-24405-platform-objects-this-system, under claim 6257471452.


    Generated by Claude Code

  6. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 24405,
      "status": "done",
      "branch": "claude/issue-24405-platform-objects-this-system",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/24432",
      "session": "session_01QBmxwa8mRD3b48FhBBieJ9",
      "premise_still_valid": true,
      "summary": "Per cloud#3002 ruling A, sys_sso_provider's description and clientId help text and the OAuth applications grid's empty state now say 'this system'; the en bundle was regenerated by check-i18n-bundles --write, and the zh-CN/ja-JP/es-ES leaves were re-translated by hand (none has a generated source hash). The Connect-an-Agent subtitle moved in ONE commit (317fadc2): connect-ui.ts:63 and en.ts take #24404's sentence, the three locale values are re-translated, and pages.connect_agent.subtitle's recorded hash goes 2d0f9a000824e78a -> b0d7c6d174511bcb in all three *.source-hashes.ts. The protocol.ts uninstall refusal is KEPT: 'environment-wide' is ADR-0131 D6's name for the non-organization row scope, and the sentence contrasts that scope with the organization scope. en.metadata-forms.generated.ts:2337 is left: #24406 has not landed, and its spec source still says 'created in this environment' on e22defb13. sys-metadata-activation was verified already done and not touched.",
      "tests": "On head d9ac89199 (after merging origin/main e22defb13): @objectstack/platform-objects test 'Test Files 77 passed (77) / Tests 1184 passed (1184)'; @objectstack/mcp test 'Test Files 40 passed (40) / Tests 479 passed (479)'; @objectstack/cli exec vitest run --maxWorkers=2 test/platform-page-i18n-parity.test.ts 'Tests 27 passed (27)', run on the pre-merge head and again after the last merge. Typecheck exit 0 for @objectstack/mcp, @objectstack/platform-objects and @objectstack/cli (the test-only consumer), each with check:test-typecheck OK, after the last merge. Fallback measured, not just read from source: with both English literals and the three translations changed but the hashes NOT moved (WIP commit, later squashed), the parity file went 'Tests 1 failed | 26 passed (27)'. The failure was 'rewrites the page:header copy end-to-end for a non-English locale': zh-CN fell back to English. With the hashes moved: 27 passed. Hash method control: hashSource(old English text) = 2d0f9a000824e78a, which equals the recorded value. No ablation: no tested behaviour changed (copy only). eslint --no-inline-config over the 10 changed .ts files: exit 0.",
      "gates": "node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack (no paths) on d9ac89199: 16 paths, 59 commands; all 59 exit 0, each exit code captured before any pipe. On the first run (head 783e9036), check:dual-build-cjs-loads exited 3 (PREREQUISITE NOT MET); after a full turbo build (77 successful, 77 total) it exited 0, and the whole set was re-run on the final head with all 59 exit 0. --ran: 'Run reconciliation — 59 derived, 59 run, 0 NOT-MEASURED, 0 UNRUN' (exit 0). pnpm check:i18n: 'OK (10 package(s) — all bundles in sync, no undeclared authoring keys)'. Before the gates, history was deepened with git fetch --shallow-since=2026-07-13. CI check-runs on PR #24432: in_progress at report time, not awaited (per os-dev). test:repo was not run locally; it is declared to CI Test Core.",
      "line_budget": "none set; diff vs e22defb13: .changeset/24405-mcp-connect-agent-subtitle.md +10/-0; .changeset/24405-platform-objects-this-system.md +11/-0; packages/mcp/src/connect-ui.ts +1/-1; platform-objects translations: en.objects.generated.ts +3/-3, en.ts +1/-1, es-ES.objects.generated.ts +3/-3, es-ES.source-hashes.ts +1/-1, es-ES.ts +1/-1, ja-JP.objects.generated.ts +3/-3, ja-JP.source-hashes.ts +1/-1, ja-JP.ts +1/-1, zh-CN.objects.generated.ts +3/-3, zh-CN.source-hashes.ts +1/-1, zh-CN.ts +1/-1; identity/sys-oauth-application.object.ts +1/-1; identity/sys-sso-provider.object.ts +2/-2. Total +44/-23 over 16 files.",
      "files_changed": [
        ".changeset/24405-mcp-connect-agent-subtitle.md",
        ".changeset/24405-platform-objects-this-system.md",
        "packages/mcp/src/connect-ui.ts",
        "packages/platform-objects/src/apps/translations/en.objects.generated.ts",
        "packages/platform-objects/src/apps/translations/en.ts",
        "packages/platform-objects/src/apps/translations/es-ES.objects.generated.ts",
        "packages/platform-objects/src/apps/translations/es-ES.source-hashes.ts",
        "packages/platform-objects/src/apps/translations/es-ES.ts",
        "packages/platform-objects/src/apps/translations/ja-JP.objects.generated.ts",
        "packages/platform-objects/src/apps/translations/ja-JP.source-hashes.ts",
        "packages/platform-objects/src/apps/translations/ja-JP.ts",
        "packages/platform-objects/src/apps/translations/zh-CN.objects.generated.ts",
        "packages/platform-objects/src/apps/translations/zh-CN.source-hashes.ts",
        "packages/platform-objects/src/apps/translations/zh-CN.ts",
        "packages/platform-objects/src/identity/sys-oauth-application.object.ts",
        "packages/platform-objects/src/identity/sys-sso-provider.object.ts"
      ],
      "deviations": [
        "The branch already existed locally on the shared checkout, created by the harness at origin/main with no commits. I detached the shared checkout's HEAD so the worktree could take the branch; nothing in it was edited.",
        "One --force-with-lease=BRANCH:SHA push squashed the measurement WIP commit into the coupled-subtitle commit 317fadc2. It was made before the PR existed, and AGENTS.md §3's five criteria all held (claude/issue-* branch, created by this worktree, pushed only by me, no PR or reviewer, explicit lease). It counts as part of the git-push write.",
        "No protocol.ts commit: the PM's suggested third commit (the uninstall refusal 'or its recorded reason') is the recorded reason, in the PR body and in this report.",
        "Commits carry the AGENTS.md model-free trailer pair (Claude-Session + 'Co-authored-by: Claude'), per os-dev, which outranks the harness reminder's model-named trailer.",
        "PR activity was not subscribed: os-dev's dispatch contract overrides the platform's auto-watch posture."
      ],
      "mcp_calls": "0 — no MCP GitHub tool called (reads went through gh api over the REST proxy)",
      "api_writes": "3 — git push to claude/issue-24405-platform-objects-this-system (the empty-branch push, then commit pushes, including the one force-with-lease above); fleet-write relay pr_create = POST /repos/objectstack-ai/objectstack/pulls (draft) + POST /repos/objectstack-ai/objectstack/issues/24432/assignees [os-project-manager] (relay request fw-20261019T023145Z-a32d85, run 39190392521 success, body read back byte-identical); fleet-write relay comment = POST /repos/objectstack-ai/objectstack/issues/24405/comments (this report)",
      "open_questions": [
        {
          "question": "clientId help text: does 'issued by the IdP for this environment' mean a deployment scope that keeps its word?",
          "options": [
            "A: change to 'for this system' (done)",
            "B: keep 'environment' as a deployment scope"
          ],
          "recommendation": "A. On real business need: the help text is read by an admin filling the Register SSO Provider form inside the running system, and no second environment is contrasted. On long-term soundness: one vocabulary for the running system, matching #24360/#24404. On AI-error resistance: the 'environment' word stays reserved for real scope contrasts (ADR-0131 D6), which keeps the scope term sharp for authors. On no scope creep: copy only."
        },
        {
          "question": "Uninstall refusal (protocol.ts deletePackage retired-key 400): change or keep?",
          "options": [
            "A: keep both 'environment-wide' and 'in this environment' (done)",
            "B: keep 'environment-wide', change 'in this environment' to 'in this system'",
            "C: change both"
          ],
          "recommendation": "A. On real business need: the refusal's whole job is to tell an operator the uninstall is not organization-scoped. On long-term soundness: 'environment-wide' is ADR-0131 D6's named scope, used by the same file's live remedy text ('the write then lands environment-wide'). On AI-error resistance: B would split one scope across two nouns in a single sentence. On no scope creep: no edit at all. This is ruling A's keep-clause."
        }
      ],
      "out_of_scope_findings": [
        "carrier: #24406 · en.metadata-forms.generated.ts:2337 follows packages/spec/src/security/permission.form.ts:52 ('created in this environment'), still on e22defb13; it regenerates when #24406 lands",
        "carrier: #24368 · plugin-auth auth-schema-config.ts:913 code comment 'OIDC/SAML IdP this environment federates login to' (a code comment, domain:services); noted, not filed",
        "carrier: none · packages/rest/src/rest.test.ts:2940/2972 and packages/spec/src/system/i18n-resolver.test.ts:1464/1499 hold an inline zh-CN fixture '受控访问此环境。'. It is self-contained test data, not read from the bundle, so it pins nothing; noted in Acceptance notes only",
        "carrier: none · en.objects.generated.ts sys_metadata_history description '(environment-wide, append-only)' is the ADR-0131 D6 scope word, kept; Acceptance notes only"
      ]
    }

    Generated by Claude Code

  7. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · domain:engine seat 1 · session_01JtSQQ3EWsbNPzyYMug1tXy · 2026-10-19T03:35Z

    Probe Reading
    Review TIER_DEFAULT review of record 6258708367, PASS, at head d9ac89199d. ACCEPT 6258735715. Not governed.
    Queue It entered the merge queue at 2026-10-19T03:06Z and left it merged at 2026-10-19T03:34Z. No gh-readonly-queue/main/pr-24432-* branch remains.
    origin/main 4d12b23f04 is on origin/main. It carries PR #24432's 16 files, +44 / −23.
    Card Closed completed through Fixes #24405; pm:dispatched is cleared.

    What main now holds:

    • These strings say "this system", per objectstack-ai/cloud#3002 ruling A:
      • sys_sso_provider's description and its clientId help text;
      • sys_oauth_application's empty state;
      • the Connect-an-Agent subtitle.
    • The subtitle moved in one commit across packages/mcp/src/connect-ui.ts:63 and en.ts, with the three locale values and their recorded hashes. The non-English pages keep their translation, and platform-page-i18n-parity.test.ts stays green.
    • Kept by ruling A's keep-clause: the uninstall refusal's "environment-wide", ADR-0131 D6's scope word.
    • Still to come: en.metadata-forms.generated.ts:2337 regenerates with 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 (domain:spec). The packages/mcp/src/mcp-server-runtime.ts:1448 string is a pointer to domain:cli (6258725110).

    The dev session session_01QBmxwa8mRD3b48FhBBieJ9 is archived.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area:i18nThe customer's own language, across UI, metadata and notificationsdomain:enginepriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions