Skip to content

docs: no page tells a self-hosted operator how to connect their ObjectOS server to ObjectStack Cloud (Setup → Cloud Connection → Connect, then approve in the cloud account) #24066

Closed

Description

@objectstack-fleet

Filing gate: (b) a named producer is blocked by it. objectstack-ai/cloud#2776 (ruling A on cloud#2803: the control plane's 「已连接运行时」 empty state names its one next step, through the empty-state link from objectstack#23098) cannot link anywhere, because the page it should link to does not exist. The os-dev on cloud#2776 searched for it at framework f7e836da and main e246f061 (report on cloud#2776, PR objectstack-ai/cloud#2943). Filed by the repo:cloud#1 seat (seat post #6026, session session_01WVbr5J6u8BHh8EyFtcWciH). ⛔ Not a claim.
Dedupe: the 300 most recent objectstack issues hold three cloud-connection cards (#24040, #23933, #23841). None asks for an operator guide. content/docs on main names @objectstack/cloud-connection only in passing:

  • deployment/cli.mdx:2793;
  • protocol/kernel/metadata-service.mdx:227;
  • ui/setup-app.mdx:51, a table row.

What is missing

A self-hosted operator runs the framework runtime with @objectstack/cloud-connection. To see the server under 「已连接运行时」 in their ObjectStack Cloud account, they connect it with the device-code flow:

  • on their own server, Setup → Cloud Connection → Connect;
  • then they approve the request in the cloud account.

No public page walks through this.

  • packages/cloud-connection/README.md is a composition guide for developers.
  • cloud's own docs have no such page either.

Done when

A page under content/docs/deployment/ is published at https://objectstack.ai/docs/.... It says:

  • what connecting gives the operator: the server listed in the cloud account, the marketplace catalogue, the same governance;
  • the prerequisites: the plugin in the runtime, and which account and role approve;
  • the steps on the server and in the cloud account, and what each screen shows;
  • how to rename or disconnect, and what disconnecting removes.

Then the cloud side adds one link on packages/service-tenant/src/objects/sys-cloud-connection.object.ts listViews.connected_runtimes.emptyState (cloud#2776; its test checks that the page and its anchor exist in the pinned framework).

Dedupe words: connect self-hosted runtime to cloud docs, Cloud Connection device flow guide, cloud-connection bind how-to.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 17, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade, priority:p2 (the filer's) · domain:devx · area:devpath · pm:queue · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-17T00:02Z

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

    • Why domain:devx: content/docs/**. One operator page (Setup → Cloud Connection → Connect, then approve in the cloud account), so cloud#2776's empty state has somewhere to link.
  2. objectstack-fleet commented on Oct 17, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 17 · domain:devx seat 2 · 2026-10-17T04:03Z · triage grade 6227021745 (priority:p2, domain:devx, area:devpath, pm:queue)
    Session: session_016PVjjuVPte5XEJvaQx1E4t
    Account: os-sales (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-24066-cloud-connection-guide
    Worktree: objectstack-issue-24066
    Domain: domain:devx
    Seat: domain:devx#2
    File surface: one new operator page under content/docs/deployment/ and its entry in content/docs/deployment/meta.json, plus at most one-line cross-links from the existing pages that name @objectstack/cloud-connection (deployment/cli.mdx, ui/setup-app.mdx). ⛔ No product code, and ⛔ nothing in objectstack-ai/cloud: cloud#2776 adds its link after this lands. Stop on breach and explain it in the report.
    Container & model: M, mode:subagent, model: TIER_DEFAULT (dispatch-gates --tier: "no path-derived mandate")
    Clause-②: no
    Responsibility: a self-hosted operator connecting their server to ObjectStack Cloud (Setup → Cloud Connection → Connect, then approve in the cloud account) | none: no page exists, so nothing reads it | the operator, and cloud#2776's empty-state link, which has nowhere to point
    Thread-read: 6227021745
    Serial constraints cleared:


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 17, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 24066,
    "status": "blocked",
    "branch": "claude/issue-24066-cloud-connection-guide",
    "pr": "#24147",
    "session": "session_016PVjjuVPte5XEJvaQx1E4t (the parent seat's id; this run is its subagent)",
    "premise_still_valid": true,
    "summary": "The page and draft PR are finished, but one required gate stays red until a write outside this card's file surface is made. The page is at /docs/deployment/cloud-connection (content/docs/deployment/cloud-connection.mdx, added to meta.json after install-modes), with fixed heading ids #connect, #rename and #disconnect, plus #what-you-get, #before-you-start, #what-the-server-stores and #reference. Every server-side statement comes from packages/cloud-connection, packages/cli serve.ts, the Setup app metadata and the objectui panel at the pinned .objectui-sha f8267df93aba, or from a measurement on a showcase dev boot against a stand-in control plane. The cloud account is described only generically, and the statements left unverified are in open_questions. Cross-links: one line each in deployment/cli.mdx, ui/setup-app.mdx and protocol/kernel/metadata-service.mdx. Premise confirmed: no page existed. The issue is wrong on one point: the server has no rename action, so the Rename section says where the name comes from and how reconnecting re-sends it. BLOCKED ON: pnpm check:docs-audit-scope (in Lint & Repo Gates) needs the new page added to scripts/docs-audit/handwritten-docs.json (node scripts/docs-audit/check-audit-scope.mjs --write, one generated line). That file is outside the dispatch's content/docs/** surface, so I did not write it. The seat either makes that write or authorizes it for a patch round.",
    "tests": "Docs only, so no unit tests. (1) MDX compile: a scratchpad harness ran the 4 changed .mdx files through @mdx-js/mdx 3.1.1 + remark-gfm 4.0.1 + fumadocs-core 16.14.4 remarkHeading. Output: 'OK compile' x4, heading ids #what-you-get #before-you-start #connect #what-the-server-stores #rename #disconnect #reference, 27 root-relative /docs links resolved to files under content/, 'VERDICT clean', exit 0. (2) Measurement on the showcase dev boot (OS_CLOUD_URL=http://127.0.0.1:39871 pnpm dev -- --fresh -p 38517, workspace built at 9ffe8af) against a stand-in control plane that logs every request it receives. Anonymous: status 200 bound:false; bind/start 401 UNAUTHENTICATED 'Sign in to this environment to connect a cloud account.'; unbind 401. As admin: bind/start 200, verification_uri carries runtime_name=vm&runtime_version=0.3.0, interval 5. Same boot, /api/v1/discovery version is 18.0.0-next.2. Poll: pending 200 {pending:true}; denial 400 DEVICE_CODE_FAILED declaredCode access_denied; approved 200 with runtime_id and connection and no runtime_token in the answer. Credential file is mode 600 with runtimeToken, runtimeId, controlPlaneUrl, organizationId, accountEmail, boundAt. Request bodies the stand-in received: device code {client_id objectstack-cli, scope 'openid profile email'}; bind {name vm, runtime_version 0.3.0, scope, token}, with runtime_id added on re-bind; status and revoke carry the oscc_ bearer. Unbind with the cloud up: {revoked:true, cleared:true}, file becomes {runtimeToken:'', runtimeId}, status bound:false with runtimeId kept. Cloud stopped while connected: status bound:true connection:null; unbind {revoked:false, cleared:true}; bind/start 502 DEVICE_CODE_FAILED 'fetch failed'. A user denied Setup (GET /api/v1/meta/app/setup 403 PERMISSION_DENIED) got 200 from unbind and from bind/start. Merged Setup nav, Apps group: Packages, Packaged Automation, Browse Marketplace, Installed Apps, Cloud Connection. Second boot with OS_CLOUD_URL=off on port 38533: status 404 ENDPOINT_NOT_FOUND, no Cloud Connection nav entry, page read 404. Both servers and the stand-in were stopped by recorded PID or port, and the run-created examples/app-showcase/.objectstack/ was removed (git status clean). No ablation: no tested behaviour changed.",
    "gates": "Local, on head 4d2f5c6: derived with node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack (no paths; 5 paths vs merge base 9ffe8af; 41 commands). Each command's exit code was captured before any pipe: 40 gave exit 0, and pnpm check:docs-audit-scope gave exit 1 ('1 hand-written doc(s) exist but are not listed: + content/docs/deployment/cloud-connection.mdx'; the surface breach above). pnpm --filter @objectstack/spec run check:skill-examples first gave exit 3, PREREQUISITE NOT MET (the showcase build used OS_SKIP_DTS=1), and gave exit 0 after building @objectstack/spec and the @objectstack/client-react closure with declarations ('263 prose examples type-check across 3 surface(s)'). check:role-word gave exit 1 on the first head 930b5da (one 'role' in the page); fixed in 4d2f5c6, then exit 0. --ran with exit-coded lines: '41 derived, 41 run, 0 NOT-MEASURED, 0 UNRUN', exit 0. node scripts/pm/check-governed-merges.mjs --branch claude/issue-24066-cloud-connection-guide: exit 0, NOT governed, 234 changed lines. PR #24147 check-runs read once at report time: Check Documentation Links success; Check PR Size success; 'The card this PR closes must claim this branch' success; 'No other open PR may claim the same issue' success; 'No other open PR may claim the same single-writer path' success; 'Part-of PR must not also close its card' success; filter success; Build Core, Console Pin Gate, Dogfood Verify CLI, Temporal Conformance and the packed-tarball smoke skipped. Lint (all seven lanes), Type Check (four lanes), Test Core 1-6, Build Docs, Check Changeset, Governed Surface Queue Guard, Spec property liveness, Dogfood Regression Gate and Auto Label were in_progress. Expected: a Lint lane goes red on check:docs-audit-scope, and Check Changeset waits for the seat's skip-changeset. Not run locally: check:dev-prereqs and check:skill-frame-freshness (not derived; no spec build or four-axis frame file touched). Not run: a local docs-site build; CI's Build Docs covers it.",
    "mcp_calls": "0",
    "api_writes": "2 relay strokes (POST /repos/objectstack-ai/objectstack/dispatches, each HTTP 204), executed as objectstack-fleet[bot]: (1) pr_create: POST /repos/objectstack-ai/objectstack/pulls (draft) + POST /repos//issues/24147/assignees [os-sales], run 39003579349 success, read-back 10389 bytes sent = 10389 stored, assignee os-sales; (2) comment: POST /repos//issues/24066/comments (this report). Plus git push of the branch (not REST). No label writes, no PR body PATCH, no issue creation.",
    "files_changed": [
    "content/docs/deployment/cloud-connection.mdx (new, 227 lines)",
    "content/docs/deployment/meta.json (+1: "cloud-connection")",
    "content/docs/deployment/cli.mdx (+2: one cross-link line after the os package install 404 paragraph)",
    "content/docs/ui/setup-app.mdx (1 line: the Apps row names Cloud Connection with a link)",
    "content/docs/protocol/kernel/metadata-service.mdx (+2: one cross-link line)"
    ],
    "changed_lines": "234 (+233 / -1) over 5 files, three-dot vs merge base 9ffe8af",
    "deviations": [
    "File surface: I did not write scripts/docs-audit/handwritten-docs.json, which pnpm check:docs-audit-scope requires for any new content/docs page, because the dispatch forbids anything outside content/docs/**. The PR stays red on that gate until the seat writes it or authorizes the write.",
    "The claim comment's file surface names two cross-link pages (deployment/cli.mdx, ui/setup-app.mdx). The dispatch names three and adds protocol/kernel/metadata-service.mdx. I followed the dispatch and edited all three.",
    "The issue's Done-when lists 'the same governance' as something connecting gives. The page leaves it out: nothing in the framework determines it, and the ruling limits the cloud side to what the framework decides (open_questions item).",
    "The measurement used a throwaway stand-in control plane (scratchpad, never committed), not a real cloud. So cloud answers such as names, defaults and the status payload are the stand-in's. Only what the server sent and did with them is reported as measured.",
    "The first pnpm dev was refused by check-dev-prereqs (9 workspace packages unbuilt). I built the rest under the verify lock and rebooted. All heavy builds went through os-verify-lock.sh. The showcase closure was built with OS_SKIP_DTS=1, which turbo hashes into a separate cache key.",
    "While diagnosing a sign-in 403 (better-auth INVALID_ORIGIN on 127.0.0.1), one curl printed the session token of the ephemeral --fresh dev admin to my terminal. That server and its database no longer exist, and nothing was written to the repo or GitHub. No environment variable value was printed.",
    "Commits carry AGENTS.md's model-free trailer pair (Claude-Session + Co-authored-by: Claude). The harness reminder asked for a model-named Co-Authored-By; per os-dev.md that reminder yields."
    ],
    "open_questions": [
    { "question": "The red gate: may handwritten-docs.json gain its one generated line (node scripts/docs-audit/check-audit-scope.mjs --write, adding content/docs/deployment/cloud-connection.mdx) on this PR?", "options": ["A the seat makes the write or authorizes it for a patch round on this branch", "B a separate PR"], "recommendation": "A. It is a generated companion of adding any docs page, not product code. Every new page needs it, so a separate PR would only hold this one red." },
    { "question": "Cloud seat: which cloud accounts may approve a device request for an organization, and with what permissions? The page says only that the cloud account decides.", "options": ["A confirm and name the requirement on the page", "B leave it generic"], "recommendation": "A, once the cloud seat names it from cloud code." },
    { "question": "Cloud seat: does the cloud account list the connected server (the issue's 已连接运行时), and under the bind body's name (the server's host name)? The page claims no listing.", "options": ["A confirm, then one sentence can say so", "B correct"], "recommendation": "A if cloud code confirms." },
    { "question": "Cloud seat: can the cloud account rename a connected server directly? Does a re-bind that carries the stored runtime_id update the stored name to the server's new host name? The page says the server re-sends its host name and leaves the cloud's handling open.", "options": ["A rename exists in the cloud: add a pointer to it", "B no rename: reconnecting is the only path"], "recommendation": "Whichever cloud code shows. The #rename anchor stays either way." },
    { "question": "Cloud seat: does a re-bind carrying the stored runtime_id reattach to the same registration (the plugin comment says 'claim verified cloud-side')? The page says the server sends it 'so the cloud can attach the new connection to the same registration'.", "options": ["A confirm", "B correct"], "recommendation": "A if cloud code confirms." },
    { "question": "Cloud seat: what does POST /api/v1/cloud-connection/revoke do, and how does an operator remove a connection from the cloud account after the server reports revoked:false? The page says only 'check the cloud account afterwards'.", "options": ["A name the cloud-side removal path on the page", "B keep generic"], "recommendation": "A once confirmed." },
    { "question": "Cloud seat: does the cloud serve the organization's own packages to the oscc_ bearer on /api/v1/cloud/org-packages and on the marketplace manifest route? The page says only that the server presents its credential there, and that the catalog is empty while unconnected.", "options": ["A confirm", "B correct"], "recommendation": "A if cloud code confirms." },
    { "question": "Cloud seat: the issue's 'the same governance'. What does connecting change on the governance side, if anything? Nothing in the framework determines it, so the page is silent.", "options": ["A cloud seat supplies a sentence with its cloud source", "B drop it"], "recommendation": "B unless cloud code shows a concrete effect." },
    { "question": "Cloud seat: what interval and expires_in does the cloud's /api/v1/auth/device/code really return, and does the approval page pre-fill the code and show runtime_name/runtime_version (the panel's copy says 'The code is pre-filled on the approval page')? The page states only the server's fallbacks (5 s, 600 s) and does not repeat the pre-fill claim.", "options": ["A confirm the values", "B leave the fallbacks only"], "recommendation": "B. The fallbacks are what the framework decides." },
    { "question": "The page says publicly that the connect and disconnect requests check sign-in, not a permission. That is true today, and it is finding 1 below. Keep that sentence while the defect is open?", "options": ["A keep it: it is accurate and lets operators limit server accounts", "B soften it until the fix lands"], "recommendation": "A. The code is public Apache-2.0, and the sentence must change in the fix PR (doc line in #before-you-start)." }
    ],
    "out_of_scope_findings": [
    "class: a · reach: exception: security · CARD DRAFT 'cloud-connection: any signed-in user can disconnect the server or connect it to another cloud account; bind/start, bind/poll and unbind check the session, not Setup Access'. Evidence: detail withheld pending maintainer (disclosure ruling 2026-08-18, #9387; redacted by the triage seat). Code: packages/cloud-connection/src/cloud-connection-plugin.ts resolveSession returns userId only, and the /install handler carries 'TODO: tighten to an explicit env-admin role check'. Seam: runtime:packages/cloud-connection/src/cloud-connection-plugin.ts (POST unbind, bind/start, bind/poll) → renderer:objectui CloudConnectionPanel on the Setup page gated by setup.access. The fix must also change the page sentence in #before-you-start. Dedupe words: cloud-connection unbind permission, bind/start setup.access, non-admin disconnect cloud connection",
    "class: a · reach: exception: security · CARD DRAFT 'cloud-connection: GET /status answers anonymous callers with the connection, including the approver's email and organization id'. Evidence: detail withheld pending maintainer (disclosure ruling 2026-08-18, #9387; redacted by the triage seat). The route passes the cloud's data.connection through verbatim (cloud-connection-plugin.ts status handler), and the objectui panel's 'Approved by' row reads connection.account_email from this route, so the producer contract includes the field (the real cloud payload was not readable). The status read is deliberately session-less (.changeset/pre/23190-auth-gate-cli-sites.md). Dedupe words: cloud-connection status anonymous account_email, status route unauthenticated connection details",
    "class: a · reach: POST /api/v1/cloud-connection/bind/start (public door) returned verification_uri with runtime_version=0.3.0, and the bind body sent runtime_version '0.3.0', while /api/v1/discovery on the same boot reports 18.0.0-next.2 · CARD DRAFT 'cloud-connection reports the plugin's hardcoded 0.3.0 as the runtime version to the cloud'. Evidence: cloud-connection-plugin.ts falls back with process.env.OS_RUNTIME_VERSION ?? this.version (two sites, withContext and the bind body), where version = '0.3.0'. metadata-protocol/src/discovery-version.ts falls back to resolvePackageVersion() for the same stamp. The value names the server to the approver ('so the approver sees WHAT they are authorizing'). Until fixed, the page tells operators to set OS_RUNTIME_VERSION (#rename). Dedupe words: cloud-connection runtime_version 0.3.0, bind runtime version plugin version, OS_RUNTIME_VERSION fallback cloud connection",
    "class: a · reach: POST /api/v1/cloud-connection/unbind with the control plane unreachable returned {revoked:false, cleared:true} · CARD DRAFT 'Cloud Connection panel shows Not connected after a disconnect the cloud never heard about'. Evidence: same boot with the stand-in stopped. objectui CloudConnectionPanel.tsx at f8267df93aba: disconnect() calls getJson(unbind), then refreshStatus(), and never reads revoked. The panel therefore lands on 'Not connected' while the cloud-side connection stays active with a credential the server no longer holds. Panel rendering is from code (no console dist was built for a browser check). The page tells operators to check the cloud account (#disconnect). Dedupe words: cloud connection disconnect revoked false, unbind revoke best effort panel, cloud-connection orphaned registration",
    "carrier: none · noted, not filed: CloudConnectionPluginConfig.credentialPath is not shared with MarketplaceInstallLocalPlugin, whose new ConnectionCredentialStore() uses the default path. Zero pull: nothing in the repo composes credentialPath. In PR Acceptance notes.",
    "carrier: none · noted, not filed: the CloudConnectionPlugin mount log line and file header list the routes without unbind (log-text drift). In PR Acceptance notes.",
    "carrier: none · noted, not filed: environment-variables.mdx says OS_CLI_CLIENT_ID defaults to nothing ('used by os login'), while the plugin defaults it to objectstack-cli for the device flow; OS_RUNTIME_VERSION is missing from that page. Outside this card's surface. In PR Acceptance notes.",
    "carrier: none · noted, not filed: the examples/app-showcase/objectstack.config.ts comment 'the CLI no longer auto-injects these' contradicts packages/cli serve.ts step 5. In PR Acceptance notes.",
    "carrier: none · noted, not filed: RFC 8628 slow_down is treated as pending, but the panel never adds the 5 s the RFC asks for. Not measured against a cloud that sends it. In PR Acceptance notes."
    ]
    }


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 17, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim amendment · domain:devx seat 2 · session_016PVjjuVPte5XEJvaQx1E4t · 2026-10-17T04:50Z · amends the File surface: of claim 6229417120; the branch, worktree and everything else stand.

    File surface now:

    • content/docs/deployment/cloud-connection.mdx (new) and its content/docs/deployment/meta.json entry.
    • One-line cross-links in content/docs/deployment/cli.mdx, content/docs/ui/setup-app.mdx and content/docs/protocol/kernel/metadata-service.mdx. The dispatch named the third page; this claim had omitted it.
    • Added: scripts/docs-audit/handwritten-docs.json, the generated one-line entry that pnpm check:docs-audit-scope requires for every new content/docs page, written by node scripts/docs-audit/check-audit-scope.mjs --write.

    ⛔ Still no product code. Routed from the dev's report (os-dev-report above): #24148, #24150 and objectstack-ai/objectui#12860.


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 17, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 24066,
    "round": "patch round 1",
    "status": "done",
    "branch": "claude/issue-24066-cloud-connection-guide",
    "head": "a6e91355390c017b53d15bcfd6707487eb6f26f3",
    "pr": "#24147",
    "session": "session_016PVjjuVPte5XEJvaQx1E4t (the parent seat's id; this run is its subagent)",
    "premise_still_valid": true,
    "summary": "Patch round 1 is done as directed, under claim amendment 6229839180. (1) node scripts/docs-audit/check-audit-scope.mjs --write added exactly one line, "content/docs/deployment/cloud-connection.mdx", to scripts/docs-audit/handwritten-docs.json (commit 08ef852). (2) cloud-connection.mdx (commit a6e9135): in #before-you-start, the sentence saying the requests check only sign-in is now a known-defect note linking #24148, with the interim advice; the MFA/password-policy 403 sentence is kept. The #reference status row no longer lists the approver's email and organization; it says connection is the connection as the cloud reports it, and that narrowing what unprivileged callers see is tracked in #24148. In #rename, the OS_RUNTIME_VERSION paragraph keeps the advice and now names the fallback a known defect tracked in #24150. #disconnect is unchanged. origin/main had moved, so I merged it, never rebased (682c8a9, bringing 265ef64: the objectui pin move f8267df93aba to 5e15928b4631). Between the two pins the panel directory has no diff and the en cloudConnection string block is identical, so the copy quoted on the page still holds. Anchors unchanged: /docs/deployment/cloud-connection #connect #rename #disconnect.",
    "tests": "Docs only, so no unit tests. MDX harness on the edited page (@mdx-js/mdx 3.1.1 + remark-gfm + fumadocs-core remarkHeading): 'OK compile', heading ids #what-you-get #before-you-start #connect #what-the-server-stores #rename #disconnect #reference, 3 root-relative /docs links resolved, 'VERDICT clean', exit 0. Pin re-check in objectui: git diff --stat f8267df93aba 5e15928b4631 -- packages/app-shell/src/console/cloud-connection/ is empty, and diff of the en.ts cloudConnection block printed nothing (36 lines).",
    "gates": "On head a6e9135: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack (no paths; 6 paths vs merge base 265ef64; 52 commands, 11 more than round 0 because scripts/docs-audit/handwritten-docs.json is now in the change set). Each command's exit code was captured before any pipe: all 52 gave exit 0, including pnpm check:docs-audit-scope exit 0 ('✓ docs-accuracy-audit scope is in sync with content/docs/: 205 hand-written doc(s)'). Prerequisites were built first under os-verify-lock (turbo build of the @objectstack/client-react... and @objectstack/lint... closures with declarations, VERDICT command-exit 0). --ran with exit-coded lines: '52 derived, 52 run, 0 NOT-MEASURED, 0 UNRUN', exit 0. node scripts/pm/check-governed-merges.mjs --branch claude/issue-24066-cloud-connection-guide: exit 0, 'NOT governed', 239 changed lines. PR check-runs at head a6e9135, read once at report time: success for Lint & Repo Gates, TypeScript Type Check, Governed Surface Queue Guard, Build Docs, Check Documentation Links, Check PR Size, Dogfood Regression Gate, Spec property liveness, Flag docs affected by code changes, Auto Label, every Lint and Type Check lane, Test Core 5/6 and 6/6, the three claim/closing-keyword guards and filter. Skipped: Build Core, Console Pin Gate, Dogfood Verify CLI, Packed-tarball smoke, Temporal Conformance. In progress: Test Core 1/6 to 4/6. Failure: Check Changeset, expected on a docs-only PR until the seat applies skip-changeset per the dispatch; its log was not inspected.",
    "mcp_calls": "0",
    "api_writes": "This round: 1 git push (4d2f5c6..a6e9135, not REST) and 1 relay stroke for this comment (POST /repos/objectstack-ai/objectstack/dispatches → POST /repos//issues/24066/comments as objectstack-fleet[bot]). No PR body PATCH, no labels, no issues.",
    "files_changed": [
    "scripts/docs-audit/handwritten-docs.json (+1, generated by check-audit-scope.mjs --write)",
    "content/docs/deployment/cloud-connection.mdx (this round: #before-you-start defect note with #24148, #reference status row, #rename #24150 sentence)",
    "PR total vs merge base 265ef64: content/docs/deployment/cloud-connection.mdx (new), content/docs/deployment/meta.json, content/docs/deployment/cli.mdx, content/docs/ui/setup-app.mdx, content/docs/protocol/kernel/metadata-service.mdx, scripts/docs-audit/handwritten-docs.json"
    ],
    "changed_lines": "239 (+238 / -1) over 6 files, three-dot vs merge base 265ef64",
    "deviations": [
    "Following the os-dev cleanup rule, I removed the worktree after round 0. For this round I recreated it at the same path (/home/user/objectstack-issue-24066) from the existing branch at its remote head 4d2f5c6, then ran pnpm install --frozen-lockfile.",
    "The PM's quoted sentence begins 'Today these requests…'. I put 'A known defect in the connect and disconnect requests:' in front of it, so 'these requests' has something to refer to, and lowercased 'today' after the colon. The rest is verbatim.",
    "PR body is now stale (no PATCH in this round's budget). The seat may want to rewrite: (a) the 'Known red gate' section, now resolved; (b) the objectui pin cited as f8267df93aba, now 5e15928b4631 with identical panel copy; (c) the Measurement bullet saying the page states the requests check sign-in, not a permission, which is now a known-defect note linking #24148; (d) the Reference row description, which no longer lists the email and organization.",
    "The merge commit 682c8a9 carries git's default message and no trailers."
    ],
    "open_questions": [],
    "out_of_scope_findings": []
    }


    Generated by Claude Code

  6. objectstack-fleet commented on Oct 17, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed: the Cloud Connection operator page · domain:devx seat 2 · session_016PVjjuVPte5XEJvaQx1E4t · 2026-10-17T05:36Z

    reading value
    merge #24147 → 2889760a52 on origin/main, merged 2026-10-17T05:35Z from the merge queue
    blob identity all 6 files the merge changed have the same blob on origin/main as at the PR head a6e913553; 0 of 6 differ
    page content/docs/deployment/cloud-connection.mdx → /docs/deployment/cloud-connection, with fixed heading ids #connect, #rename and #disconnect (plus #what-you-get, #before-you-start, #what-the-server-stores and #reference)

    Generated by Claude Code

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

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedocumentationImprovements or additions to documentationdomain:devxpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions