You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
cloud-connection: the server reports the plugin's hardcoded 0.3.0 as its runtime_version to the cloud (bind/start verification URI and bind body) when OS_RUNTIME_VERSION is unset #24150
Filing gate: ① a product defect with a named landing and a measured reach. Filed by domain:devx seat 2 (#20163) · os-sales · session_016PVjjuVPte5XEJvaQx1E4t, from the out-of-scope findings of #24066 (PR #24147).
Reader: the domain:cli seat, in packages/cloud-connection/src/cloud-connection-plugin.ts, at the two process.env.OS_RUNTIME_VERSION ?? this.version fallbacks (the bind/start verification URI and the bind/poll bind body), where version = '0.3.0'.
Dedupe:search_issues on objectstack-ai/objectstack for "cloud-connection runtime_version 0.3.0 OS_RUNTIME_VERSION plugin version reported to cloud" gave 0 hits.
Reach
The #24066 dev measured this on a dev boot of examples/app-showcase at main9ffe8af09:
POST /api/v1/cloud-connection/bind/start answered a verification_uri carrying runtime_version=0.3.0.
The bind body the stand-in control plane received carried runtime_version: "0.3.0".
GET /api/v1/discovery on the same boot reports 18.0.0-next.2.
Why
The fallback is the plugin's own constant. When OS_RUNTIME_VERSION is unset, the plugin sends its version field, '0.3.0'. That constant is not the server's release.
The value is what the approver is shown. The plugin's own comment says the version is there "so the approver sees WHAT they are authorizing".
Discovery already resolves the real release.packages/metadata-protocol/src/discovery-version.ts falls back to resolvePackageVersion() for the same stamp.
Done when
The real release is sent. With OS_RUNTIME_VERSION unset, the server reports the same release /api/v1/discovery reports, at both sites.
A test pins it, and an ablation shows the test fails on the old fallback.
Triage: first grade, priority:p3 · area:devpath · pm:queue · the filer's domain:cli stands · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-17T05:05Z
Triage seat (objectstack-wide, seat post #6015). ⛔ Not a claim, ⛔ not a dispatch.
Why p3: a wrong version string on the approval page; it has no effect on the bind. The premise holds on origin/main: cloud-connection-plugin.ts:143 reads readonly version = '0.3.0';.
Claim: PM loop round 1, serial, S-size cards only, any priority (the maintainer to this seat, verbatim 「用中文,当前任务处理完,后续只派小卡」, confirmed as "S-size, any priority"). #23050 sub-slice 13a's PR #24224 waits only in the merge queue (added_to_merge_queue, read in this act). Label order read in this act: this lane's queued p1/p2 cards hold no S-size card for this seat, and #24150 is the first S-size p3. #24150: with OS_RUNTIME_VERSION unset, the cloud-connection plugin reports the server's real release (the one /api/v1/discovery reports) instead of its hardcoded 0.3.0, at both sites · 2026-10-17T22:49Z
Session: session_01BVm1pAXVXQ3PjC42j1kPFf
Account: os-sales (the seat's linked user as GET /user answers it; always the card's assignee)
Branch: claude/issue-24150-runtime-version
Worktree: objectstack-issue-24150
Domain: domain:cli
Seat: domain:cli#1 (seat post #6024)
File surface (read on origin/mainb9ac35cbf; line numbers move; stop on a breach and explain it in the report):
packages/cloud-connection/src/cloud-connection-plugin.ts: the two process.env.OS_RUNTIME_VERSION ?? this.version fallbacks only (bind/start's verification URI, about :579; bind/poll's bind body, about :673), plus the smallest read that yields the release discovery reports.
A pin beside it under packages/cloud-connection/src/. One .changeset/24150-*.md.
Every packages/metadata-protocol path (domain:engine). resolveDiscoveryVersion is not on that package's entry, and ⛔ no new export is added to it: that would widen another lane's published surface. If no in-process read of the discovery release exists for the plugin, stop and report.
Every other handler in the file.
packages/spec.
Container & model: S (two call sites, one pin, one docs paragraph), mode:subagent, model: TIER_DEFAULT (dispatch-gates --tier: no path-derived mandate)
Clause-②: no
Basis for the Clause-② line: no accept set widens and no public surface grows. The value the plugin already sends changes from a wrong constant to the real release, and no key, route or export moves.
Responsibility: packages/cloud-connection's cloud-connection plugin (this lane) | with OS_RUNTIME_VERSION unset, the plugin's own version = '0.3.0' constant is sent as the server's runtime version | every approver of a cloud bind, who is shown runtime_version=0.3.0 while discovery reports 18.0.0-next.* (measured by the 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 dev on examples/app-showcase)
Thread-read: 6229961537
Serial constraints cleared:
{
"issue": 24150,
"status": "done",
"branch": "claude/issue-24150-runtime-version",
"pr": "https://github.com/objectstack-ai/objectstack/pull/24231",
"session": "session_01BVm1pAXVXQ3PjC42j1kPFf (mode:subagent, the parent's harness-stamped id, as on the commits' Claude-Session line)",
"premise_still_valid": true,
"summary": "Both sites now send the release discovery reports. bind/start's verification_uri and verification_uri_complete, and the bind body bind/poll sends to /bind, go through one closure inside kernel:ready, reportedRuntimeVersion(). A set OS_RUNTIME_VERSION is sent verbatim, with the same ?? set-ness as before. Unset, the closure reads ctx.getService('protocol').getDiscovery().version when the handler runs. With no protocol service, or a read that throws, nothing is sent (assumption 4: option A, four-axis reasons in the PR body). The plugin's own version field stays, and no dependency, export or metadata-protocol path moved. Assumptions measured on a real pnpm dev --fresh boot of app-showcase at c90a9776d, with OS_RUNTIME_VERSION unset and a stand-in control plane on loopback: (1) GET /api/v1/discovery is served by @objectstack/rest over protocol.getDiscovery() (unenveloped, carries apiName); the dispatcher's getDiscoveryInfo(), read at /.well-known/objectstack, agrees at 18.0.0-next.3. (2) The service read holds, so no third resolver copy was made. (3) Not triggered. On the same boot, both approval links carried runtime_version=18.0.0-next.3 and the stand-in's one /bind request carried runtime_version 18.0.0-next.3. The before reading is the card's (0.3.0 vs discovery 18.0.0-next.2). The docs #rename paragraph now says the version is the release discovery reports, with OS_RUNTIME_VERSION as an override. Clause-② re-declared from the diff: 'Clause-②: no', no arm, patch. readClause2Line reads the changeset and the PR body as declared/no/arm null, and check-changeset-no-major plus check-adr-0087-registration exit 0. On assumption 4: the no-discovery case now omits an optional emitted field where it used to send a wrong constant. That changes no accept set, key, route or export, so it is not declared a narrowing. Labels: zero writes, because the dispatch named none and skip-changeset does not apply to a publishing diff; the PR's labels read [] after creation.",
"tests": "Run on final head a217f4bc6 (this branch with origin/main d3d064447 merged): pnpm --filter @objectstack/cloud-connection exec vitest run --maxWorkers=2 → 52 files, 613 passed, exit 0. pnpm --filter @objectstack/cloud-connection run typecheck → exit 0; --listFiles shows the new pin in both tsc programs. test:repo (each exit 0): core 86 passed, types 11, objectql 5, rest 262 passed + 14 skipped, runtime 808. spec test:repo was run at c90a9776d, before the merge: 67 files, 1115 passed, exit 0, 14m16s under the lock. New pin src/cloud-connection-runtime-version.pin.test.ts has 12 cases in single and multi mode, all against the real ObjectStackProtocolImplementation.getDiscovery() on the same harness, never a literal: unset gives the discovery release on both links and on the bind claim; CONTROL, a stamp is sent verbatim with and without a discovery producer; with no protocol service or a throwing read, no runtime_version param and no body key. connection-credential-store.test.ts: its shared harness gained a protocol service, because two bind cases asserted that a version was present, which only the old constant satisfied. Ablation, one pass on committed c90a9776d via scripts/ablation-replace.mjs WRAP mode with a trap and an absolute path. Mutation: anchor 'if (stamped !== undefined) return stamped || undefined;' replaced by 'return (stamped ?? this.version) || undefined;', which is the old fallback. On disk, anchor 1→0 and replacement 0→1, read while mutated. RED: vitest run src/cloud-connection-runtime-version.pin.test.ts exit 1, 8 failed | 4 passed (12); the controls stayed green. Failures read 'expected [ 0.3.0, 0.3.0 ] to deeply equal [ 18.0.0-next.3, 18.0.0-next.3 ]' and 'expected 0.3.0 to be 18.0.0-next.3'. Restore proven: blob 1b75c89c5 equals HEAD and git diff HEAD is empty. GREEN: 12 passed, exit 0. Builds went through os-verify-lock (turbo, --concurrency=2), each VERDICT command-exit 0.",
"gates": "Local, final head a217f4bc6: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 93 commands. Each ran with its exit captured before any pipe, and all 93 exited 0. --ran reconciliation: '93 derived, 93 run, 0 NOT-MEASURED, 0 UNRUN', exit 0; eslint is the 1 outside the derivation. pnpm exec eslint --no-inline-config on the 3 changed .ts files exits 0; the .mdx and .md files have no eslint config ('File ignored'). The dispatch's lane blind spot is covered by that eslint run. check-platform-checklist --changed-from was not run, because no exported symbol was renamed or deleted. CI check-runs on a217f4bc6 when this was written: 38 runs, 10 success (Auto Label, Check Documentation Links, Check PR Size, Dogfood Regression Gate, Spec property liveness, the claim and closing-target guards, filter, among others), 5 skipped, 23 in_progress. The in_progress set: Test Core 1/6 through 6/6, Build Core, Build Docs, Check Changeset, Governed Surface Queue Guard, every Lint · * lane, and every Type Check · * lane. in_progress is the honest value, since CI convergence is the PM's to read.",
"mcp_calls": "0 — no MCP GitHub tool was called",
"api_writes": "2 relay strokes (scripts/pm/fleet-write/dispatch.mjs, each one POST /repos/objectstack-ai/objectstack/dispatches executed as objectstack-fleet[bot]): ① pr_create → POST /repos/objectstack-ai/objectstack/pulls (draft, base main) + POST /repos/objectstack-ai/objectstack/issues/24231/assignees [os-sales]; read-back: 8615 bytes sent, 8615 stored, identical. ② this os-dev-report comment → POST /repos/objectstack-ai/objectstack/issues/24150/comments via scripts/pm/post-stamped.mjs. Plus 3 git pushes (empty branch, fix commit, merge commit), which are not REST. Zero label writes, and no PATCH of the PR body.",
"deviations": [
"File surface reading: the claim names 'a pin beside it under packages/cloud-connection/src/'. connection-credential-store.test.ts, in that same directory, was also edited, test-only: the shared harness gained a protocol service, because the fix falsified its two version-present asserts. I judged this inside the declared directory rather than a breach and am declaring it here and in the PR's Acceptance notes.",
"spec test:repo was measured at c90a9776d, before merging origin/main, and not re-run on a217f4bc6: 14 minutes under the lock, and the merge brought no change to any file in this diff. The other five test:repo projects were re-run on a217f4bc6. CI's Test Core covers spec on the final head.",
"origin/main moved one more commit (6e43b7bc3, runtime 405 Allow header) after the merge. It was not merged: there is no overlap and no conflict, and the PR is already open (§10).",
"Commit trailers are model-free (Co-Authored-By: Claude plus Claude-Session) as the dispatch and AGENTS.md require. The harness reminder's model-named trailer was not used.",
"Worktree cleanup (rm -rf node_modules, then git worktree remove without --force) runs after this comment, because the write tools run from the worktree."
],
"open_questions": [],
"out_of_scope_findings": [
"none filed — no class a/b/c finding. Three observations are in PR #24231's Acceptance notes only, carrier: none (承接者:无): (1) a set-but-empty OS_RUNTIME_VERSION sends nothing from the plugin while discovery's resolver treats empty as unset (the old behaviour, kept per the ruling); (2) a multi-tenant host is read through the host kernel's protocol service, which is the same module-level resolver, but this was not measured on a multi-tenant composition; (3) cloud-connection.mdx's Reference paragraph says OS_RUNTIME_VERSION is listed on the environment-variables page, and that page's cloud-control-plane table has no row for it."
]
}
669296bb5 "fix(cloud-connection): report the release discovery reports as runtime_version when OS_RUNTIME_VERSION is unset (#24231)"; git rev-list --parents -n1 gives 1 parent (194a42d1f), a squash
Content
the squash's own diff is 5 files, +279 / −7. git diff a217f4bc6 669296bb5 over those 5 paths is empty: what landed is the reviewed head
the squash body's one closing keyword is Fixes #24150; this card closed completed at 2026-10-18T00:54:09Z
State: closed completed by Fixes #24150; pm:dispatched stripped in this act. The review of record was the seat's ACCEPT 6243739158 on a217f4bc6; no contract face was touched (Clause-②: no, patch).
With OS_RUNTIME_VERSION unset, bind/start's approval links and the bind body bind/poll sends now carry the version the server's discovery document reports, read through the protocol service. A set stamp is still sent verbatim. With no discovery read, nothing is sent.
The three Acceptance notes in the PR body carry carrier: none: an empty-string stamp; a multi-tenant host, unmeasured; and the environment-variables page, which has no OS_RUNTIME_VERSION row.
Activity
objectstack-fleet commentedon Oct 17, 2026
Triage: first grade,
priority:p3·area:devpath·pm:queue· the filer'sdomain:clistands · triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-17T05:05ZTriage seat (objectstack-wide, seat post #6015). ⛔ Not a claim, ⛔ not a dispatch.
origin/main:cloud-connection-plugin.ts:143readsreadonly version = '0.3.0';.Generated by Claude Code
objectstack-fleet commentedon Oct 17, 2026
Claim: PM loop round 1, serial, S-size cards only, any priority (the maintainer to this seat, verbatim 「用中文,当前任务处理完,后续只派小卡」, confirmed as "S-size, any priority"). #23050 sub-slice 13a's PR #24224 waits only in the merge queue (
added_to_merge_queue, read in this act). Label order read in this act: this lane's queued p1/p2 cards hold no S-size card for this seat, and #24150 is the first S-size p3. #24150: withOS_RUNTIME_VERSIONunset, the cloud-connection plugin reports the server's real release (the one/api/v1/discoveryreports) instead of its hardcoded0.3.0, at both sites · 2026-10-17T22:49ZSession:
session_01BVm1pAXVXQ3PjC42j1kPFfAccount:
os-sales(the seat's linked user asGET /useranswers it; always the card's assignee)Branch:
claude/issue-24150-runtime-versionWorktree:
objectstack-issue-24150Domain:
domain:cliSeat:
domain:cli#1(seat post #6024)File surface (read on
origin/mainb9ac35cbf; line numbers move; stop on a breach and explain it in the report):packages/cloud-connection/src/cloud-connection-plugin.ts: the twoprocess.env.OS_RUNTIME_VERSION ?? this.versionfallbacks only (bind/start's verification URI, about:579;bind/poll's bind body, about:673), plus the smallest read that yields the release discovery reports.packages/cloud-connection/src/. One.changeset/24150-*.md.content/docs/deployment/cloud-connection.mdx: the#renameparagraph that tells operators to setOS_RUNTIME_VERSION. Declared todomain:devx([PM seat] domain:devx @ objectstack — 🟢 os-warren · session_01FM29ZqLTrnPNXxijioZwMp #6023) in this act.packages/metadata-protocolpath (domain:engine).resolveDiscoveryVersionis not on that package's entry, and ⛔ no new export is added to it: that would widen another lane's published surface. If no in-process read of the discovery release exists for the plugin, stop and report.packages/spec.Container & model:
S(two call sites, one pin, one docs paragraph),mode:subagent,model: TIER_DEFAULT(dispatch-gates --tier: no path-derived mandate)Clause-②: no
Basis for the Clause-② line: no accept set widens and no public surface grows. The value the plugin already sends changes from a wrong constant to the real release, and no key, route or export moves.
Responsibility:
packages/cloud-connection's cloud-connection plugin (this lane) | withOS_RUNTIME_VERSIONunset, the plugin's ownversion = '0.3.0'constant is sent as the server's runtime version | every approver of a cloud bind, who is shownruntime_version=0.3.0while discovery reports18.0.0-next.*(measured by the 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 dev onexamples/app-showcase)Thread-read: 6229961537
Serial constraints cleared:
cloud-connection-plugin.tsordeployment/cloud-connection.mdx.697301491) without carrying this card.objectstack-fleet commentedon Oct 18, 2026
os-dev-report
{ "issue": 24150, "status": "done", "branch": "claude/issue-24150-runtime-version", "pr": "https://github.com/objectstack-ai/objectstack/pull/24231", "session": "session_01BVm1pAXVXQ3PjC42j1kPFf (mode:subagent, the parent's harness-stamped id, as on the commits' Claude-Session line)", "premise_still_valid": true, "summary": "Both sites now send the release discovery reports. bind/start's verification_uri and verification_uri_complete, and the bind body bind/poll sends to /bind, go through one closure inside kernel:ready, reportedRuntimeVersion(). A set OS_RUNTIME_VERSION is sent verbatim, with the same ?? set-ness as before. Unset, the closure reads ctx.getService('protocol').getDiscovery().version when the handler runs. With no protocol service, or a read that throws, nothing is sent (assumption 4: option A, four-axis reasons in the PR body). The plugin's own version field stays, and no dependency, export or metadata-protocol path moved. Assumptions measured on a real pnpm dev --fresh boot of app-showcase at c90a9776d, with OS_RUNTIME_VERSION unset and a stand-in control plane on loopback: (1) GET /api/v1/discovery is served by @objectstack/rest over protocol.getDiscovery() (unenveloped, carries apiName); the dispatcher's getDiscoveryInfo(), read at /.well-known/objectstack, agrees at 18.0.0-next.3. (2) The service read holds, so no third resolver copy was made. (3) Not triggered. On the same boot, both approval links carried runtime_version=18.0.0-next.3 and the stand-in's one /bind request carried runtime_version 18.0.0-next.3. The before reading is the card's (0.3.0 vs discovery 18.0.0-next.2). The docs #rename paragraph now says the version is the release discovery reports, with OS_RUNTIME_VERSION as an override. Clause-② re-declared from the diff: 'Clause-②: no', no arm, patch. readClause2Line reads the changeset and the PR body as declared/no/arm null, and check-changeset-no-major plus check-adr-0087-registration exit 0. On assumption 4: the no-discovery case now omits an optional emitted field where it used to send a wrong constant. That changes no accept set, key, route or export, so it is not declared a narrowing. Labels: zero writes, because the dispatch named none and skip-changeset does not apply to a publishing diff; the PR's labels read [] after creation.", "tests": "Run on final head a217f4bc6 (this branch with origin/main d3d064447 merged): pnpm --filter @objectstack/cloud-connection exec vitest run --maxWorkers=2 → 52 files, 613 passed, exit 0. pnpm --filter @objectstack/cloud-connection run typecheck → exit 0; --listFiles shows the new pin in both tsc programs. test:repo (each exit 0): core 86 passed, types 11, objectql 5, rest 262 passed + 14 skipped, runtime 808. spec test:repo was run at c90a9776d, before the merge: 67 files, 1115 passed, exit 0, 14m16s under the lock. New pin src/cloud-connection-runtime-version.pin.test.ts has 12 cases in single and multi mode, all against the real ObjectStackProtocolImplementation.getDiscovery() on the same harness, never a literal: unset gives the discovery release on both links and on the bind claim; CONTROL, a stamp is sent verbatim with and without a discovery producer; with no protocol service or a throwing read, no runtime_version param and no body key. connection-credential-store.test.ts: its shared harness gained a protocol service, because two bind cases asserted that a version was present, which only the old constant satisfied. Ablation, one pass on committed c90a9776d via scripts/ablation-replace.mjs WRAP mode with a trap and an absolute path. Mutation: anchor 'if (stamped !== undefined) return stamped || undefined;' replaced by 'return (stamped ?? this.version) || undefined;', which is the old fallback. On disk, anchor 1→0 and replacement 0→1, read while mutated. RED: vitest run src/cloud-connection-runtime-version.pin.test.ts exit 1, 8 failed | 4 passed (12); the controls stayed green. Failures read 'expected [ 0.3.0, 0.3.0 ] to deeply equal [ 18.0.0-next.3, 18.0.0-next.3 ]' and 'expected 0.3.0 to be 18.0.0-next.3'. Restore proven: blob 1b75c89c5 equals HEAD and git diff HEAD is empty. GREEN: 12 passed, exit 0. Builds went through os-verify-lock (turbo, --concurrency=2), each VERDICT command-exit 0.", "gates": "Local, final head a217f4bc6: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 93 commands. Each ran with its exit captured before any pipe, and all 93 exited 0. --ran reconciliation: '93 derived, 93 run, 0 NOT-MEASURED, 0 UNRUN', exit 0; eslint is the 1 outside the derivation. pnpm exec eslint --no-inline-config on the 3 changed .ts files exits 0; the .mdx and .md files have no eslint config ('File ignored'). The dispatch's lane blind spot is covered by that eslint run. check-platform-checklist --changed-from was not run, because no exported symbol was renamed or deleted. CI check-runs on a217f4bc6 when this was written: 38 runs, 10 success (Auto Label, Check Documentation Links, Check PR Size, Dogfood Regression Gate, Spec property liveness, the claim and closing-target guards, filter, among others), 5 skipped, 23 in_progress. The in_progress set: Test Core 1/6 through 6/6, Build Core, Build Docs, Check Changeset, Governed Surface Queue Guard, every Lint · * lane, and every Type Check · * lane. in_progress is the honest value, since CI convergence is the PM's to read.", "mcp_calls": "0 — no MCP GitHub tool was called", "api_writes": "2 relay strokes (scripts/pm/fleet-write/dispatch.mjs, each one POST /repos/objectstack-ai/objectstack/dispatches executed as objectstack-fleet[bot]): ① pr_create → POST /repos/objectstack-ai/objectstack/pulls (draft, base main) + POST /repos/objectstack-ai/objectstack/issues/24231/assignees [os-sales]; read-back: 8615 bytes sent, 8615 stored, identical. ② this os-dev-report comment → POST /repos/objectstack-ai/objectstack/issues/24150/comments via scripts/pm/post-stamped.mjs. Plus 3 git pushes (empty branch, fix commit, merge commit), which are not REST. Zero label writes, and no PATCH of the PR body.", "deviations": [ "File surface reading: the claim names 'a pin beside it under packages/cloud-connection/src/'. connection-credential-store.test.ts, in that same directory, was also edited, test-only: the shared harness gained a protocol service, because the fix falsified its two version-present asserts. I judged this inside the declared directory rather than a breach and am declaring it here and in the PR's Acceptance notes.", "spec test:repo was measured at c90a9776d, before merging origin/main, and not re-run on a217f4bc6: 14 minutes under the lock, and the merge brought no change to any file in this diff. The other five test:repo projects were re-run on a217f4bc6. CI's Test Core covers spec on the final head.", "origin/main moved one more commit (6e43b7bc3, runtime 405 Allow header) after the merge. It was not merged: there is no overlap and no conflict, and the PR is already open (§10).", "Commit trailers are model-free (Co-Authored-By: Claude plus Claude-Session) as the dispatch and AGENTS.md require. The harness reminder's model-named trailer was not used.", "Worktree cleanup (rm -rf node_modules, then git worktree remove without --force) runs after this comment, because the write tools run from the worktree." ], "open_questions": [], "out_of_scope_findings": [ "none filed — no class a/b/c finding. Three observations are in PR #24231's Acceptance notes only, carrier: none (承接者:无): (1) a set-but-empty OS_RUNTIME_VERSION sends nothing from the plugin while discovery's resolver treats empty as unset (the old behaviour, kept per the ruling); (2) a multi-tenant host is read through the host kernel's protocol service, which is the same module-level resolver, but this was not measured on a multi-tenant composition; (3) cloud-connection.mdx's Reference paragraph says OS_RUNTIME_VERSION is listed on the environment-variables page, and that page's cloud-control-plane table has no row for it." ] }Generated by Claude Code
objectstack-fleet commentedon Oct 18, 2026
Landed: PR #24231 ·
domain:cliseat 1 · sessionsession_01BVm1pAXVXQ3PjC42j1kPFf· 2026-10-18T00:54Zorigin/main669296bb5"fix(cloud-connection): report the release discovery reports as runtime_version when OS_RUNTIME_VERSION is unset (#24231)";git rev-list --parents -n1gives 1 parent (194a42d1f), a squashgit diff a217f4bc6 669296bb5over those 5 paths is empty: what landed is the reviewed headgit ls-remote origin 'refs/heads/gh-readonly-queue/main/pr-24231-*'gives 0 refsmerged: trueat 2026-10-18T00:54:08ZFixes #24150; this card closedcompletedat 2026-10-18T00:54:09ZState: closed
completedbyFixes #24150;pm:dispatchedstripped in this act. The review of record was the seat's ACCEPT6243739158ona217f4bc6; no contract face was touched (Clause-②: no,patch).OS_RUNTIME_VERSIONunset,bind/start's approval links and the bind bodybind/pollsends now carry theversionthe server's discovery document reports, read through theprotocolservice. A set stamp is still sent verbatim. With no discovery read, nothing is sent.carrier: none: an empty-string stamp; a multi-tenant host, unmeasured; and the environment-variables page, which has noOS_RUNTIME_VERSIONrow.