Skip to content

[PM seat] domain:metadata — 🟢 os-zhuang #6367

Description

@hotlong

本贴是 domain:metadata 座位的唯一权威登记。 座位贴协议:索引 = label:pm:seat,总入口 #4604(指针页)。本席由维护者 2026-08-07 批准自 domain:engine-core 拆出(拆域 SKILL PR #6370)。

单写手规则:只有在任座位 PM 编辑本贴正文;接管/移交 = 改正文 + 一条审计评论。空缺争用:动手前重拉正文、审计评论时间戳先到先得、写后回读。活性判定(惰性,无心跳,仅接管冲突时评估):>24h 无产出即可回收。

范围

engine 的元数据半边,按包边界切(Anchoring rule 原样适用):

  • packages/metadata*(metadata service / registry / directory 机制)
  • packages/platform-objects(内置平台对象定义)

红线:

卡点自报信号(座位职责)

  1. 队列水位:连续 3 天 >15 张、或平均滞留 >48h → 提频/加 batch/继续拆域;
  2. 与 engine-core 跨界卡连续出现 → 回分诊重划边界;
  3. 分诊脉冲(单次灌入 20+)→ 一次性 sweep 专项吃掉。2026-08-09 06:4x–06:5xZ 小型脉冲(一次灌入 5 张)已当轮全部定价并派完

当前 PM(会话或 Routine ID)

  • GitHub: os-zhuang
  • Session: session_01W6bLax4KMrSfnE1ydFU8Dw
  • Seated: 2026-08-08T08:35Z — via maintainer invocation /pm-dispatch metadata
  • 姿态: Round 7 收束中(2026-08-09T08:2xZ 读数) —— 在飞 1、决策箱 2、等维护者人工闸 1。
  • 批次上限:5(维护者 2026-08-08 指令)。
  • 常设优先级:维护者 2026-08-09「继续处理 v17 相关的任务」。
  • protocol.ts 并行授权:维护者 2026-08-08 显式授权区域不相交并行作者;落地端逐张串行;同函数/同区域恒不同批。
  • 前任:GitHub baozhoutao,会话 session_01KDU3qAuJyajAQm3GkUXdfA,任期至 2026-08-08T08:2xZ(计划性收官)。

说明 —— 台账(os-zhuang 任期)

已 MERGED(20 卡 20 PR,零返工零升级)

PR commit
#6563 交接项 #6642 e6025e9
#6417 NULL-safe 视图索引 #6666 bb7cb417c
#5079 删除后三面陈旧 #6687 114e72795
#6036 死选项 runtime #6700 61282f906
#6285 发布期护栏 #6708 a5d25734c
#6479 PATCH 路径 id(v17) #6709 252f71bd6
#6620 软删限支意图(v17) #6768 75e6871bf
#6660 死翻译键 ×14 #6767 d42a92fc6
#6418 probe-first 移植 #6770 bed427f7e
#6602 org 泄漏收口(v17) #6779 4bb6f01af
#6659 SSO 四语标签 #6787 e78760861
#6621 revert 刷新 registry(v17) #6807 271cee131
#6562 effective schema 读(Option B) #6811 5e247fd6b
#6772 probe SQL PG 合法性 #6817 50a8d115a
#6640 preserveAudit UPDATE-only + 响亮拒绝(裁决 Option 2) #6823 2ab1257c9
#6771 overlay 索引单一生产者(major,ADR-0087 marker) #6824 9960cd2a0
#6780 org-gated registry heal(方向 b,v17) #6826 725c7b023
#6699 classifyIndexFailure 错误对象穿线(#6250 家族第五词表) #6845 53aeb027f
#6710 发布门改由显式作者通道激活(A1 裁决,v17) #6971 30283263c
#6848 dialect 臂 cause-walk 对称化(#6250 家族第六词表) #6989 c733ae8e0

v17 板本任期已摘 7 张;revertCommit 三部曲(#6563/#6620/#6621)全落;#6250 家族第五、六词表连落。

#6710 落地要点(后继卡必读):assertRuntimeAuthoringRules 不再读 environmentId,改读新公共选项 authoringChannel: 'environment' | 'package-author',默认在装配缝与构造器两处解析。⇒ 门覆盖的拓扑变多(CLI host-config 已入网)。⚠️ #6715 实测澄清边界:#6710 settle 的是哪些 kernel 激活门,不是哪些 type 门会 dispatch —— 后者是 #4716,至今零类型开放。cloud control-plane-preset.ts:99 一行声明为实际欠账

在飞(1 张)

决策箱(维护者)—— 2 张,均带完整选项菜单与推荐

状态 推荐
#6190(v17) 实现完成 PR #6973 CI 全绿但按住(draft/HOLD)。协议侧裁决已落实(两条铸行路径、注册表派生判据、无迁移、TSDoc 前提坐实);范围重测为 19/27 类型(非 ~25)。阻断已由 PM 独立核实:runtime/src/domains/meta.ts:270-271 无条件传 session org 且 PUT /meta/:type/:name 无 scope 参数 ⇒ 单独合并将关闭 19 类型在任何 org-enabled 部署的 Studio 授权,且拒绝信息给的补救经该端点够不到。runtime 套件全绿仅因其 dispatcher 测试从不填 activeOrganizationId A(runtime 只对 allowOrgOverride 类型传 org)+ runtime 先落、#6973 后落(该写入今日已是幻影,先修 runtime 零 403;协议先行会在两次合并间打断授权)
#6853 严重性已升级:非"陈旧 contributor",实测为租户 kernel 上无需操作员介入的数据面 404(包仍在发行的对象)。机制:overlay 与 packaged owner 同 package_idregisterObject 把 packaged contributor splice 掉(registry.ts:1159,写时销毁非遮蔽),loadMetaFromDb 每次 boot 静默重做,随后 delete 时 isArtifactBacked 读到被覆写的 contributor 答 false → tier-3 触发 → contributors 空。可决定性实测为 NO:unregisterObject 仅地址,registerObject 另需四值、其中三值在 heal 前已消失 ⇒ 06:49Z 的「复用 name-addressed API」未清掉 01:26Z 的闸 B(生产者侧:overlay 注册为独立 contributor,不再销毁 packaged own)+ C 可作 decision-light 卡先落止血。B 的代价是 ADR-0029 契约变更(overlay 今日整体替换 vs mergeObjectDefinitions 字段增量;第二个 own 破坏 assertSingleOwnerPerObject)—— dev 有意未选该语义

停 ready 等维护者人工闸(不占在飞槽)

本任期 STOP 收口(设计出口,非返工)

队列与供给(4 张持卡,全部有外部等待项;可派 0)

跨车道备忘

运维注记(本任期实测,交接必读)

  1. flip 定点 6-9 分钟核 job 结论;auto-merge 首挂可能静默失效(fix(objectql,metadata-protocol): a deleted runtime-created overlay leaves the registry, so list/get/dispatch agree (#5079) #6687)—— 落地双读数是唯一抓手;读 main 窗口宁大勿小(fix(metadata-protocol): PATCH /data/:object/:id binds the PATH row, not the body's id (#6479) #6709 grep ≥40;fix(metadata-protocol): classify a failed index build from the ERROR, not its message (#6699) #6845 perPage=5 差点漏)。AM 返回值字段为空是本仓已知假警报(fix(metadata-protocol,objectql): activate the #4463 runtime authoring gate from a declared authoring channel instead of the environmentId proxy (#6710) #6971/fix(metadata-protocol): the dialect arm of classifyIndexFailure walks cause to the conflict arm's depth (#6848) #6989 两次实证:method/enabled_at 皆空,队列分支正常出现)—— 判准是队列分支,不是返回值。
  2. 台账读数会过期:跨席/决策箱条目消费前必须回源核实。裁决可能由他席 PM 会话代记(#4463 运行时发布门在 host-config 拓扑(environmentId 未绑定)上整体不跑——#5086 只把 code-only 拒绝移出了同一条短路 #6710 的 A1 由 session_01LGRN2cSRfggfX9B2L83bQc,org 作用域的 flow overlay 只在「本进程内发布后」绑定触发器,重启后静默失绑——冷启动两条读路径都把 organization_id 非空的行滤掉了 #6190session_01JaVVMrSxt7Tgi1uwEuDtH7)—— 只认卡上评论,不等专属通知。
  3. session limit 灭批 ×3(共 11 人次):SendMessage 复活 = resume from transcript 零丢失;按名字不可达时用 spawn 返回的 agentId 直发(五发五中)。
  4. worktree footgun ×2:git checkout <分支> -- <文件> 首提交前静默回退 —— 派发令带警示行;建议进 os-dev 定义(复盘项)。
  5. 派发令三分区(裁决/机制假设/标准条款)+ 后继定价必答项:24 单 24 中(20 落地 + 1 停 ready 待人工闸 + 3 按 STOP 设计出口)零返工。文件锚点会漂移 —— 锚定函数名而非行号。
  6. 开发产出的 PR body 必须英文(Round-5 起写进派发令)。
  7. needs_decision / STOP 是设计出口而非返工:#4463 运行时发布门在 host-config 拓扑(environmentId 未绑定)上整体不跑——#5086 只把 code-only 拒绝移出了同一条短路 #6710(dev STOP→PM 菜单→维护者裁决→原认领续派→落地)、[finding] validateEmptyCombinators gates the runtime publish path for flow only — the other filter-carrying metadata types reach the same door ungated #6715(实测触发分诊自设停止条件→关闭并转交测量)、org 作用域的 flow overlay 只在「本进程内发布后」绑定触发器,重启后静默失绑——冷启动两条读路径都把 organization_id 非空的行滤掉了 #6190/Registry heal restores the metadata-map view but never re-registers a packaged contributor definition an overlay save replaced #6853(实现或测量完成后升级,零投机代码)。菜单须给推荐 + 每项长期代价。
  8. 晋级不等于已验证 —— 消费分诊晋级时必须回读是否有未兑现的前置闸(本轮三次实证):assertSortFieldsExist's dotted-path SORT hint also prescribes an unmaterializable "formula or rollup" denormalization — same defect class as #6673, different axis #6924 的闸是「一条实测 repro」,Registry heal restores the metadata-map view but never re-registers a packaged contributor definition an overlay save replaced #6853 的闸是「一个 API 决定」,[finding] validateEmptyCombinators gates the runtime publish path for flow only — the other filter-carrying metadata types reach the same door ungated #6715 的闸是「gap 是否普遍」。前两张被 06:4xZ 一次性 pass 以「同缺陷类」/「锚点已命名」越过;Registry heal restores the metadata-map view but never re-registers a packaged contributor definition an overlay save replaced #6853 的越闸理由已被实测正面证伪(unregisterObject 仅地址,registerObject 另需四值)。处置:改 verification-first / decision-scoping 派发,把未兑现的闸变成 dev 的第一交付物。
  9. 反向验证的四种诚实结果都要保留:预测中的红;预测漏的红(记原因);结构上不可能红的行(只是幸存 carve-out 的覆盖,非本次证据)与方向反转的行(证明新判据被真正读取);⭐ 以及因短路而未被测量的预测(fix(metadata-protocol): the dialect arm of classifyIndexFailure walks cause to the conflict arm's depth (#6848) #6989 示范 —— 明说不 claim,不悄悄记成通过)。无测试覆盖的改动(ADR 散文)应直言「无反向验证」并改报实际 gate 输出 —— 伪造的反向验证比缺席的更糟(docs(adr-0005): amend the overlay-index section instead of rewriting it #6981)。⭐ 方法学:revert 要 revert 到自己的 base,不是移动中的 origin/main(fix(metadata-protocol): refuse an org-scoped write of a type that has no per-org channel (#6190) #6973 因此多测出两条红)。
  10. PM 的机制假设会错,且必须公开纠正(本轮四次):[finding] validateEmptyCombinators gates the runtime publish path for flow only — the other filter-carrying metadata types reach the same door ungated #6715 的注册表注释(#4463 运行时发布门在 host-config 拓扑(environmentId 未绑定)上整体不跑——#5086 只把 code-only 拒绝移出了同一条短路 #6710 settle 的是 kernel 激活面而非 type dispatch);fix(metadata-protocol): the dialect arm of classifyIndexFailure walks cause to the conflict arm's depth (#6848) #6989@objectstack/types 无可复用 collector;fix(metadata-protocol): the dialect arm of classifyIndexFailure walks cause to the conflict arm's depth (#6848) #6989 的 cycle-safety(predicate visited set,匹配它意味着刻意不加);Registry heal restores the metadata-map view but never re-registers a packaged contributor definition an overlay save replaced #6853 的三卡必须同行(实测可分离)。派发令的「机制假设(须实测,鼓励证伪)」分区正是为此存在。
  11. PM 亦会程序性失误:[docs] ADR-0005 的「Index migration」段落描述的是已不存在的机制:addSysMetadataOverlayIndex 已随 #6771 删除,段落还写着 project_id 与 partial 键 #6825 派发前未读那条分诊评论,却在派发令写了「冲突时以分诊为准」,导致 dev 收到互相矛盾指令。dev 照较晚决定执行并把分歧摆出来问 —— 正确做法。教训:派发前必须读完卡上全部评论
  12. SKILL 复盘:前任 [skill] pm-dispatch: 5 lessons from the domain:metadata seat's first term (8 cards MERGED / 0 rework / 4 dev-side falsifications) #6644;本任期复盘立卡安排在座位移交时(待命≠移交)。

定时器:巡逻链 send_later(现役 trig_01Y5QwKftwLZ4kNCGSfMuKVF @ 2026-08-09T08:39Z;在飞期 ≤45);旧钟均已 spent。

Metadata

Metadata

Assignees

Labels

domain:metadatapm:seatPM seat registry issue - single-writer body, index = this label

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions