Skip to content

feat(dream): 冲突分诊账本 enforce 档——确定性处置接线(#641 beta 第二阶段) - #644

Merged
modusensus merged 7 commits into
feat/641-conflict-ledgerfrom
feat/641-conflict-enforce
Nov 10, 2026
Merged

modusensus merged 7 commits into
feat/641-conflict-ledgerfrom
feat/641-conflict-enforce

Conversation

@modusensus

Copy link
Copy Markdown
Member

Stacked on #643(Stage 1 shadow 档,含其全部基建)。实现 #641 beta 第二阶段:conflictLedgerMode 的 enforce 档——确定性处置接线。规格依据见 issue 正文与两条评论。

enforce 档做什么

冲突候选对经 triagePair 四档分诊后,按档处置(sleep 与 dream 两条链路同闸):

档 处置 谁决定
T1 dup(同 scope + sim≥0.9 + 同日双录) 信息量优先 supersede(supersedeInfoFirstPair):败者归档、胜者正文一字不动、可追溯注记在被归档侧 确定性规则,零 LLM
T2 cross-scope-dup 只落账本(不停车——归属问题不再逐对打扰人) 确定性规则
T3 evolution 只落账本(取代链 superseded_by + 检索降权在后续 PR) 确定性规则
T4 conflict 只落账本,两条都活、零归档(检索时消解在后续 PR) 不再由 LLM 选胜者

效果:人审队列与 LLM winner-take-all 裁决都不再消费冲突候选,conflict_pending 恒空。E13b 实测 P(毒胜出)=86.8% 的那条裁决路径在 enforce 下不可达;值级泄漏通道(applyConflict 的败者前 100 字追加)同样不可达。

关键实现决定

已知边界(诚实声明)

  • enforce 的 T2/T3/T4 目前是「记账即处置」:T3 的取代链(superseded_by 列 + 检索降权)与 T4 的检索时消解(fuseRecall 矛盾感知 + 注入机械标注)是后续 PR——在那之前 enforce 的价值是摘掉人审与 LLM 裁决两个不可靠消费方,矛盾对保持「都活着、可见、可测」。
  • 分诊边界(24h/7d/0.9)是 shadow 周验证的预注册参数:真实分布与 46/20/5/27 偏差大时,先调参再谈默认值翻转。

测试

  • 新增 test/conflict-ledger-enforce.test.js 8 条:sleep e2e(T1 信息量优先全链路 + 败者向量清空 + 队列恒空 + 零 LLM;T4 只记账;freeze 共存降级)、helper 契约(长度优先 / 三级兜底 / epistemic 不换位)、dream e2e(conflict 决策只落账本、胜者正文零污染;共存让位)。
  • Stage 1 用例同步更新(枚举拒 yolo 而非 enforce)。两文件 23/23 绿;全量 3286 tests / 0 fail(pipefail);check-sync 120 文件一致。

@coderabbitai

coderabbitai Bot commented Nov 10, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

Run configuration

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

enforce 档把人审队列与 LLM winner-take-all 裁决从冲突链路里摘出去(E13b:
P(毒胜出)=86.8%;人审 ≈30 条/天且 92% 的对从未两侧同场)。四档处置:

- T1 dup:supersedeInfoFirstPair(decisions.js 新共享出口)——信息量优先
  (长度 → updated_at → id 三级兜底)、trustEpistemicWeighting 显式关(自动
  处置承诺必须确定)、一律 supersede 不走 conflict(E13b 的值级泄漏通道
  ——败者前 100 字追加进赢家——在本档不可达)。败者向量清理补进
  maintainIndexAfterDream 清单(独立落地不进 applyList,漏清就是幽灵行);
  dream 的 noChange 同步计入 T1 产出(有归档的轮不许报 noop 刷基线)。
- T2/T3/T4:记账即处置——不停车、不送 LLM、不归档,两条都活着、可测。
  T3 的取代链与 T4 的检索时消解是后续 PR;本档先摘掉两个不可靠消费方。
- sleep 与 dream 两条链路同闸:dream 的 conflict 决策降级为分类器——经
  triagePair 再分诊后才处置(信号判 dup 的照样确定性 supersede,判据唯一
  实现是 triage.js 不是 LLM)。
- #616 父子绑定不继承:enforce 与 freeze 同开时 freeze 让位(sleep 降
  shadow / dream 降 freeze,warn 显式说出)——宁可少处置,不在两套处置
  语义打架的配置下跑。测试锁死。

默认 off 逐字节零变化;shadow 与 #643 完全一致。新增 8 条回归
(sleep e2e 两档 + freeze 共存 + helper 契约三条 + dream e2e 两条),
全量 3285 tests / 3284 pass / 0 fail / 1 skipped;check-sync 120 文件一致。
@modusensus
modusensus force-pushed the feat/641-conflict-enforce branch from 4206183 to 1ea7087 Compare November 10, 2026 20:57
modusensus added a commit that referenced this pull request Nov 10, 2026
130 个白名单键里约 75 个没有面板座位(有功能没入口,#607 报的 kb 问题同根)。
本刀按「用户会找 vs 调优噪音」逐个裁决,先补四个最该有座位的:

- injectHeatEnabled(#362):作为 heatEnabled 的缩进子行(FEATURE_CHILDREN)——
  数据同源、口径不同(曲线 vs 注入排序),贴着总闸渲染,父关标注不生效。
- chorographyAutoRefresh / chorographyT1FromPanel:作为 chorographyEnabled 的
  缩进子行(i18n 早已备好、座位一直没给——#607 的另一半)。
- entityRecallEnabled(#219)/ graphAnchoringEnabled(#24):进阶检索轴,收进
  「高级」第二层(7→9,标签同步);两者默认关且依赖实体抽取产出,与 retrieve
  的常开旋钮不同级。
- 其余无座位键维持 file-only:seedCap/depth/weight*/injectBudget 等是调优
  噪音(FEATURE_NUMBERS 同名纪律),sessionGate 需要会话名单 UI、scopeState
  有作用域级入口,本轮不塞。conflictLedgerMode 的座位随 #643/#644 的栈走。

全部新座位带中英名与一句话描述;结构锁跟随(高级层 7→9)。全量 3268/3267
pass / 0 fail(pipefail)。
enforce 档的演进对(created_at 差 ≥7 天)从「只记账」升级为真处置:

- store:memories 加 superseded_by/superseded_at 两列(幂等迁移,存量行 NULL
  不猜历史)+ 部分索引;supersedeChain 只动这两列,刻意不走 updateMemory
  完整写路径——syncMirror/notifyWrite/updated_at 都不该被纯元数据标注触发
  (正文零变化镜像无 diff;bump updated_at 会污染「这一对刚判过」的宽松
  代理判定)。已归档/已遗忘行不落链(给幽灵记账没有意义)。
- sleep/dream 双链路:enforce 下演进对新者胜落链(服务器时钟,内容声称的
  时间不做键),账本状态推进 superseded;快照行缺 created_at 时退回纯记账,
  宁可少处置不编造时间方向。相位结果透出 t3Chained。
- 与 supersede 动作的归档语义刻意不同:演进不是输赢,旧值仍是「曾经为真」
  的可追溯历史——不归档、向量保留,降权在检索侧做(fuseRecall 感知是下一
  个提交)。

全量 3295 tests / 3294 pass / 0 fail(pipefail)。
feat(sleep): 冲突分诊账本 shadow 档(#641 beta 第一阶段)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant