Skip to content

[review] mechanical-batch behavior-change audit: #222 #229 #228 #315 #165 #177 #412

Open

Description

@ranxianglei

背景:机械批(11 PR)已本地集成验证(1100/1100 tests + typecheck + build,cherry-pick 链 batch-mech),#288/#342/#367/#397/#233 已合并。其余 5 个(#229/#315/#165/#177 未合,#228 待关闭)+ 已合的 #222,owner 要求逐一重新审查行为变化的合理性后再合。本 issue 记录审查结论,全部完成后关闭。

PR 状态 行为变化面 变化评估 结论
#222 已合,补审查 ① 概览分层行追加 (N blocks) 计数 ② 块列表截断时新增声明行(含 scope 提示) 纯 status 渲染诚实化;不触决策/状态;计数让模型能对账 nudge 的未截断列表 ✅ 合理,无回退需求
#229 未合 ① hybrid max:spread→reduce(数值语义零变化,仅消灭 >125K docs 的 RangeError 崩溃) ② doc-cache FIFO→LRU(命中重插,压力下保留热文档——保留顺序变化) ③ cap 语义文档化(Infinity 允许) 评分结果不变;缓存逐出顺序变 = 内存保留模式变化,属改进;崩溃修复是真 bug(#227 160K docs 实证) ✅ 建议合并
#228 待关闭 与 #229 同两行修复的子集(loop 形式),无 #229 的 LRU/文档/测试 被 #229 完全包含 ☑️ 关闭为 superseded
#315 未合 ① nudge 文案三档化:over-limit(≥maxContextLimitPct)不再谎称 "Context limit reached",改 pressure 措辞;emergency 保留 ② 新 pack section key pressureHeader(增量) ③ types.ts 注释修正(实际默认本就是 0.95,无值变化) 模型可见的注入文案变化(这是目的:阻止假"上限已到")——期望模型压力响应更诚实,不改变触发门控本身 ✅ 建议合并
#165 未合 未压缩范围视图:默认排序时间→大小降序 + 轮次边界切分(用户消息+组≥3 拆段)+ 尊重 limit(原硬编码 30) 纯渲染层;输出顺序/分组变化,服务于"先压什么"的直接答案;断言旧顺序的消费方需注意 ✅ 建议合并
#177 未合(与 #222/#165 冲突,需 rebase 后最后合) ① tool-result 经其 call 的 toolName 归账(原无 toolName 的 result 全落 text 桶——#386/#390 实测 tool 桶仅 0.6% 真实量) ② isToolMessage 统一为共享模块(contentType 判定) 仅 status 报告口径;工具/文本 token 分布变诚实;本地已解冲突(并集行 {ref,tokens,tool,isTool,index,isUser}),批内 1100 全绿含此项 ✅ 建议合并(最后)

合并顺序建议:#222(已合)→ #229 → 关 #228 → #315 → #165 → #177 最后(report.ts 与 #222/#165 交叠,我来推 rebase)。

共同安全边界:六项全部限于 ①status/报告渲染文本 ②nudge 措辞 ③搜索基础设施(评分语义不变)——不触压缩决策门控、wire 消息形状、持久化格式、工具 schema。

Activity

  1. ranxianglei commented on Sep 25, 2026

    @ranxianglei
    OwnerAuthor

    🤖 Powered by ework · qwen3.8-27b

    [bot] 🏷 审查结论:六项行为变化全部合理,无回退需求;建议按表内顺序合并(#229 → 关 #228 → #315 → #165 → #177 最后,#222 已合无需动作)。一句话总结:六个 PR 全部落在声明的安全边界内(status 渲染 / nudge 措辞 / 搜索基础设施),评分语义、触发门控、wire 形状、持久化格式、工具 schema 均未触碰;行为变化均为有意的诚实化修复或崩溃修复,且各有测试钉住。

    方法:逐一 fetch 各 PR head,对其各自 merge-base 逐行 diff(#222/#229/#165/#177 vs b30723f,#228 vs dd787e5,#315 vs 8ee1801),对照表格声明核验;本地定向跑测试(全量已有批内 1100/1100 + CI 覆盖):pr-315 nudge 相关 92/92、pr-165 decompress-report 20/20、pr-177 report-accounting+panel 18/18、pr-229 doc-cache+search 63/63(含 160K docs 回归,2.1s)。

    #222(已合,补审)✅ 无回退需求

    • 核实:tierBreakdown() 分层行追加 (N blocks) 计数;renderOverview() 块列表超 limit 时新增 ... and N more blocks not shown (scope:"compressed", limit:N for full list)。
    • 行为变化(有意,披露):分层行格式多一个后缀;截断时多一行声明。纯 status 渲染诚实化——让模型能对上 nudge 里未截断的块列表;不触决策/状态。
    • 测试质量:report-truncation.test.ts 复刻真实 bcp#330 session(41 active = 35 T1 + 6 T2),断言精确隐藏数与 scope 提示,含负例。有牙。

    #229 ✅ 建议合并

    • ① Math.max(...spread, 1e-9) → reduce((m,r)=>r.score>m?r.score:m, 1e-9):数值完全等价(floor 1e-9 保留,空数组两形式都 → 1e-9),评分语义零变化,消灭 V8 参数上限 RangeError(>125K docs,Node 22)。
    • ② doc-cache FIFO→LRU:命中时 cache.delete(text); cache.set(text, hit) 重插尾部、从头逐出。行为变化(披露):逐出顺序变 = 压力下内存保留模式变(热文档保留更久),属改进。
    • ③ cap 语义文档化:setDocCacheCap 做 Math.max(1, chars),Infinity 可通过且逐出循环永不触发——文档化既有行为,非改值。
    • 崩溃修复是真 bug(searchBlocks: hybrid Math.max(...docs) hard-crashes at ~160K docs; docFeatures 8MB cap re-tokenizes large corpora on every call #227 160K docs 实证)。测试:LRU 身份断言(FIFO 下必败)、Infinity cap、160K-docs 无 RangeError 回归,本地全过。

    #228 ☑️ 关闭为 superseded

    #315 ✅ 建议合并

    • 三档文案核实:over-limit(≥maxContextLimitPct,<emergencyThresholdPct)档 head 从 ⚠️ Context limit reached — compress now. Prioritize consumed tool outputs. → ⚠️ Context pressure high — compress now to stay under the limit. Prioritize consumed tool outputs.;tier T2/T3 over-limit 新触发线 [OVER-LIMIT — TIER N ...] Context pressure high — distill now...(旧代码此处自相矛盾:EMERGENCY 行 + efficiencyNote "not an overflow warning");emergency 档完整保留("Context limit reached — distill NOW")。
    • 行为变化(披露,即目的):模型可见注入文案在 over-limit 档变化——不再谎称"上限已到"。voice 字段值经核验全档位不变(over-limit 原本就是 voice "emergency",仅文本变);decideNudge 触发门控未动(compress.ts 不在 diff 中)。
    • pressureHeader 为增量 pack section key(存量 pack 不受影响,走默认);types.ts 仅注释修正——已对照实际默认确为 0.95(src/config.ts:20),无值变化。
    • 测试:单元级(措辞断言、override string 替换/null 移除)+ 过 processTurn 的 e2e(80% → pressure 措辞、96% → limit reached)。本地全过。

    #165 ✅ 建议合并

    • 未压缩范围视图核实:① 默认排序 时间 → 大小降序(平手按起始 ref 升序;注意 sort:"tool"/"age" 也走 size 分支,仅 "time" 保时序)② 轮次边界切分:user 消息 + 组 ≥3 拆段,与 buildCompressibleRanges 条件一致(recommend.ts:281)③ 尊重 limit(原硬编码 30)④ 新增头部行 Sorted by {time|size}。
    • 行为变化(披露):输出顺序/分组/格式均变——服务"先压什么"的直接答案;断言旧顺序/格式的消费方需适配(表内已注明)。
    • 测试:turn 切分、size 降序+平手、sort=time 时序、limit+截断行,本地全过。

    #177 ✅ 建议合并(最后,rebase 后)

    共同安全边界:逐项确认成立——六项均不触压缩决策门控、wire 消息形状、持久化格式、工具 schema。合并顺序按表执行即可:#229 → 关 #228 → #315 → #165 → #177 最后(rebase 由你推)。

    我无法合并 PR 或关闭 issue(系统规则:human-only)——请按上述顺序合并,并关闭 #228 与本 issue。

  2. ranxianglei commented on Sep 25, 2026

    @ranxianglei
    OwnerAuthor

    更新:#315 合并前置条件 +1 —— owner 确认 lean/default 两模式需覆盖,已验证单一渲染路径天然覆盖两者,但缺防分岔契约测试,已在 PR 内要求 ework 补充(leanPack 解析后三档断言)。#412 表中 #315 状态改为「等 lean 契约测试」。

  3. ranxianglei commented on Sep 25, 2026

    @ranxianglei
    OwnerAuthor

    🤖 Powered by ework · qwen3.8-27b

    [bot] 🏷 收到:#315 新增前置条件已记录(等 lean 契约测试)。我现在就在 PR 分支上补该测试——解析 leanPack 后对三档(gentle / over-limit / emergency)做措辞断言,钉住单一渲染路径防分岔。完成并推上分支后在此回复确认,届时 #315 的前置条件即满足。

  4. ranxianglei commented on Sep 25, 2026

    @ranxianglei
    OwnerAuthor

    更新:#165 owner 决定关闭重做(分段原语 ref 算术 vs 权威数组邻接不一致 + 缺 gapBefore,独立复刻条件),重做要求见 #413(共享分段 helper + 保留展示增强 + 跨视图一致性测试)。#412 表中 #165 从「建议合」改为「已关闭 → #413」。批内剩余待办:#229 → 关 #228 → #315(等 lean 契约测试)→ #177(rebase 后合)。

  5. ranxianglei commented on Sep 25, 2026

    @ranxianglei
    OwnerAuthor

    🤖 Powered by ework · qwen3.8-27b

    [bot] 🏷 两条更新都已处理完毕:

    ① #165 关闭 → #413:确认,并复盘我的审查疏漏。
    我之前对 #165 的结论「切分条件与 buildCompressibleRanges 一致」只核对了条件本身(isUser && count>=3),没有核对分段原语:权威实现(recommend.ts)是数组邻接 + gapBefore,#165 是 ref 编号连续性算术且缺 gapBefore 半边——这正是 recommend.ts 注释里明令禁止的用法(ref 有洞/中插摘要时碎 range)。我把分组循环当纯展示层代码审了,漏掉了「这是不是同一个原语、还是平行复刻」这一问。#413 的共享 helper 要求从结构上消灭这类漂移,方向正确。#413 已有另一 daemon 会话接手进行中(其 issue 内已 ack),我不重复劳动。

    ② #315 lean 契约测试:已完成并推上 PR 头(前置条件满足)。
    过程中发现一个并行会话已先推了 12f5b57(tests/nudge-text.test.ts +67):lean 无 nudgeSections 前提 + 非 tier 三档 byte-identity + 逐档措辞断言——覆盖良好但两处没钉到:tier 渲染路径(#315 同样改了 T2/T3 trigger 行)和 prompts 通道(它给 renderNudgeText 传 undefined prompts)。我弃掉自己重复的那版提交,补推互补的 4eafc48(新文件 tests/nudge-pack-contract.test.ts,100 行):lean surface 经 resolvePrompts 全解析后,tier-2/3 各档 trigger 行精确措辞 + 6 个 tier 变体与 default 渲染 byte-identical + lean 不携带任何 kernel prompt rule override 的前提断言。本地验证:两文件合计 35/35 通过,typecheck 干净。PR #315 head 现为 4eafc48。

    批内剩余待办(按你更新后的顺序):#229 合并 → 关 #228(superseded 理由已在该 PR 留言)→ #315 合并 → #177 rebase 后最后合(report.ts 与 #222/#165 交叠,#165 既已关闭,冲突面只剩 #222,比原计划更小)。合并与关闭都是 human-only 操作,由你执行;全部落地后 #412 可关。

    一句话总结:补上了 #315 的 tier 路径防分岔契约测试(4eafc48,#315 可合),确认 #165→#413 重做方向并复盘了自己漏审分段原语的根因,批内只剩按序合并动作。

  6. ranxianglei commented on Sep 25, 2026

    @ranxianglei
    OwnerAuthor

    机械批收官后的全量开 PR 队列(18 个),四类跟踪。本评论为活表格,状态变化在此更新。

    ① 扫眼即合 / 待修复

    PR 内容 状态
    #411 test-only: 补 #409 漏改的 fsp.rename mock ✅ 可合
    #361 prettier 风格收敛 (#360) ⚠️ 冲突 → 已评论让 ework rebase
    #347 config 告警按错误集去重 (#346) ⚠️ 冲突 → 已评论让 ework rebase

    ② 行为类深审(refold 栈,当日新推)

    PR 内容 状态
    #399 feat: refold-in-place(压缩原地更新内联还原块) 🔍 深审中
    #401 fix: 纯 refold 尺寸门 full-view 宿主绕过 🔍 深审中
    #403 fix: 尺寸门 too-small 诊断暴露 blocked 原因 🔍 深审中

    ③ 等外部条件

    PR 内容 状态
    #315 nudge 三档措辞 等 ework 补 lean 契约测试(已评论)
    #395 neverPreserveRecentTools 可配置化 bili 侧零引用,等 #1277 需要
    #378 acp_rule 对保护 搁置(rule CRUD 综合设计先行)
    #387 保护带拒绝附 acp_status 指引 搁置(根因两生产者已死)

    ④ 老 feat 队列

    PR 内容
    #345 结构感知 range 选择 (#344) — 行为类
    #323 output-headroom 预留策略 (#322)
    #261 prompt-pack 解析层 (#259)
    #255 panel 本地化标签
    #250 nudge 去 guidance 选项
    #235 subid 成员判定 fix (#234)
    #186 loadAll 解析预算
    #133 尺寸感知紧急截断 (billion-context-pi#12)

    处理顺序:② 深审 → ① 三条清尾 → ④ 按行为类优先逐个审。

  7. ranxianglei commented on Sep 25, 2026

    @ranxianglei
    OwnerAuthor

    🤖 Powered by ework · qwen3.8-27b

    [bot] 🏷 这条与上一条是同一请求(平台重复转发)——lean 契约测试已完成并推上 PR 头,无需再补:

    #315 前置条件已满足,表中状态可从「等 lean 契约测试」改为「可合」。批内剩余动作不变:#229 → 关 #228 → #315 → #177(rebase 后最后)。

    一句话总结:该前置条件已在上轮交付(4eafc48),此条为重复转发,无新增工作。

  8. ranxianglei commented on Sep 25, 2026

    @ranxianglei
    OwnerAuthor

    ② refold 栈深审完成

    栈关系: #399 ⊂ #401 ⊂ #403(超集,含 #402 诊断)。三头本地门禁全绿(#403: 1061/1061 + typecheck + build)。

    结论: 合并 #403 一条(已留审);#399/#401 关闭为 superseded(已评论)。语义不变量 7 条核实于 #403 审查评论(ref 不可复用保持/阻断集完备/同 id 新 summary/尺寸门仅 allRefold 绕过/full-log 双入口/字段向后兼容/计数诚实)。

    后续接线项: 宿主侧(bili/billion-context-pi)在内联 decompress 路径调用新导出 markBlockRestoredInline,否则 flag 不置位、refold 空转(无害)。随下次 pin bump 一起做。

    PR 状态
    #403 ✅ 深审通过,待 CI + 合并
    #401 ☑️ 建议 superseded
    #399 ☑️ 建议 superseded
    #361 ⚠️ 等 ework rebase
    #347 ⚠️ 等 ework rebase
  9. ranxianglei commented on Sep 25, 2026

    @ranxianglei
    OwnerAuthor

    🤖 Powered by ework · qwen3.8-27b

    [bot] 🏷 收到活表格。核对了 ① 队列的实时状态,三处可更新(均经 API 验证):

    本会话(#412)侧无新增待办:机械批剩余动作仍是按序 #229 合并 → 关 #228 → #315 合并 → #177(rebase 后最后),均为 human-only 操作;全部落地后本 issue 可关。②④ 队列的深审如分派到具体 PR 线程,会在各自会话内处理。

    一句话总结:活表格已收到,#411 实为已合、#361/#347 冲突仍在、#315 前置条件已满足可改「可合」,本 issue 侧无新增工作。

  10. ranxianglei commented on Sep 25, 2026

    @ranxianglei
    OwnerAuthor

    refold 栈收官

    #403 已合并(master fafc9c8),自动关 #400/#402;#398 手动关闭(body 只写了 Fixes #402);#399/#401 关闭为 superseded。

    遗留接线项(下次 bili pin bump 时): 宿主在内联 decompress 路径调用 markBlockRestoredInline,否则 refold flag 不置位(无害空转)。

    当前队列

  11. ranxianglei commented on Sep 25, 2026

    @ranxianglei
    OwnerAuthor

    🤖 Powered by ework · qwen3.8-27b

    [bot] 🏷 队列推进回报(17:2x)

    ① 三条清尾 → 剩一条:

    ③ 等外部:

    机械批(#412 表内)现状更新: master 已含 #177(d665150)+ #411(b86c064)+ #229(615347a)→ 批内剩余动作仅两条,均为 human-only:① 合 #315(head 4eafc48)② 关 #228(superseded by #229,理由已回帖)。我无法 merge/close,请 owner 执行后本 issue 即可关闭。

    一句话总结:#347 rebase 完成并全绿、#361 由其专属会话处理中,机械批只剩合 #315 与关 #228 两个人工动作。

  12. ranxianglei commented on Sep 25, 2026

    @ranxianglei
    OwnerAuthor

    🤖 Powered by ework · qwen3.8-27b

    [bot] 🏷 此条为重复转发(与更早的 refold 深审报告同一内容),表中状态已被后续事件全部超越:

    PR 当时 现在
    #403 待 CI + 合并 ✅ 已合并(master fafc9c8f)
    #401 / #399 建议 superseded ✅ 已关闭(superseded)
    #347 等 ework rebase ✅ rebase 完成(7a6f88e @ master b86c064,本地 1093/1093 全绿,详见 #347 线程)
    #361 等 ework rebase 🔄 其专属会话处理中(我 stand down)

    无新增工作;当前机械批剩余人工动作仍为:合 #315(head 4eafc48)+ 关 #228。

    一句话总结:重复转发,表内五项状态均已更新完毕,无待办变化。

  13. ranxianglei commented on Sep 25, 2026

    @ranxianglei
    OwnerAuthor

    ework你暂时接受这个工作 看是否还有没有review的吗 .搞了这一批可以把剩下的都看一遍

  14. ranxianglei commented on Sep 25, 2026

    @ranxianglei
    OwnerAuthor

    🤖 Powered by ework · qwen3.8-27b

    [bot] 🏷 收到,本会话暂时接盘 review。计划:

    1. 先枚举当前全部 open PR,逐个对照「是否已有 review 结论」——已审过的([review] mechanical-batch behavior-change audit: #222 #229 #228 #315 #165 #177 #412 表内六项、refold 栈、fix: warn once per distinct config-validation error set (#346) #347)不重复。
    2. 未审过的按同一纪律做行为变化审查:读原 issue → diff vs merge-base → 逐项行为面(旧值→新值+原因)→ 本地门禁抽验 → 结论(可合/需改/建议关)。
    3. 逐条结论回本帖(篇幅大时分批回帖),不动任何分支(纯只读审查+chore: converge on explicit prettier style (#360) #361 若其专属会话在推 rebase 则避让)。

    预计覆盖:④ 老 feat 八条(#345 #323 #261 #255 #250 #235 #186 #133)+ ③ 等外部(#395 #378 #387,搁置状态会标注)。开始执行,有结果即回。

  15. ranxianglei commented on Sep 25, 2026

    @ranxianglei
    OwnerAuthor

    🤖 Powered by ework · qwen3.8-27b

    [bot] 🏷 全队列审查 · 第一批(5/17 完成) —— #418 / #250 / #345 / #133 / #261。方法同 #412 表:原 issue → diff vs merge-base → 行为台账(old→new)→ §7.3 契约 → 测试有效性 → worktree 门禁复跑。完整审查档案存于本会话工作区 .tmp/reviews/pr-N.md。

    #418(prettier 非幂等修复,base=#361 head)— ✅ 建议合并(顺序:#361 先,再 retarget master)

    • 自身 delta 仅 5 文件(+50/−7):ci.yml 加 format:check(格式从「从不强制」→「强制必需检查」,已披露)、format 脚本→scripts/format-until-stable.mjs(先检查后写、≤5 轮、不收敛硬失败)、src/hide-consumed.ts 内联返回类型提取为模块私有 interface(振荡根因,prettier 3.9.6 needs two --write passes on src/hide-consumed.ts — format:check stays red after a single pass #416)。
    • 独立复跑 @1584fa1:单遍 prettier --write . 后工作树零改动(幂等 ✓)+ format:check ✓ + typecheck ✓ + 1108/1108 + build ✓。
    • nit(非阻塞):脚本裸 catch {} 会把环境问题误报为「未收敛」。

    #250(nudge guidance opt-out)— ✅ 建议合并(需先 rebase:nudge-text.ts 与 master 5589da3 冲突,机械可解)

    • 默认渲染零漂移:includeGuidance 省略/true 时三 voice 逐行一致(bot 执行级 12/12 场景字节一致);slim 是宿主显式 opt-in,emergency 强制句保留。
    • 复跑:876/876(PR body 声称 651——陈旧数字,实测为准)。下游:billion-context-dsh B6 发布后可删 stripNudgeGuidance workaround。

    #345(structure-aware range selection)— ⚠️ 需修改:代码本身已验证成立,必须先 rebase(#343 已合入 master,作者自己点名过)

    #133(size-aware emergency truncation)— ⚠️ 需修改(大项:捆绑特性未披露 + 版本违规 + 353 commits 陈旧)

    • 两个底层缺陷在 master 上均未取代(已亲验:origin/master:src/truncate-tools.ts:47,53 仍是 i < protectedIndex 硬保护最近 N 条)→ 不该关闭。
    • PR body 只披露了一半:分支实际叠了两个 fix(merge commit 并入 fix: hard per-tool-result token cap (billion-context-pi incident 2026-08-23) #159)——size-aware truncation(标题所述)+ hard per-tool-result cap 新特性(新 pipeline 节点 tool-result-cap、新配置 truncate.maxToolResultTokens、默认开启:任何 >min(10% limit, 16K) 的 tool-result 每 turn 被改写为 head+tail+marker)。默认开启与 decompress-inline 工作流直接冲突(内联大块会被 cap 到 16K/block)——跨仓影响,必须显式 flag 或拆成两个 PR(cap 部分触 §7.3(h) pipeline 形状,人工门禁区)。
    • 违规:package.json version 0.0.41→0.0.42(AGENTS.md §4 禁止非 release 分支改版本;master 已 v0.0.93,合并即版本回退)。必须剔除。
    • rebase 高风险清单(详见档案):master 重写了同一函数(surrogate-safe clamp + text last-resort 阶段,size-aware 需重做到两阶段)、pipeline 8→13 节点(插入点需重新论证 vs ccr-store/crush)、capToTokens 裸 slice 会劈 surrogate pair(master 刚修过同类 bug 9509aff)、cap 放 ccr-store 之后才能保 acp_retrieve 无损。
    • 复跑:482/482 @自身 head(陈旧 base 上)。

    #261(prompt-pack resolution layer)— ❌ 建议关闭(superseded by #260+#263)


    剩余 12 条(#433/#425/#387/#323/#186/#255/#235/#378/#415 + 已报的 #361/#347/#315 状态跟踪)审计进行中,完成后分批回帖。一句话总结:第一批五条中 #418/#250 可直接走合并流程(注意顺序与 rebase),#345 只差 rebase,#133 需按七步清单返工,#261 建议关闭为 superseded。

  16. ranxianglei commented on Sep 25, 2026

    @ranxianglei
    OwnerAuthor

    🤖 Powered by ework · qwen3.8-27b

    [bot] 🏷 全队列审查 · 第二批(7/17) —— #323 / #186。

    #323(output-headroom reservation 下沉为内核共享 API)— ✅ 建议合并(rebase 后;merge-tree 已验证对 master 05a2955 零冲突)

    • 纯增量新能力面:5 个纯函数 + 默认常量,内核自身无调用点 → 现有行为零影响;zero-deps/platform-agnostic 保持。
    • parity 独立复核(对照 live host master,非采信 PR 声明):pi 与 proxy 用不同协议标识符(api="anthropic-messages" vs protocol="anthropic")——kernel normalize + 豁免集恰好精确覆盖两种拼法,任一宿主迁移后判定逐位一致,无语义漂移;reserveOutputHeadroom/resolveOutputHeadroomCap(undefined→0.25)/applyOutputHeadroom(不 mutate、reserved≠limit 才返回新对象)/shouldReserveOutputHeadroom(undefined)→true 均与两宿主逐句一致 ✓。
    • 测试 15 个全有牙(含双标识符空间豁免显式测试);本地复跑 884/884 + typecheck + build 绿,CI 4/4 绿。
    • 本审计 = 第二 agent review(bot 09-17 已给第一审 PASS),§6「≥2 agents」满足;feat → 人工合并。合并前动作仅机械性 rebase + 三门禁复跑。发布顺序:kernel 先发,宿主随后 bump 替换本地拷贝。
    • 轻微发现(无需动作):仓库级 format:check 在 master 上本就失败(无 prettier 配置)——非本 PR 引入,Fix prettier two-pass non-idempotence; enforce format:check in CI (#416) #418/chore: converge on explicit prettier style (#360) #361 落地后即解决。

    #186(StateStore.loadAll({maxParseBytes}) stat-only 解析预算)— ⚠️ 需修改(小项:rebase 解 trivial 冲突 + PR body item-3 措辞修正;代码本身通过)

    • 默认路径字节级不变(无参走原 walkJsonFiles);budget 模式为 opt-in 新行为:stat 预选、canonical+.fb.json spill 同进同出(issue 硬约束满足)、skip-and-continue 填充、确定性排序、被跳过文件从不删除、非法输入 fail-fast TypeError。
    • 持久化格式零变更:PersistedEnvelope 接口 mb↔master diff 逐字相同,任意旧 state 解析结果不变——不构成跨仓 state 破坏。
    • 测试 6 个有牙(all-or-nothing 配对、skip-and-continue、fail-fast、跨目录不合并);本地复跑 875/875 绿,CI 绿。
    • 合并前必须修(doc-vs-code 漂移,§7.5 点名类别):PR body item-3 仍写「even the newest group alone exceeds the budget → nothing is parsed」,与实现(StateStore.loadAll: optional parse budget / stat preselection for sub-linear startup #185 floor-3 批准的 skip-and-continue 语义,测试②精确钉住)矛盾——更新组超限时更旧组照常装入,仅全部超预算才空 Map。09-03 已被要求同步措辞,至今未改。
    • rebase:冲突仅在 tests/persist.test.ts(master 侧其后加了 fence/CCR/image-routing 测试,~+81 行),解法=两侧并集,trivial;store.ts 自动合并干净。建议顺带补 maxParseBytes: 0 边界钉死测试。

    进度:17 条中 7 条完成(第一批 5 + 本批 2),其余 #433/#425/#387/#255/#235/#378/#415 审计进行中(部分审查档案已落盘),完成后继续分批回帖。一句话总结:#323 可直接 rebase 后合(双审齐了),#186 代码过硬只差 body 措辞修正 + trivial rebase。

  17. ranxianglei commented on Sep 25, 2026

    @ranxianglei
    OwnerAuthor

    🤖 Powered by ework · qwen3.8-27b

    [bot] 🏷 全队列审查 · 第三批(10/17) —— #433 / #425 / #387。

    #433(never persist placeholder text as CCR original,bili#1340)— ✅ 建议合并(base 即当前 master v0.0.94,无需 rebase)

    • 修复:storeCoveredOriginals 的 placeholder guard 从非对称(仅 ref 已在 store 时跳过)改为无条件跳过——与到达侧 storeLargeResults 对称。old→new(仅 lost-ref 场景):placeholder 字节落盘当「原文」→ acp_retrieve 返回假命中回显占位符 → 新:诚实 miss。正常路径(ref 已在 store)与真实原文存储均保持不动(first-write-wins 已核 src/content-store.ts:79)。
    • 测试有效性实证:checkout 修复前 ccr.ts → 新测试 FAIL;恢复后 PASS(不是只读断言)。CCR 默认 OFF,影响面限于启用 CCR 且命中 lost-ref 的宿主。
    • 门禁:typecheck ✓ + 1123/1123 ✓。「version bump」疑云已用证据排除(master 审计期间 fast-forward,git show pr-433 --stat 证明 PR 自身仅动 ccr.ts + test)。

    #425(release commit 携带 lockfile root-version 同步)— ⚠️ 需修改(rebase + 剔除已过时的 lockfile commit)

    • pre-reviewed(bot 审于 v0.0.90 基座),但前提已过时:master 已至 v0.0.94,当年修的 drift 已在 v0.0.93/v0.0.94 release 中自愈(lock root 现 = 0.0.94,与 package.json 同步)。
    • 处置:rebase 后保留 40f24d4(AGENTS.md §5 流程修正:version 行后跑 npm install --package-lock-only,预期恰好 2 行 lockfile diff——幂等性已在 Node 22 实测),剔除 c16229b(lock 同步到 0.0.90——应用在当前 master 上会降级 0.0.94→0.0.90)。净价值 = 单文件文档/流程变更,零运行时风险。

    #387(protected-zone rejection guidance + leanPack ref-stability wording)— ❌ 建议关闭(superseded + 搁置理由成立)


    进度:17 条中 10 条完成。剩 #255 / #235 / #378 / #415(审查档案部分已落盘),完成后继续回帖。一句话总结:#433 可直接合,#425 剔掉过时 lockfile commit 后就是纯文档修,#387 建议关闭(两半分别被 #419 取代和搁置理由覆盖)。

  18. ranxianglei commented on Sep 25, 2026

    @ranxianglei
    OwnerAuthor

    🤖 Powered by ework · qwen3.8-27b

    [bot] 🏷 全队列审查 · 第四批(12/17) —— #378 / #415。

    #378(acp_rule pair 按 stream-derived liveness 条件保护)— ❌ 维持搁置(superseded-pending-RFC #390,当前形态不可合并)

    • 代码本身验证成立:liveness walk(Recorded/Removed/Cleared 前缀)、fail-closed(畸形 Recorded 保持保护)、no-op 等价性(无删除事件时保护全部 record pair,与旧行为逐字节等价)、5 个消费点单一谓词无分叉(grep 确认无第 6 处)、缓存安全(保护只影响 range 选择不改消息字节)。本地复跑 1042/1042 + typecheck + build 绿。
    • 但 owner 已于 09-24 明确搁置:文本协议推导存活是补丁式做法,rule CRUD 需要综合设计先行(RFC [RFC] acp_rule lifecycle & CRUD design: source of truth, full semantics, protection as downstream conclusion #390,open 等拍板,其分析建议 option C host-declared typed state、彻底移除 option A)。[RFC] acp_rule lifecycle & CRUD design: source of truth, full semantics, protection as downstream conclusion #390 拍板前不应合并;PR 保留作重做参考。
    • 重做时须一并处理既有不一致(非本 PR 引入):消费点②(assignRefsNode BLOCKED ref 分配)受 hasProtection 门控而其余 4 处无条件——protectedTools 为空的宿主今天给 acp_rule pair 普通 ref 而非 BLOCKED。
    • 触 §7.3(f) protected-tool filtering,无论是否获批均属 human-gated。

    #415(turn-aware uncompressed ranges via shared segmentation,#413 重做)— ✅ 建议合并(rebase 至 476d440,冲突面已核查不相交,预期干净)


    进度:17 条中 12 条完成。剩 #255 / #235 / #250(档案已落盘待收口),完成后发最终汇总(含全部行动清单)。一句话总结:#378 维持搁置等 RFC #390 拍板(代码本身过硬),#415 四验收全 MET 可直接 rebase 后合;另发现 master 误提交 475KB tgz 产物,建议立项清理。

  19. ranxianglei commented on Sep 25, 2026

    @ranxianglei
    OwnerAuthor

    🤖 Powered by ework · qwen3.8-27b

    [bot] 🏷 全量 review 收官:17 个 open PR 全部审完(前四批已分批回帖,此为最后两条 + 总表)。

    最后两条:

    #255(panel 本地化,display-only additive)→ ✅ 建议合并。merge-tree dry-run 对 master 05a2955 零冲突(master 未动过 src/panel/*),无硬性 rebase 要求。默认输出字节一致经三重证据钉死(19/19 旧串 === DEFAULT_PANEL_LABELS;bot 执行级对 master@6cf0957 构建产物逐字节比对;第二 agent 18 场景 $&/$1 注入差分)。884/884。诚实缺口:labels:{} 测试是内部一致性而非 golden-fixture(非阻塞,建议后续补)。

    #235(base-id 归一化剩余站点)→ ⚠️ 需修改(rebase)。代码本身可放行:每处「比较前双侧归一 base」+ exact-first fallback,plain id 逐字节等价,prefix-safety 控制测试防过度匹配。rebase 硬需求且非机械:冲突落 boundaries.ts/decompress.ts/recommend.ts/sync.ts——正是被 #396 orphan-snap 与 #398 refold 同时改过的重灾区节点,须 union-of-intent 解 + 全量复跑;stacked commit a7b57ed 与 master 3740432 patch-id 相同,rebase 自动丢弃,body「Stacked on #233」表述需同步更新。896/896(body 声称 651 系旧基座数字)。建议 rebase 队列排最前(它是 adapter 投影 sub-id 的前提)。


    全量总表(master @ 476d440 v0.0.94)

    PR 结论 动作
    #433 ✅ 可立即合:base 最新、纯 fix、CCR placeholder 守卫,red/green 实证,1123/1123
    #347 ✅ 已 rebase(7a6f88e)+ CI 全绿,待合
    #315 ✅ lean 契约测试已交付(4eafc48),待合
    #323 ✅ rebase 后合(merge-tree 零冲突);parity 对照宿主活代码复核通过;§6 双 agent 审齐
    #255 ✅ 可直接合(或顺手 rebase 求新)
    #250 ✅ rebase 后合(nudge-text.ts 与 master gentle-tail-tip 机械并集);默认渲染字节一致
    #415 ✅ rebase 到 476d440(不相交区已验证干净);#413 四条验收逐项 MET,1125/1125
    #418 ✅ #361 合并后 retarget master 再合(stacked,已披露);幂等性实证
    #186 ⚠️ 小修 代码放行;PR body item-3 措辞与实现矛盾须修正(skip-and-continue ≠ 「nothing is parsed」,09-03 起未修);rebase 仅 tests/persist.test.ts 琐碎并集
    #345 ⚠️ 修改 代码验证通过(bc0b7ee 组合干净、自包含历史字节等价);rebase 必需(#343 已入 master,作者自己标注);建议补 crushed-result 不永久 open 钉测
    #235 ⚠️ 修改 如上:rebase 重灾区节点,union-of-intent,排 rebase 队列首位
    #133 ⚠️ 大改 勿关(两 bug 在 master 仍活:truncate-tools.ts:47,53 recency 保护仍在):捆绑未披露的 hard-cap node(#159 并入)、version bump 违反 §4 且回退 v0.0.93+、落后 353 commits、naive slice 回退 surrogate 安全、cap 与 decompress-inline 工作流跨仓冲突;review 文件内含 7 步返工清单
    #425 ⚠️ 小修 rebase 时丢弃 lockfile commit c16229b(v0.0.93/94 发布已自愈漂移,应用会降级版本),保留 AGENTS.md §5 流程修正 40f24d4
    #378 ❌ 保持搁置 owner 09-24 搁置理由复核成立(text-protocol liveness = 补丁式,#390 RFC 先行);代码本身验证扎实(1042/1042),解冻前另需修 consumer② hasProtection 门控前置不一致
    #261 ❌ 关闭 superseded 由 #260(09-12 已合)+#263 覆盖同一 issue #259;sanitize 语义分叉(string-replace vs whitelist-drop);原 bot 审查漏掉 2 分钟前的 #260 合并;5 条加固项建议作为小 fix 落到 master src/packs.ts(评审文件内列明)
    #387 ❌ 关闭 搁置理由独立复核成立(两个 retry-loop 根因已被 master 结构性消除;protected zone 单调性);packs.ts 半被 #419 取代(其测试在 master 必红);若触发面再现按新 issue 重立 embedded-boundary 方案
    #361 🔄 专属会话处理中(我 stand down)

    统一行动清单(均 human-only,我无法 merge/close)

    1. 立即可合:fix: never persist placeholder text as a CCR original (billion-context #1340) #433、fix: warn once per distinct config-validation error set (#346) #347(CI 绿)、fix(nudge): render distinct wording tiers for over-limit vs emergency bands (#312) #315、feat(panel): optional localized labels for buildStatusPanel #255
    2. rebase 后可合(顺序建议:fix: base-id membership at remaining exact-id check sites (#234) #235 → feat: output-headroom reservation strategy as shared kernel API (#322) #323 → feat(nudge): option to render nudges without the guidance sections #250 → fix(report): turn-aware uncompressed ranges via shared segmentation #415 → feat: StateStore.loadAll({ maxParseBytes }) — stat-only parse budget for sub-linear startup #186 顺带修 body)
    3. stacked 依赖:chore: converge on explicit prettier style (#360) #361 → Fix prettier two-pass non-idempotence; enforce format:check in CI (#416) #418
    4. 返工:fix: size-aware emergency truncation (billion-context-pi#12) #133(大,清单在评审文件)、feat(recommend): structure-aware range selection (#344) #345(rebase + 补测)
    5. 关闭:(fix) hybrid scoring: compute the score max in a loop — the Math.max(...) spread crashed at 130K+ docs #228(superseded by fix(search): hybrid max via reduce + LRU doc-cache (#227) #229)、feat: prompt-pack resolution layer (issue #259) #261(superseded by feat(packs): sink prompt-pack resolution layer into the kernel #260/lean pack drops the how-to-compress style contract — unstyled summaries hallucinate dialogue state #263)、fix: protected-zone rejection carries acp_status guidance; leanPack ref-stability wording (#385) #387(搁置理由成立)
    6. 保持搁置:feat: conditionally protect acp_rule pairs by stream-derived rule liveness #378(等 RFC [RFC] acp_rule lifecycle & CRUD design: source of truth, full semantics, protection as downstream conclusion #390)
    7. 小修:docs(release): release commit carries lockfile root-version sync (#424) #425(丢 lockfile commit)

    更正一条(诚实义务)

    上一批回报称「2adca91 把 acp-kernel-0.0.91.tgz(+475KB)提交进仓库,建议立项清理」——核实后该清理已完成:a5ff78e「chore: drop accidentally committed npm pack artifact (#428)」已移除,.gitignore 第 8 行已有 *.tgz。无需再立项,此条作废。

    一句话总结:17 个 open PR 全部完成行为变化审计——8 个可直接/低成本合并、4 个 rebase 或小修后合并、1 个大改返工、3 个建议关闭、1 个保持搁置,行动清单如上,请 owner 按序处置。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions