Repository navigation
fix(dream): degraded 轮跳过明细落库到 dream_runs.skipped (#104) - #142
Conversation
宽容路径上 validateDecisions 就地 splice 抹掉被跳决策(数组长度不变、内容已变), dream_runs.decisions 存的已是幸存列表,被跳条目只进 logger.warn——离线回放 degraded 轮无法判断被跳的是跨类型 merge、update 保护期还是 unknown id。 slow-stack#137 只覆盖了整单拒绝(failed)路径。 - src/store.js: dream_runs 新增 skipped TEXT 列(JSON,addColumn 迁移,同 policy_epoch/run_type 先例),saveDreamRun 写入 + toDreamRun 读回; - src/dream.js: degraded 出口把 skipped 明细透传给 finish,写独立字段而不内联进 decisions(degraded 的 decisions 是合法子集,下游按「决策数组」消费); - test/dream.test.js: 断言 degraded 审计行含 index/action/error,且 decisions 不含内联标记; - lib/ 由 npm run sync 同步(仅 dream.js / store.js 内容变化)。 测试:839/840 通过。唯一失败 test/peer-blockers.test.js 的 peer-C(8 进程并发 原子递增)在本机沙箱下 spawn EPERM,与本改动无关。
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (5)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe change adds nullable ChangesSkipped decision audit
Priority: ⬇️ Low Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Bug fix Suggested reviewers: Merge Risk: ⚪ Minimal · up to Skipped decision audit details are retained for degraded runs while normal runs remain unchanged. No actionable merge-blocking risk remains. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
背景
degraded(合法子集已应用)路径上,validateDecisions会把非法决策就地splice出数组(数组长度可能不变、内容已变——src/dream/decisions.js末尾有一段注释专门说明这一点),dream_runs.decisions落库的是幸存列表,被跳过的条目只进logger.warn。离线回放
dream_runs因此无法定位 degraded 的成因:分不清被跳的是跨类型 merge、update 保护期还是 unknown id。#137覆盖的是整单拒绝(failed)路径(decisions: [{ _validationFailed: true, errors, skipped }]),degraded 路径此前没有等价的落库形态。证据等级:
validateDecisions里被就地抹掉main的src/dream/decisions.js纯函数复现,输出见 #104 跟进评论skipped交给落库main的src/dream.jsdegraded 出口finish载荷不含skipped改动
按 #104 中确认的形态实现——独立字段,不用内联标记:
src/store.jsdream_runs新增skipped TEXT(JSON)+addColumn幂等迁移(同policy_epoch/run_type先例);saveDreamRun写入、toDreamRun读回src/dream.jsskipped透传给finish,由finish写进审计行test/dream.test.jsindex/action/error,且decisions不含内联标记只在真发生跳过时才写(degraded 也可能仅因 summary 为空而 degraded),ok 轮落 NULL——避免「空数组」与「无此字段」两种假明细占据审计行。
这样 degraded 与 failed 两条路径的处置都可在审计行里离线定位,不必重跑 LLM。
验证
npm test:848 个用例,847 通过。唯一失败是test/peer-blockers.test.js的 peer-C(8 进程并发原子递增),在本机沙箱下spawn EPERM(环境不允许子进程命名管道),与本改动无关。lib/由npm run sync同步(仅dream.js/store.js内容变化)。Summary by CodeRabbit
Bug Fixes
Observability