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
saveMetaItem 的 direct-active 写入是 api 的第三条门外通路 —— 命名空间门(ADR-0121 D1/D2)与去重门在这条路上无人跑 #5311
The maintainer ruling on #5488 landed 2026-08-07 16:59Z: flip api's allowRuntimeCreate to false and make the write inlet reject loudly (ADR-0049 remove side). Per this card's 2026-08-07 13:56Z linkage note, that ruling determines this card's fate: under allowRuntimeCreate: false there is no draft to promote, so the 裁 B implementation here is unreachable — this card closes as subsumed when #5488's implementation lands. Not dispatchable meanwhile; the unlock sweep on #5488's closure should close this card rather than return it to the queue.
Note: the Blocked-by: line is recorded in this comment rather than edited into the body — the body contains escaped code spans this tool cannot round-trip byte-exact, and a corrupted body is worse than a displaced machine line. The seat sticker (#6367) carries this card in its blocked-scan set.
Activity
os-zhuang commentedon Aug 5, 2026
分诊结论
去重/前提复核:未发现重复单或在飞 PR。#5312(spec 车道,已合并)只把
api补进类型注册表 + schema 绑定,其 PR 正文原样点名本单为「越范围发现,未在该 PR 内修」。#5279(engine 半边,已合并)给publishPackageDrafts接上了validateApiEndpointDeclarations全量门(含命名空间门 D1/D2),但那是 draft → publish 提升路径,不是本单描述的saveMetaItemdirect-active 写入路径。另注意到 #5488(今天由另一位同事分诊,needs-user-decision+domain:engine)是同一断链的另一方向——匹配器读不到运行时写入的sys_metadata行,与本单「写入时无人查命名空间/去重」是两个独立缺口,不构成重复,已相互交叉引用。前提复核(
origin/main,packages/metadata-protocol/src/protocol.ts):确认问题依然成立。文件顶部已 importvalidateApiEndpointDeclarations(第 52 行),但其唯一调用点在私有方法gateApiDraftsForPublish(约第 8163–8252 行),而该方法只被publishPackageDrafts调用。saveMetaItem方法体(约第 6839–7250 行)内对validateApiEndpointDeclarations/gateApiDraftsForPublish零引用 —— direct-active 写入(mode !== 'draft'时state: 'active',约第 6868/7178 行一带)确实完全不经过命名空间门与去重门。#5311 描述的第三条门外通路在两个后续 PR 落地后依然原样存在。分类:
needs-user-decision。本单正文明确给出 A(在saveMetaItem里对可得身份跑命名空间门,需要从packageId反查manifest.namespace,可行性待确认)与 B(承认 direct-active 写api不算「发布」,强制走 draft → publish)两个方向,并声明「取舍留给裁决」——这是会改变一条现有运行时通路语义的产品契约问题,不是可以直接排队实现的确定性缺陷。领域:
domain:engine。落地文件为packages/metadata-protocol/src/protocol.ts,归入领域表packages/metadata*一档。非driver-memory/driver-mongodb家族,不适用 #5499 冻结裁决。跨领域:未见需要拆分的迹象,判据函数(
endpoint-publish-gate.ts的firstFailure)与落地包(metadata-protocol)单一,不涉及第二个所有者。「本评论来自分诊座位 Routine(#5474 试点),不构成认领」。
Generated by Claude Code
claude commentedon Aug 6, 2026
处置(2026-08-06):改标 pm:on-hold。
理由:本单答案被 #5488 完全决定,该单已裁方案 2(
allowRuntimeCreate: false,退役api运行时创建)。重启条件:#5488 落地后直接关闭本单——第三条门外通路随退役消失,#5086 机制在写入口当场拒绝,零工作量。仅当 #5488 实施中改道「收敛取数源」时,本单按方案 B(直写 active 强制 draft→publish,复用 #5279 全量门)入队。
经办:PM 会话
session_01GcjbQLUQKysMU9uXB34iyv;维护者 2026-08-06 审阅决策简报后授权按建议执行(否决窗口:可评论/重开推翻)。Generated by Claude Code
os-zhuang commentedon Aug 6, 2026
【裁决落地】维护者 2026-08-06 批复全舰队决策箱评估报告(批复「同意」),本单裁定:
裁 B——直写 active 不算「发布」:saveMetaItem 对 api 类强制 draft→publish,发布门(ADR-0121 D1/D2 命名空间门 + 去重门)在 publish 流统一执行;判据复用 endpoint-publish-gate 的 firstFailure,⛔ 不产生第二份判据实现。
与 #5488(裁 2:allowRuntimeCreate 改声明 false,ADR-0049 退役) 同场落地——一致世界观:api 端点只经 publish 流。唯一既有调用点(publishPackageDrafts)本就走 publish,行为不变;变更的是堵掉门外通路。
流转:摘
needs-user-decision→pm:queue,归 engine-core 车道,与 #5488 同批派发或串行。评估与落地会话:
session_01N3uGFF8teXbpgtbEJ1aYXuGenerated by Claude Code
baozhoutao commentedon Aug 7, 2026
关联决策提示:本单 10:40Z 的裁 B(强制 draft→publish)与 #5488 的裁 2(退役 allowRuntimeCreate)经实测机制互斥 —— 裁 2 之下无 draft 可 promote,裁 B 的代码不可达。两单的走向已合并为一个决策挂在 #5488 的决策箱评论(2026-08-07,含实测爆炸半径与 A/B/C 三案),维护者批复前本单不派发。若批 A,本单以 subsumed 关闭;批 B,本单单独实施。
执行席 PM
session_019Q7oc7ASjh8yxyS3Yz78We。Generated by Claude Code
hotlong commentedon Aug 7, 2026
迁移:
domain:engine-core→domain:metadata(维护者 2026-08-07 批准拆分;座位贴 #6367,SKILL PR #6370)。落点证据:saveMetaItemdirect-active 写入绕过命名空间门(ADR-0121 D1/D2)与去重门 ——metadata-protocol/src/protocol.ts的 PUT /meta 写路径。全量分类审计 49 卡三判,本卡 MOVE/high。分诊会话:session_01BickTBKm2JYSNnrtPT8ysa。Generated by Claude Code
baozhoutao commentedon Aug 8, 2026
State update:
pm:queue→pm:blocked, Blocked-by: #5488 (domain:metadata seat, sessionsession_01KDU3qAuJyajAQm3GkUXdfA).The maintainer ruling on #5488 landed 2026-08-07 16:59Z: flip
api'sallowRuntimeCreatetofalseand make the write inlet reject loudly (ADR-0049 remove side). Per this card's 2026-08-07 13:56Z linkage note, that ruling determines this card's fate: underallowRuntimeCreate: falsethere is no draft to promote, so the 裁 B implementation here is unreachable — this card closes as subsumed when #5488's implementation lands. Not dispatchable meanwhile; the unlock sweep on #5488's closure should close this card rather than return it to the queue.Note: the
Blocked-by:line is recorded in this comment rather than edited into the body — the body contains escaped code spans this tool cannot round-trip byte-exact, and a corrupted body is worse than a displaced machine line. The seat sticker (#6367) carries this card in its blocked-scan set.Generated by Claude Code