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
Ruling (maintainer, 2026-08-07): option A — the spec describes the body that actually goes over the wire.
GetViewResponseSchema becomes a discriminated union over {list} / {form}, matching getUiView's two returns; the client SDK's getView gets the real type instead of unknown; the test doubles pin the real shape rather than just the URL. Precedent: #5745 did exactly this for the save response.
Option B (change the producer to emit {object, view}) is not a v17 question. The "breaking change" worry about A is hollow — nobody can consume {object, view} successfully today (reading .view throws at runtime), so correcting the declaration only breaks a compile-time illusion. If {object, view} is genuinely the shape we want long term, that is a deliberate v18 change and A does not foreclose it.
v17 release blocker, contract-lies class: ship the honest declaration now.
Operator: PM session session_01GcjbQLUQKysMU9uXB34iyv; maintainer ruling 2026-08-07 (decision-inbox round 2). Veto window open — comment or reopen to overturn.
Activity
claude commentedon Aug 6, 2026
分诊:
needs-user-decision+domain:spec(路由标签,不代表方向已定)。GetViewResponse是公开导出类型,对下游破坏性)、B 改生产端发{object, view}(需先测绘 objectui 的.list/.form消费面)。哪个形状「长期正确」是公共契约拍板,分诊不代拍,也不按「哪边改动小」定。packages/spec/src/api/protocol.zod.ts:702;B 落packages/metadata-protocol/src/protocol.ts:4046(getUiView的两条 return,:4070 / :4107)。按「shared contract surfaces have one owner」,无论裁哪条,调度权先归domain:spec座位;若裁 B 且实现确实零改packages/spec,由该座位按落点转domain:engine-core。packages/client/src/client.test.ts现有的 getView 替身只钉 URL、不读载荷(发的还是第三种形状{success,data}),所以这处分裂至今没有任何断言看见;packages/client/src/index.ts的meta.getView因此在 client SDK 的meta.getItem没有声明返回类型(载荷为unknown),而并排的meta.getItems有 —— 同一表面上相邻两个方法的类型化不对等 #5545 里被刻意留作unknown,未按 spec 撒谎标注。GetViewResponseSchema/getUiView仅命中本单;同族已定案的GET /meta/:type/:nameanswers two different body shapes on the same request — the cached branch (the DEFAULT) returns the bare document, the non-cached branch returns the spec-declared{ type, name, item }envelope #5563(getItem 形状收敛)与 [#5563 附带裁决] SaveMetaItemResponseSchema 补齐实现实际返回的字段(version / seq / state / projectionApplied) #5745 是先例、不是重复。origin/main上protocol.zod.ts最近改动为 feat(spec): SaveMetaItemResponseSchema 声明保存响应的全集字段 version / seq / state / projectionApplied (#5745) #5861(save 响应),未触本路由;getUiView两条 return 现状未变。前提成立。本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
claude commentedon Aug 7, 2026
Ruling (maintainer, 2026-08-07): option A — the spec describes the body that actually goes over the wire.
GetViewResponseSchemabecomes a discriminated union over{list}/{form}, matchinggetUiView's two returns; the client SDK'sgetViewgets the real type instead ofunknown; the test doubles pin the real shape rather than just the URL. Precedent: #5745 did exactly this for the save response.Option B (change the producer to emit
{object, view}) is not a v17 question. The "breaking change" worry about A is hollow — nobody can consume{object, view}successfully today (reading.viewthrows at runtime), so correcting the declaration only breaks a compile-time illusion. If{object, view}is genuinely the shape we want long term, that is a deliberate v18 change and A does not foreclose it.v17 release blocker, contract-lies class: ship the honest declaration now.
Operator: PM session
session_01GcjbQLUQKysMU9uXB34iyv; maintainer ruling 2026-08-07 (decision-inbox round 2). Veto window open — comment or reopen to overturn.Generated by Claude Code