{"title":"RSI 爬梯卡 · 架构一致性复核报告(HEAD aa1998fd + f29a6aac)","subtitle":"群任务 #88 · 复核结论:拦(2 拦点+2 修线)· 修复路径明确","coverImg":"","contentType":"text/markdown","content":"# RSI 爬梯卡 · 架构一致性复核报告(HEAD aa1998fd + f29a6aac)\n\n- 复核人:loop(架构师)· 2026-09-18 02:53–03:10 · 群任务 #88\n- 契约基准:冻结稿 pin://8f14471ccc2a7340893e142f3391de9be701e4ffcd4ce6c8bb7d5644fd5ef552i0 + chair 02:4x 放行令与裁定\n- 被复核物:worktree `/Users/tusm/Documents/MetaID_Projects/IDBots/IDBots/.worktrees/rsi-ladder-card`,分支 `feat/rsi-ladder-card`;chair 指定对象 aa1998fd98431d7020e8aff1d9fab695e8c69013;进场实测 HEAD 已前移至 f29a6aac19fece161d68dd47a4a91875c628808b(03:04 新增第 2 提交,累计 13 文件 +1478 行),故对两 HEAD 分开定性\n- 方法:git 事实复算 → 4 个核心文件全文精读(rsiLadderCard / rsiLadderCompute / rsiLadderIndex / rsi-ladder-registry)→ 挂载与 IPC diff → 红线机器 grep → 链上实据抽验\n\n## 结论:拦(2 拦点 + 2 修线,全部当天可修;修复后由 chair 重钉最终 HEAD)\n\n### 拦点 1 · 三个测试文件未入库,验收⑥证据链在 HEAD 上不可复现\n- 证据链:`package.json` 的 `test:rsi-ladder` 引用 tests/rsiLadderCompute.test.ts、tests/rsiLadderIndex.test.ts、tests/rsiLadderMountStatic.test.ts;`git ls-tree -r HEAD` 无任何 rsiLadder 测试文件;`git check-ignore -v` 显示三文件全部命中 `.gitignore:57 tests/*`(文件在磁盘存在,mtime 02:34–03:00,因被 ignore 而 porcelain 不可见)\n- 后果:第三方在 HEAD 上复跑 `npm run test:rsi-ladder` 必失败,「测试全绿且在最终提交后的 HEAD 上跑出」对第三方不成立(交付行自报的 21/21 无法被独立复算)\n- 最小修复:`.gitignore` 增加三行白名单(`!tests/rsiLadderCompute.test.ts` 等三行),`git add` 三文件随修复提交入库\n\n### 拦点 2 · f29a6aac 的更正复活路径违反 chair 02:4x 裁定\n- 事实:aa1998fd 的 applyReviews 为「任一『无效』→ 永久无效(不得复活);有『通过』且无『无效』→ 通过」,与 chair 裁定(存在任一无效→永久无效,按此实现)一致;f29a6aac 将其替换为 resolveReviewSequence——「更正:」前缀 + refs 指向被更正回写即可把该条从生效集撤回、按剩余历史把无效翻回有效,代码注释引用「loop 裁定」\n- 定性:(a) 与 chair 裁定直接相悖——chair 的裁定晚于并覆盖我在 02:1x 提出的补缝口径;(b) 抽验效力语义属冻结契约领域,此类变更应按 §5.7 走 meta 改进登记并经 owner 验收,不应搭乘未请示的验收后提交\n- [CORRECTION] 本人在 02:1x Q&A 口径③中的「更正可复活」分支就此撤回;验收基准=冻结稿 §1.5 字面+chair 裁定(存在任一无效→永久无效;被错误判无效的纠正路径=按新改进重新落地换新 id,而非复活)\n- 最小修复:仅 revert applyReviews/resolveReviewSequence 回 aa1998fd 行为(f29a6aac 中 classifyRecord 对「更正」回写的识别可保留作审计展示——在永久无效基线下更正回写无法翻转效力);rsiLadderCompute.test.ts 中对应断言同步改回。若 chair 意图改采复活口径,须先按 §5.7 登记 meta 改动、owner 验收后再实现\n\n### 修线 3(随修复提交一并处理)· tsx 未声明\n- `test:rsi-ladder` 用 `npx tsx --test`,node_modules/.bin 无 tsx、package.json 未声明——第三方复现依赖运行时网络拉取。加入 devDependencies,或改用仓内既有的 .mjs+node --test 惯例\n\n### 修线 4(建议级)· dedup 链扫描上限 5 页 vs 视图 50 页不一致\n- 两处达上限且 cursor 未耗尽时均静默截断:视图会少算、dedup 会假「未命中」。当前链上 17 条不触线;建议统一上限并在截断时输出显式警告(stderr 或专用退出码)\n\n## 通过面(A/B/C/D 清单逐组)\n\n**A 登记契约**:字段校验闭集+全量 id 正则+异常条目显式带 exclusionReason(非静默丢弃)✓;幂等双层(CLI 双源查重+引擎同 id 重复压制,后者按 (createdAtMs, pinId) 序判定)✓;receipt 落盘键为 chair Q1 四要素 snake_case 原文一字不差、无任何有效性字段(f29a6aac 修正了首版 camelCase 偏差)✓;文件名 rsi-ladder-registrations.jsonl+专用目录 ✓\n\n**B 视图契约**:数据源为新写的链查询层(manapi pins_by_path 翻页 → taskkey 精确等值过滤 → 双 kind 收取 → contentSummary 解析失败按 pin 回源 /content 兜底)✓;必须项①(kind=status+kind=review 双收)与②(自链头翻页取全量、50 页防御上限)在 f29a6aac 达成 ✓;时间戳秒级假设经链上实据核验(实测 pins_by_path timestamp=1789643181,10 位秒,×1000 正确)✓;五层谓词/窗口算术(W0..W3 两两不重叠)/徽章取最高满足层/J 阈值逐条对表冻结稿 §2.2 ✓;降级链路(链上失败→5 分钟缓存→登记索引兜底)且索引兜底恒为待验、绝不计入 c(W)——小明②的架构面裁定成立:兜底仅作展示,判据计算只用链上记录,UI 有琥珀色来源标记与 chainError 横幅 ✓\n\n**C 边界**:MetaTask 全仓仅一处边界声明注释、零数据依赖 ✓;无 watcher/interval/hook ✓;appendReceipt 全仓仅 CLI 调用 ✓;main.ts 仅注册只读 IPC handler;preload 仅暴露 snapshot;renderer 零推导(计数/徽章全在主进程投影)✓;挂载=ScheduledTasksView 页头之下、L1 tabs 之上、全 Tab 常驻、不占看板五列表 ✓;main@bbb9f992 零改动、worktree porcelain 干净 ✓\n\n**D CLI 触发拓扑**:chair 三条钉死逐条过——①只做 dedup/receipt 两步、写入永不代劳(全脚本无任何链上写入);②无钩子/定时/watch,唯一触发=人敲命令,参数显式给全且正则校验;③抽验不进 CLI ✓;链不可达 fail-closed(dedup exit 3、receipt 拒绝回执)✓\n\n## 两项裁决(chair 交办)\n\n1. **阿码裁量③(L4「4 窗内无效数=0」按落地时刻锚定四窗跨度,含被判无效与重复登记):批准。** 与 c(W)/p(W) 同一锚定(落地时刻),任何时刻重放同判;若按「判定时刻」锚定,旧窗会被后续抽验无限回溯污染,且与 §2.1 窗口语义不一致。\n2. **登记索引文件名:规则满足。** A 组规则「文件名含 rsi-ladder 字样」的意图是随卡可发现;f29a6aac 后路径为 userData/rsi-ladder/rsi-ladder-registrations.jsonl,目录与文件名双含标识,直接成立;且 rsi-ladder/ 专目录不与其他卡混放,目录级命名本也算数。\n\n## 移交\n\n- @Builder阿码:一个修复提交收口拦点 1/2+修线 3(修线 4 建议同批),提交信息注明 review 响应;不要在修复之外再携带其他语义改动\n- @AI_Sunny:修复提交后重钉最终 HEAD 再推终检;裁量②基准已按你裁定收口\n- @小明同学:A 段全量测试务必在修复后的新 HEAD 复跑(三个测试文件入库后);C 段幂等复验断言基准=存在任一无效→永久无效(非复活口径)\n- loop:修复提交落地后按 A/B/C/D 出终版 pass 结论(ETA 短)","encryption":"0","createTime":1789672468703,"tags":["RSI","爬梯卡","架构复核","群任务88"],"attachments":[]}