Repository navigation
Description
观察类发现(observation-class),在起草 ADR-0121(#5060)核查 ADR-0076 时顺带发现,未认领,不带 pm:queue —— 今天没有任何用户或作者会撞上它,但它是 ADR-0078 状态行校准(#4787 → #4919)同一形状的问题,按 Prime Directive #10「不要把发现埋掉」记录备查,严重度交 PM 分诊定。
基线:origin/main @ 94f7b6a。
事实
docs/adr/0076-objectql-core-tiering.md 第 3 行:
**Status**: Proposed (2026-06-28, rev. 9) — D1–D12 below. ...
Verified 2026-07-16: D1 (metadata-protocol extraction + back-compat re-export),
D2 (core-boundary ratchet test), D9-step1 (segmented protocol interfaces) confirmed in code;
... D12 framework side landed in #3028 ...
状态行自己就记着 D1 / D2 / D9-step1 / D12 已在代码中确认落地,而抬头仍是 Proposed。
同一份 ADR 在仓内被当作生效决定引用(非穷举):
| 引用处 | 用法 |
|---|---|
AGENTS.md(dev-stack 一节) |
「mount everything advertised (ADR-0076 D12)」—— 作为纪律陈述 |
packages/runtime/src/domains/actions.ts 文件头 |
「/actions domain — extracted dispatcher body (ADR-0076 D11 step ③, PR-9)」—— 该文件的存在理由 |
packages/runtime/src/domains/*.ts 一族 |
D11 的 domain registry 分解即其产物 |
| #4936 正文 | 「正是 ADR-0076「一条路由一个属主」小节点名的那类输入」 |
| #4939 正文 | 「这本身就是 ADR-0076「一条路由一个属主」要防的形状」 |
| #5040 设计文档 §1 | 保留前缀方案的论证前提 |
| ADR-0121(本次起草,#5060) | 明确声明「扩充 ADR-0076,不取代」 |
为什么值得记一笔
Prime Directive #13 的原文是「An accepted ADR binds until a superseding ADR says otherwise」,而 AGENTS.md 把「改动 docs/adr/ 治理的领域前先 grep ADR」写成每个 agent 的必做动作。这两条合起来,状态行就是读者判断「这条决定是否约束我」的唯一开关。一份实际上在约束 runtime 目录结构、被 AGENTS.md 引用、且正在被新 ADR 扩充的记录,抬头写着 Proposed,等于邀请下一个 agent 判定它可以绕过。
这正是 #4787 对 ADR-0078 描述过的机制 ——「An ADR that says "not built" about a built gate is a live misinformation source: the next reader re-opens the project or routes around a gate that is already load-bearing」。方向相反(那次是 Proposed 说自己没建成,这次是 Proposed 说自己建成了一半),失效方式相同。
建议处置(不预判,交分诊)
按 #4919 的做法逐条校准而不是整体翻牌 —— 一份分阶段 ADR 被整体标成「已完成」比标成「没开始」更坏,因为它会让人停止检查。ADR-0076 的分布本来就参差:
- D1 / D2 / D9-step1 / D12:状态行自称已确认落地;
- D11:ADR-0076: remaining objectql/protocol layering work (cross-repo window) #2462 系列(feat(runtime): dispatcher 薄域注册表接缝 — ADR-0076 D11 步骤③ PR-1 (#2462) #3491–feat(runtime): /meta /data 终刀抽出 — D11 步骤③ 收官,if 链清空 (#2462) #3573)的 VERDICT 段落记录了 dispatcher 分解已完成、legacy if-chain 归零;
- D3(capability/profile 契约):状态行明写
unbuilt; - D7 / D10:明确 deferred(trigger-gated),是设计意图不是欠账。
所以合理的形态大约是 Accepted — D1/D2/D9-step1/D11/D12 implemented; D3 unbuilt; D7/D10 deliberately deferred,逐条标注,与 ADR-0078 校准后的house form 一致。
content/docs/releases/。若要一并做,scripts/adr-anchors.json 可考虑为 D11 的 domain registry 落点补锚(PD #13 推论:让实现决定的文件指回决定),但那是可分开的第二步。
关联:#4787 / #4919(ADR-0078 同形状的先例与做法)、#5060 / ADR-0121(本次起草,扩充 0076)、#4936、#4939、#5040。
Activity
os-zhuang commentedon Aug 5, 2026
认领:PM 循环第 2 轮(v17 C 组 docs 门面)
会话:
session_01FTszibd6C8sUCCZnM4VcrL分支:
claude/issue-5063-adr-0076-status-lineWorktree:
objectstack-issue-5063域:
domain:devx文件面:
docs/adr/0076-objectql-core-tiering.md(状态行校准);scripts/adr-anchors.json(D11 锚点,issue 明说可分开 —— 由 dev 判断是否同 PR)。⛔content/docs/releases/零改动、⛔ 不碰packages/**源码、⛔ 不碰 os-regen 生成物。同批 #5269 文件面为
content/docs/deployment/tenancy-modes.mdx,与本单互斥。Generated by Claude Code
os-zhuang commentedon Aug 5, 2026
PM 复核(第 2 轮):ACCEPT → PR #5356
会话
session_01FTszibd6C8sUCCZnM4VcrL。这一单交付的东西比 issue 要求的多:它不是把
Proposed翻成Accepted,而是逐条对码核证 D1–D12,结果发现 rev.9 的叙述两个方向都不准 —— 既有少报也有多报。这正是「逐条校准而非整体翻牌」该有的产出。四条承重 claim,PM 独立核验(不取报告自述)
四条全部属实。零命中做了反向对照,这是我在派发词里点名要求的,做到了。
值得记下的两个方向
ObjectStackProtocol组合别名被解散了,不是被弃用,全仓零声明;D7 虽按设计推迟,却已被check-engine-split-ratio.mjs+engine-split-metric.yml仪表化(刻意 report-only,因为阈值本身仍是开放问题);D11 的域体已搬进runtime/src/domains/*,dispatcher 从约 3.8k 降到 1721 行。rest-server.ts反而长到 7693 行;D1 的 OQ#2 从未执行(SysMetadataEngine仍在metadata-protocol,没搬进metadata-core)。新抬头
Accepted — D1/D2/D4/D5/D6/D8/D9 implemented; D10/D11/D12 partially landed; D3 unbuilt; D7 deliberately deferred与实测一致。顺带修正 D9 back-compat 那条(它声称保留一个已不存在的别名),否则新抬头会与正文自相矛盾 —— 这个连带判断是对的。其它
Accepted不会让任何门以不同方式对待本 ADR ——check-adr-anchors.mjs对Status/Accepted/Proposed三词零命中(纯在场检查),ADR-0076 在adr-anchors.json里根本没条目,全仓无其它脚本解析状态行。test/typecheck,与其编造证据不如如实说明」—— 对。跑的是真正相关的六个 docs/ADR 门禁,输出都贴了。.changeset/adr-0044-revise-service-owned-note.md,同类 ADR 文档单。runtime/src/domains/*与domain-handler-registry.ts未被在场门守住 #5357(为 D11 落点补 anchor)已入finding待分诊;拆单理由成立:该门自己的文档要求「每条锚点必须挣得它的失败模式」,在 14 个 domain 模块里挑哪几个值得锚是独立判断。两条 ADR 内部开放项,留给维护者(不催,PM 不代拍)
dev 如实记录、未自行立单,我同意不立:D1 的 OQ#2(
SysMetadataEngine迁移)与 D10 的 OQ#6(中心 facade 的DataProtocol实现搬到传输层)现在已被状态行如实陈述。它们是 ADR 自己的开放问题,不是缺陷;是否要为其立实施单,属于路线决定,维护者可在读到新状态行后决定。CI 全绿后转 ready 入队。
Generated by Claude Code
os-zhuang commentedon Aug 5, 2026
已落地 —— PR #5356 经合并队列合入 main(
0c1660306)会话
session_01FTszibd6C8sUCCZnM4VcrL。落地判据复核,origin/main上的状态行:与逐条核证结果一致。Prime Directive #13 的形状补上了:一个已被
AGENTS.md、packages/runtime/src/domains/*文件头、ADR-0121 当作生效决定引用的 ADR,抬头不再写着Proposed。拆出的 #5357(为 D11 落点补
adr-anchors.json锚点)仍在finding待分诊,本会话按暂停指示不派,留给下一任。Generated by Claude Code
docs(adr-0076): 状态行由 Proposed 校准为 Accepted —— 逐条核对 D1–D12 的真实落地状态 (ob…