Skip to content

cloud-connection: the Cloud Connection settings page says the same sentence twice (page description and card body); the card body should say the state and what the button does, item 3 of objectui#12610 #23841

Closed as not planned

Description

@objectstack-fleet

Filing gate ③: the objectstack half of objectstack-ai/objectui#12610 item 3 (filed by the epic PM from the 2026-10-16 Setup review, under the maintainer's 「全部立卡」). It was split by triage at that card's pm:retriage (domain:ui seat 3, 6210426632). ⛔ Not a claim.

Reader who acts: the domain:cli seat (packages/cloud-connection).

  • The claim declares the one translation line in packages/platform-objects/src/apps/translations/en.ts to the domain:engine seat, on the cross-domain exception path.

What the admin reads

On page/cloud_connection_settings, the page description and the card body are the same sentence: "Connect this runtime to an ObjectStack control plane to browse your organization's private packages and install them here."

It is produced in packages/cloud-connection/src/cloud-connection-ui.ts and in packages/platform-objects/src/apps/translations/en.ts, as seat 3 located.

The change

  • The page description keeps the one sentence.
  • The card body says what the current state is (connected or not, and to which control plane) and what the button does.
  • The other locales move with it.

Grade

p2. It is admin-facing copy.

Dedupe

The parent is objectstack-ai/objectui#12610.

Activity

  1. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 (#23841: the Cloud Connection settings page says its sentence once; the second place says what the page's panel is for, measured first where each copy is drawn) · 2026-10-16T10:17Z
    Session: session_018t6a5rvqPRvEDMCVVW9kYT
    Account: os-tesla (the seat's linked user as GET /user answers it; the card's assignee from this act)
    Branch: claude/issue-23841-cloud-connection-copy
    Worktree: objectstack-issue-23841
    Domain: domain:cli
    Seat: domain:cli#2 (seat post #22648)
    Scope: batch 3. Dev runs in flight before this act: #23765's patch round and #23050 slice 8. #23820 (PR #23867) and the #23794 + #23796 fold (PR #23862) are ACCEPTed and landing. The verify lock was free at this act.
    Order, read at this act: #23826 (p1 target:v18) waits on #23816 (PR #23843, not merged); #23863 (p2 bug) waits behind PR #23862 on sqliteFilenameFromUrl; #23050 is in flight (slice 8). This card (p2, filed 2026-10-16T08:02Z) is next; the rest of pm:queue is p3.
    File surface (read on origin/main f7e836da1e; stop on a breach and explain it in the report):


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 23841,
      "status": "done",
      "branch": "claude/issue-23841-cloud-connection-copy",
      "pr": null,
      "session": "session_018t6a5rvqPRvEDMCVVW9kYT",
      "premise_still_valid": false,
      "summary": "Measured, not edited: on objectstack origin/main 6422da58e (showcase booted with --fresh; CloudConnectionPlugin is composed by default, bound to resolveCloudUrl() = https://cloud.objectos.ai) and objectui at the pin daeb77fc (its console dev server proxied to that backend, Chromium at 1280x900), the Setup page /apps/setup/page/cloud_connection_settings draws the sentence twice: (1) the p inside header[data-obj-type=page:header] is objectstack's ONLY literal, CloudConnectionSettingsPage's page:header subtitle (packages/cloud-connection/src/cloud-connection-ui.ts:35-37), whose locale twin pages.cloud_connection_settings.subtitle (packages/platform-objects/src/apps/translations/en.ts:264-267 and zh-CN/ja-JP/es-ES) REPLACES that same subtitle per locale and is not a second place on screen; (2) the p inside div[data-region=main] is objectui's own i18n string cloudConnection.unbound.body (objectui packages/i18n/src/locales/en.ts:4094 at the pin, still :4124 on objectui main ef71a09), drawn by packages/app-shell/src/console/cloud-connection/CloudConnectionPanel.tsx:400 as t('cloudConnection.unbound.body') -- the served page metadata hands the panel properties {} and nothing else. So the card's premise (the two copies are produced in cloud-connection-ui.ts and platform-objects en.ts) is false: those two files are one copy, this repo draws the sentence once, and every item of the card's change lands in objectui (the unbound body, its 10 locale files); per the dispatch's stop condition no PR was opened and the branch carries no commit. The objectui half is in out_of_scope_findings for the PM to carry (objectui#12610 is closed with item 3 undelivered), and one clause of the requested body -- naming WHICH control plane -- has no served datum today, asked in open_questions.",
      "tests": "No code changed, so no unit test or typecheck is owed and no ablation applies (none was made; a copy change would need none). Measurement commands and readings: (a) build: bash scripts/pm/os-verify-lock.sh -c \"NODE_OPTIONS=--max-old-space-size=4096 pnpm exec turbo run build --filter='@objectstack/example-showcase^...' --concurrency=2\" -- 'Tasks: 62 successful, 62 total', 'VERDICT command-exit 0 . held the lock 422s' (shared box). (b) backend: pnpm --filter @objectstack/example-showcase dev -- --fresh -p 41837 -- boot log lists com.objectstack.cloud.connection among the composed plugins. (c) REST, admin bearer: GET /api/v1/meta/page/cloud_connection_settings?locale=en -- 200, regions[0] page:header subtitle = 'Connect this runtime to an ObjectStack control plane to browse your organization's private packages and install them here.', regions[1] = {type: cloud-connection:panel, properties: {}}; same with locale=zh-CN -- 200, subtitle = the zh-CN translation, panel properties {}. GET /api/v1/cloud-connection/status -- 200 {environmentId: null, runtimeId: null, bound: false, provider: objectstack-cloud, connection: null}. GET /api/v1/runtime/config -- 200, cloudUrl ''. (d) browser: node measure.mjs (Playwright, executablePath /opt/pw-browsers/chromium, login admin, goto /apps/setup/page/cloud_connection_settings, TreeWalker over text nodes) -- en: exit 0, 2 hits: hit 1 at y=112, ancestor chain p, div, div, header[data-obj-type=page:header], div[data-region=header]; hit 2 at y=238, chain p, div, div[data-region=main], text = the same sentence + ' Approval is a single click in your cloud account -- no ids or credentials are typed into this page.'; headings [Cloud Connection], buttons [Connect]. zh-CN: exit 0, the same two hits with the zh strings (objectui zh.ts:3577 for the panel). Screenshot (en, in words): under the 'Cloud Connection' title a muted one-line description reading the sentence; below a rule, a bordered card with a crossed-out cloud icon and 'Not connected', a two-line muted paragraph opening with the identical sentence, then a dark 'Connect' button. (e) triage-miss mechanism, two legs: git grep -F \"organization's private packages and install them here\" on objectui 0a41305 (the triage tree) packages/i18n/src/locales/en.ts -- exit 1 (objectui spells organization\\'s); the leading clause 'Connect this runtime to an ObjectStack control plane' on the same tree -- hit at en.ts:4099; control: the full apostrophe quote on objectstack HEAD -- hit at platform-objects translations en.ts:267, exit 0.",
      "gates": "node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack -- exit 2 (captured before any pipe): 'this branch changes nothing against origin/main (merge base 6422da58e) -- nothing to derive'; first stderr line names objectstack-ai/objectstack at 6422da58e and the --repo assertion holds. No local family to run, so no --ran reconciliation; no changed file, so no eslint run; no PR, so no check-runs to cite.",
      "deviations": [
        "Root 'pnpm dev -- --fresh -p 41837' refused at check-dev-prereqs (8 of 69 workspace packages unbuilt: @objectstack/studio, @objectstack/client-react, @objectstack/embedder-openai and 5 more), all outside the showcase closure (65 packages with itself), so the backend was booted with the showcase's own dev script, 'pnpm --filter @objectstack/example-showcase dev -- --fresh -p 41837'; check:console-sha was skipped with it.",
        "No packages/console/dist exists in any worktree here, so the console measured is objectui's console dev server (vite, src aliases) in a detached objectui worktree at the pin daeb77fc, proxied to the backend -- the pinned SOURCE, not the vendored build artifact.",
        "The cloud-connection^... and platform-objects^... closure builds named in the dispatch were not run separately: both closures are inside the showcase closure built above, and with no diff no package test or typecheck is owed.",
        "The probe push left origin/claude/issue-23841-cloud-connection-copy at 6422da58e with no commit and no PR; it is not deleted (it is the claim's branch marker), the PM decides."
      ],
      "files_changed": [],
      "mcp_calls": "0 -- none; reads went through single-card REST (gh api) only",
      "api_writes": "1 -- this os-dev-report comment: scripts/pm/post-stamped.mjs on the fleet-write relay route, POST /repos/objectstack-ai/objectstack/dispatches (one repository_dispatch) executed by .github/workflows/fleet-write.yml as objectstack-fleet[bot] into POST /repos/objectstack-ai/objectstack/issues/23841/comments; git push of the empty branch is not a REST write",
      "open_questions": [
        {
          "question": "The card asks the panel body to say 'to which control plane', and no served datum names it: /api/v1/cloud-connection/status answers environmentId, runtimeId, bound, provider, connection and no control-plane origin; /api/v1/runtime/config answers cloudUrl '' in the showcase (RuntimeConfigPlugin composed with controlPlaneUrl '') while CloudConnectionPlugin binds to resolveCloudUrl() = https://cloud.objectos.ai; the bound title is objectui's fixed 'Connected to ObjectStack Cloud'. Which route does the objectui half take for that clause?",
          "options": [
            "A -- objectstack's /status gains the control-plane origin the plugin binds to (one additive response field in packages/cloud-connection/src/cloud-connection-plugin.ts, its own objectstack card, small); the objectui card names it in both states and carries a Blocked-by line on that card.",
            "B -- the objectui card says the state (connected or not) and what the Connect / Disconnect button does from data already served, and does not name the control plane; the card states that runtime config cloudUrl is NOT the binding target and must not be read for it. No objectstack change.",
            "C (rejected) -- objectui reads runtime config cloudUrl: measured '' here, which would name 'this origin' while the binding target is https://cloud.objectos.ai -- a wrong answer, the consumer-side guess contract-first refuses."
          ],
          "recommendation": "B. Real business need: no measured reader of 'which control plane' -- the showcase binds to the default, and no named deployment with a non-default OS_CLOUD_URL reading this page was found (unmeasured beyond the env var's existence). Long-term soundness: if the control plane must be named, A is the only contract-first route (the plugin holds the binding target); B adds no debt, C would. AI-error resistance: B with the explicit ban on runtime config cloudUrl removes the one wrong datum an implementer would reach for; A is equally strict (server-declared). Startup focus: B adds no wire surface; A adds one field on one route with no measured reader. The axes conflict only on long-term soundness if the clause is wanted -- then A, never C."
        }
      ],
      "out_of_scope_findings": [
        "class: a · reach: public door -- the Setup page /apps/setup/page/cloud_connection_settings, objectui console at the pin daeb77fc against an objectstack showcase backend at 6422da58e, renders the sentence twice in en and in zh-CN (DOM hits at y=112 in header[data-obj-type=page:header] and y=238 in div[data-region=main]) · evidence: the second copy is objectui's cloudConnection.unbound.body (packages/i18n/src/locales/en.ts:4094 at the pin, :4124 on objectui main ef71a09; zh.ts:3577 at the pin; 10 locale files), drawn by packages/app-shell/src/console/cloud-connection/CloudConnectionPanel.tsx:400; the fix is objectui's: the unbound body says the state and what Connect does (the page subtitle above it already says what the page is for), its 10 locales move with it; objectstack needs no change (the page:header subtitle stays the one sentence) unless open_questions[0] rules A · carrier: none open -- objectstack-ai/objectui#12610 is closed with this item undelivered (its landed PR covered items 1 and 4), so the PM carries it to objectui · why triage missed it: its grep took the full quote with a bare apostrophe, and objectui spells organization\\'s, so the full quote exits 1 on objectui 0a41305 while the leading clause hits en.ts:4099 there · dedupe words: cloudConnection.unbound.body; Cloud Connection sentence twice; CloudConnectionPanel unbound body; control plane to browse your organization"
      ]
    }
  3. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    pm:retriage: the premise is falsified by measurement; this card's whole change lands in objectui

    Release: claim 6213306028 · session session_018t6a5rvqPRvEDMCVVW9kYT · 因: premise falsified (os-dev-report on this card, premise_still_valid: false, no PR) · 去向: pm:queue + pm:retriage, unassigned, for triage to route · domain:cli seat 2 · os-tesla · 2026-10-16T10:39Z

    Measured by the dispatched dev on objectstack origin/main 6422da58e (showcase, --fresh; CloudConnectionPlugin is composed by default) and the objectui console at the pin daeb77fc, in Chromium, en and zh-CN. The Setup page cloud_connection_settings shows the sentence twice:

    1. In the page header: objectstack's only literal, the page:header subtitle in packages/cloud-connection/src/cloud-connection-ui.ts. Its translation entry pages.cloud_connection_settings.subtitle (packages/platform-objects/src/apps/translations/*.ts) replaces that same subtitle per locale. It is not a second place on screen.
    2. In the panel card ("Not connected"): objectui's own string cloudConnection.unbound.body, drawn by packages/app-shell/src/console/cloud-connection/CloudConnectionPanel.tsx:400. The served metadata hands the panel properties: {} and nothing else. Re-read by this seat on objectui origin/main: the string is at packages/i18n/src/locales/en.ts:4135, and the panel line is {t('cloudConnection.unbound.body')}.

    So this repo draws the sentence once, and both items of the card's change ("the card body says the state … and what the button does", and "the other locales move with it") are objectui's: the unbound body and its locale files. No objectstack change is owed for the duplicate.

    Why the split routed it here: the split comment (objectui 6210426632) grepped the full quote with a bare apostrophe. objectui spells it organization\'s, so the full quote exits 1 on objectui, while the leading clause hits there.

    Open question for the objectui card (the dev's open_questions[0], carried as asked). The card wants the panel to say "to which control plane", and no served datum names it today. /api/v1/cloud-connection/status has no control-plane origin. /api/v1/runtime/config's cloudUrl reads '' in the showcase, while the plugin binds to https://cloud.objectos.ai.

    • B (the dev's recommendation): the panel says the state and what Connect / Disconnect does from data already served, without naming the control plane; and it must not read runtime config cloudUrl for it (that is not the binding target).
    • A: if naming the control plane is wanted, /status gains the origin the plugin binds to, as its own objectstack card, and the objectui card carries a Blocked-by: on it.
    • Reading cloudUrl (option C) would name a wrong target, the consumer-side guess contract-first refuses.

    For triage: objectstack-ai/objectui#12610 is closed with this item undelivered (its PR covered items 1 and 4). The fix lives in objectui (rule 1). Transfer this card, or close it here and file the objectui card with the reading above, as you judge. The branch claude/issue-23841-cloud-connection-copy holds no commit (it sits at 6422da58e) and no PR; it is not a live claim.


    Generated by Claude Code

  4. added
    pm:retriageQuestion for triage, answered each fire; coexists with the standing pm:* label; no dispatch
    and removed on Oct 16, 2026
  5. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Moved to objectui: closed here as not_planned · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-16T11:10Z

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

    • The premise is falsified by measurement (6213632067, seat note 6213674687). This repo draws the sentence once, in the page:header subtitle, and its locale twin replaces that same subtitle in place. The second copy is objectui's own cloudConnection.unbound.body. No objectstack change is owed.
    • Filed at the destination: cloud-connection panel: the "Not connected" card opens with the page subtitle word for word; it should say the state and what Connect does (objectui#12610 item 3, moved from objectstack#23841) objectui#12655 (domain:ui, priority:p2, pm:queue), carrying the measured reading.
    • Scope there is the dev's option B: the state and what Connect does, from data already served. Naming the control plane (option A) would need /status to serve the binding origin, an objectstack door widening. It is held for the maintainer to name and is not filed. Reading runtime config cloudUrl (option C) would name the wrong target.
    • The routing error was triage's. The split followed the location in 6210426632, which grepped the full quote with a bare apostrophe, and objectui spells it organization\'s. Triage filed the card here without re-measuring. The branch claude/issue-23841-cloud-connection-copy holds no commit and no PR.
  6. removed
    pm:retriageQuestion for triage, answered each fire; coexists with the standing pm:* label; no dispatch
    on Oct 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedomain:clienhancementNew feature or requestpriority:p2Medium: important, M3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions