文档批:全 ADR 查漏的 10 条作废 + 21 条留痕 + 结掉 design.md 七层线头 #96
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
为什么单独一票
这批与代码无关,可以和第一批(bug 修复)并行推进而互不干扰。它要关掉的是本项目反复出现的一类问题:「文档说有、代码没有」——历史上已至少四次(issue #61 的「灰度可一键关」、
MediaKind.file、ADR-0030 整份未落地、以及本轮查出的这批)。前两次都是撞见的、不是查出来的,说明"留痕"这个手段一直没在防住它们。硬性格式要求(本仓惯例,不得违反)
一律只追加
## 更新(2026-07-xx,issue #N)节,绝不就地改写既有「决策」/「拒绝了」节。三条实证先例:
poke位;CONTEXT.md / design.md 不适用「更新节」体例,就地修订即可,但改动要能被
git log追溯到本票。任务一:10 条判为「作废」
这些断言不该继续有效——需求变了 / 被更好的方案取代 / 当初就是投机。逐条在对应 ADR 追加更新节明确作废并写明理由。
注意:作废不是"删掉断言",是"追加一节说明它为何不再适用"。读者仍应能读到原文与推翻它的理由。本项目 ponytail/YAGNI 传统认为「文档写了但一直没人需要」本身就是它可能不该存在的证据——但理由必须写出来,不能只标一个"作废"。
任务二:21 条判为「留痕」
这些暂不实现,但必须在文档里如实标注「尚未实现」,防止后来者把它当既成事实援引。
本项目已经因此栽过:PRD 引用过一个 grep 不到的 API,因为 ADR 拍过板但从未落地(见
feedback_adr-decided-but-unimplemented-is-not-a-typo)。措辞纪律(ADR-0010 issue #83 节定过):写清「当下未实现」比写一个听起来合理但错误的理由重要。不确定为什么没实现就只写事实,不要编一个理由。
任务三:结掉 design.md 的七层线头
docs/design.md「作废/取代」节里有一句:这条从未被执行。2026-07-29 的结构实测已经给出了结论,结掉它、不执行,并补上实测依据:
shared契约桶才降到 5 条,再调三个模块归属到 2 条;shared/contracts,以及judge_persona_drift(4 个调用方跨 Memory/Agency)、recency_decay(3 个跨 Memory/Presence)这类横切原语的归属;层名保留为叙述词汇(CONTEXT.md 就是按这些分节的),只是不再作为分包依据。
Acceptance criteria
docs分支,按既定规则永不推送。src/、不碰tests/。Not in scope
附录 A:10 条「作废」清单
1. ADR-0010 更新(2026-07-08 第三方项目对照 grill)「系统自检信号层」条
2. ADR-0005「决策」节 + 「更新(2026-07-06)/ 双时间尺度」节(资源态推 energy 保留不变)
3. ADR-0006「决策」节「自发目标并入单一出口」条
4. ADR-0009 记忆工程 —「决策」节
5. ADR-0011 更新(2026-07-08):同维度换模型的增量重嵌入
6. ADR-0015「更新(2026-07-10 第二轮)」节
7. ADR-0001 —「决策」节七类 port 枚举末项(经济 hook)
8. ADR-0003 回复协议与渲染归属 —「决策」节(并被 2026-07-04 更新节重申)
9. design.md 存储与记忆工程「归档」bullet + 决策基线表第 7 行 + CONTEXT.md「三因子召回」条 + ADR-0009 决策节
10. CONTEXT.md「触发注入(Triggered Injection)」条 + design.md 存储与记忆工程「Knowledge」bullet
附录 B:21 条「留痕」清单
1. ADR-0010 更新(2026-07-08 第三方项目对照 grill)「Prompt Cache 命中率遥测」条
2. ADR-0005「更新(2026-07-10 第三方项目对照 grill 第二轮)」节第三条
3. ADR-0006「决策」节「Drive Tick」条,同 CONTEXT.md:223 与 design.md:407
4. ADR-0009 —「更新(2026-07-10 MemPalace 对照 grill):occurred_at」节
5. ADR-0009 —「更新(2026-07-11 第三轮)」节 ADOPTED 第 2 条
6. ADR-0009 —「更新(2026-07-08):晋升通道 + 检索评测 + 压缩容错」节(检索评测)
7. ADR-0020 —「备注(实现期跟进)」节第 2 条
8. ADR-0012「决策 → 6. 治理」节
9. ADR-0014 环境感知「决策」节 tier-2 条目(并被 2026-07-09 更新节复述)
10. ADR-0004 —「决策」节(并被 2026-07-04 更新节以 probe() 复述)
11. ADR-0025 决策节第 1 条群聊分支
12. CONTEXT.md「Outbox」条
13. design.md「occurred_at 相对时间解析」bullet + CONTEXT.md「事件记忆」条 + ADR-0009 两个更新节
14. CONTEXT.md「Port」条(共八类)+ design.md 架构 mermaid(resource/econ 方框)+ Port 契约节两条 bullet
15. design.md「冷启动与渐进解锁(ADR-0007)」节
16. CONTEXT.md「回调(Callback)」条 + design.md 能动性层「深挖任务委托」条
17. CONTEXT.md「深挖任务委托(Deep Task Delegation)」条
18. design.md 架构 mermaid 的 routing 方框 + 决策基线「低争议、直接采纳」列表「必修 bug 批」
19. docs/design.md:451 冷启动节 + :376 真人感层 + :87 同一措辞
20. CONTEXT.md:133-134「能力探测」条 + design.md:229-230 能力 port bullet(另 ADR-0004:11、ADR-0019:12)
21. docs/design.md:195-197 前处理 port bullet + :229-233 能力 port bullet
补充:附录 A 第 6 / 第 10 条(日期临近触发)的作废措辞,请务必带上架构指针
这两条是同一件事的两侧(第 6 条 = ADR-0015 决策节,第 10 条 = CONTEXT.md「触发注入」条 + design.md Knowledge bullet)。裁决不变,仍是作废,但措辞需要比原清单里写的多一句。
已确认:不重新归为「留痕」
评审时问过这条要不要改判留痕,结论是不改,而且留痕在这里比作废更糟——
留痕的措辞是「尚未实现」,而这条的问题不在于"没实现",在于它被写成了「触发注入的第二种模式」,这个归属本身是错的。标成「尚未实现」会把错的框架原样保住,下一个来做需求的人照着它实现,就会去给 Knowledge 条目加
date字段——正是第 10 条自己点出的那个陷阱:也确认:现在不开独立 PRD
原清单建议「若需要,应作为独立特性走 PRD」。现在不开,三条理由:
因此作废节里必须留下这句(原清单漏了)
理由:触发注入是关键词命中时装配进去的被动背景软参考;而「生日快到了要不要主动说」是一次主动开口裁决,该由两级门控决定,跟沉默预算、渐进解锁那一套护栏在同一条链上。
这句是这两条里唯一有长期价值的东西——丢了它,等于把这次分析白做:将来想做「生日提醒」的人会去翻 ADR-0015 找注入引擎,而正确的入口是 ADR-0006。
建议的最终措辞
本票其余 29 条不受影响。
更正:撤回上一条评论,日期临近改判「留痕」(不是作废)
上一条评论里那句「日期临近若将来要做,属于主动开口路径(两级门控 / Drive Tick),不属于触发注入区块」是错的,请勿采纳。 它误读了设计,且我把这个误读称作"唯一有长期价值的东西",需要整条撤回。
以本条为准。
设计原文:它从一开始就是注入侧的
CONTEXT.md「触发注入(Triggered Injection)」条:
要点:
距上次交互(同样是"挂进上下文的声明性事实、不驱动任何方程");date由 host 提供,core 不自算。原清单(含我上一条评论)把"注入一条声明性事实"当成了"触发一次主动开口",整个反对论证建立在这个误读上。
审计列的「四环前置链」有两环是虚的
date字段date来自 host,core 不自算——不存在这一环真实工作量是:条目形状加一个可选
date+ 触发匹配器加一个临近判定 + 照既有区块注入。trigger_injection.py全模块 41 行,量级与既有关键词匹配器相当——远不是"整条链无一存在"。裁决改判
第 6 条(ADR-0015 决策节)与第 10 条(CONTEXT.md「触发注入」条 + design.md Knowledge bullet)从「作废」移到「留痕」。
于是本票的计数变为:附录 A 作废 8 条,附录 B 留痕 23 条(总数 31 条不变)。
改判理由:作废的前提是"这条断言不该继续有效",而它其实是一条归属正确、量级不大、只是没实现的决策;不实现的唯一真实理由是目前零 host 在填
date,做完也暂时不产出效果——但那是"等 host",不是"设计错了",与 arise 一贯的 core 出契约 / host 来填同形。留痕措辞(必须保住正确归属)
date由 host 提供,core 不自算。未实现的现状原因是目前没有 host 提供date。」注意别把"现有"原样留着——原文「触发模式现有两种」用"现有"把未实现的写成既成事实,这是原清单第 10 条抓到的真问题,改判留痕后这条依然要修,只是修法从"撤回"变成"标状态"。
措辞纪律
按 ADR-0010 issue #83 节既定:写清「当下未实现」比写一个听起来合理但错误的理由重要。本条的正确理由是"等 host 提供 date",不要写成"与主动开口门控的交互未定"之类——那是上一条评论的错误说法。
本票其余 29 条不受影响。
作废,由 #101 取代。原因:本票附录 A 的 10 条「作废」裁决从未被复核过——查漏流水线是「扫描→对抗复核→裁决」,对抗复核跑在裁决之前,结构上只能验证「这条落差是不是真的」(事实层,且验对了),验不到「该怎么处理它」。事后补跑裁决复核:8 条作废裁决送审,0 条站住(1 条方向保留但理由要重写、5 条改判留痕、2 条改判待人类拍板)。失效模式集中在两点:把「注入侧/声明性/被动」的机制读成「触发侧/决策式/主动」;把原文已指定责任方的前置(「由 host 提供」「core 不自算」「不新开 port」)当成缺失环节。修正版见 #101,正文与两条评论保留作认知轨迹留档。