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-binding: name the service in its spec contract, and give controlPlaneUrl one reading of an empty option (follow-up to #29920) #30762
Filing gate: ① two should-fix findings of the contract review on PR #30749 (#29920), comment 6673473934, items 1 and 2, kept out of that PR by the seat. ⛔ Not a claim. Suggested grade: p3.
Dedupe: CLOUD_BINDING_SERVICE, controlPlaneUrl empty — no open card. New.
Reader: domain:server (packages/cloud-connection, packages/services/service-push), with one export in packages/spec/src/contracts/cloud-binding-service.ts (the spec half is the triage's call to route).
1 · The service name has no single source
Since PR #30749, cloud-connection registers the cloud-binding service and service-push reads it, each spelling 'cloud-binding' on its own; nothing pins the two to each other. Six sibling contracts export their service name beside the interface (EMBEDDER_SERVICE, KNOWLEDGE_SERVICE, OWNERSHIP_QUEUE_SERVICE, RLS_MEMBERSHIP_RESOLVER_SERVICE, SEED_SETTLEMENT_SERVICE, FILE_ATTACHMENT_SERVICE).
Expected: export const CLOUD_BINDING_SERVICE = 'cloud-binding' from cloud-binding-service.ts, both packages read it, api-surface/ and export-origins/ regenerated. An added export: Clause-②: yes (widening) on the spec face.
2 · Two readers of one empty option inside cloud-connection
The contract's docblock says controlPlaneUrl() answers '' only when the deployment declared no control plane. createCloudBinding reads the option through resolveCloudUrl(option), which turns an explicit '' into the production default, while the plugin's own routes (cloud-connection-plugin.ts, ~L337) read the same '' as "cloud not configured". Unreachable under objectstack serve today (the plugin is composed only when resolveCloudUrl() is non-empty), so a hand-composed kernel is the only reach.
Expected: one reading. Either the routes derive their URL from binding.controlPlaneUrl(), with the binding reading '' the way the routes do, or the docblock says what '' answers; a pin for the empty option.
Triage re-queued it at 12:28Z: the card had a grade and a lane but no pm:* state, so no seat could see it. That was a triage sweep miss, fixed this round.
Activity
objectstack-fleet commentedon Nov 6, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: audit · p3 kept ·
domain:server· re-queued · 2026-11-06T12:47Z⛔ Not a claim.
controlPlaneUrlone reading. Should-fixes from PR feat(service-push)!: push sends through the hosted push relay, authenticated by the server's cloud binding #30749 (service-push: send through the hosted relay transport (push-relay.zod.ts wire, cloud binding credential) #29920).pm:*state, so no seat could see it. That was a triage sweep miss, fixed this round.Generated by Claude Code