Part of objectstack-ai/cloud#1046(cloud 分片 PM 按跨分片协议移交;objectui 分片 PM 从队列接)
背景与决定
cloud#1046 要把 failWithCode 的开放 extra 收口、业务上下文统一走 error.details.*(依据:framework#4224 对 settings-routes 的裁定、cloud#930 的 AiErrorExtra 先例、ADR-0112 的 details 槽)。核查发现 Console 有一条生产路径在裸读这些键的顶层位置,所以这是一次两仓协调变更,objectui 半边先行:
本仓要做的(strict 版)
packages/app-shell/src/environment/entitlements.ts:
- 把 entitlement 键(
upgrade_url / contact_url / plan / current / limit / seatCount / entitlement)的读取从 error.<key> 改为 error.details.<key> 唯一位置(现读点::107、:108、:133、:148-149;调用链 useConsoleActionRuntime.tsx:325(裸 res.json())→ :331 entitlementDialogFromError → EnvironmentEntitlementDialog,入口 views/ObjectView.tsx:1748);
- 删除
entitlementErrorFields()(:84-87)的平铺双方言容错(body?.error ?? body)—— 不新增第三种可接受形状,不留 ?? 回退;
- 更新相应测试为 strict 断言。
时序(关键,合并后请知会 cloud 分片)
本 PR 合入 objectui main 后,托管 Console 不会立刻变 —— cloud 镜像按 .objectui-sha 钉扎。cloud#1046 的后半(收口 extra + 5 个调用点改 details + 11 条断言重写)将与 pin bump 同一个 PR 落地,使托管产品的生产者/消费者原子切换,无中间窗口。本 PR 合并即解除 cloud#1046 的 Blocked-by。
一个需要否决窗口的默认(维护者可推翻)
strict(不保留平铺回退)的前提是「Console 与控制面在托管产品里由 pin 原子同发」。若存在真实的自托管控制面显著落后于 Console 的部署形态,strict 会让新 Console 对旧控制面失去弹窗 —— 那种情况下正确做法是带日期的声明式弃用而非开放式 ??。默认按 strict 执行;有异议请在此单说明。
完整证据与四方案对比见 cloud#1046 的 dev 分析评论。
cloud 分片 PM session_015W6nhsDrz6zWQc8je12a1t 代立;labeling ≠ claiming,本会话不认领本单。
Generated by Claude Code
Part of objectstack-ai/cloud#1046(cloud 分片 PM 按跨分片协议移交;objectui 分片 PM 从队列接)
背景与决定
cloud#1046 要把
failWithCode的开放extra收口、业务上下文统一走error.details.*(依据:framework#4224 对 settings-routes 的裁定、cloud#930 的AiErrorExtra先例、ADR-0112 的details槽)。核查发现 Console 有一条生产路径在裸读这些键的顶层位置,所以这是一次两仓协调变更,objectui 半边先行:本仓要做的(strict 版)
packages/app-shell/src/environment/entitlements.ts:upgrade_url/contact_url/plan/current/limit/seatCount/entitlement)的读取从error.<key>改为error.details.<key>唯一位置(现读点::107、:108、:133、:148-149;调用链useConsoleActionRuntime.tsx:325(裸res.json())→:331 entitlementDialogFromError→EnvironmentEntitlementDialog,入口views/ObjectView.tsx:1748);entitlementErrorFields()(:84-87)的平铺双方言容错(body?.error ?? body)—— 不新增第三种可接受形状,不留??回退;时序(关键,合并后请知会 cloud 分片)
本 PR 合入 objectui main 后,托管 Console 不会立刻变 —— cloud 镜像按
.objectui-sha钉扎。cloud#1046 的后半(收口extra+ 5 个调用点改details+ 11 条断言重写)将与 pin bump 同一个 PR 落地,使托管产品的生产者/消费者原子切换,无中间窗口。本 PR 合并即解除 cloud#1046 的 Blocked-by。一个需要否决窗口的默认(维护者可推翻)
strict(不保留平铺回退)的前提是「Console 与控制面在托管产品里由 pin 原子同发」。若存在真实的自托管控制面显著落后于 Console 的部署形态,strict 会让新 Console 对旧控制面失去弹窗 —— 那种情况下正确做法是带日期的声明式弃用而非开放式
??。默认按 strict 执行;有异议请在此单说明。完整证据与四方案对比见 cloud#1046 的 dev 分析评论。
cloud 分片 PM
session_015W6nhsDrz6zWQc8je12a1t代立;labeling ≠ claiming,本会话不认领本单。Generated by Claude Code