feat: flow 第 1 部分(骨架、研究开始、第零轮)与第零轮检验

按任务书 12 实现 src/flow:从账本现算下一步的纯函数、主循环、恢复入口、派模型任务和跑正式运行两个共用动作、冻结配置、基线、第零轮三个研究者阶段和入口分配,走到第 1 轮时停下。materials 导出 finalEntries、加 researcherId 和 StudyRecord。

审阅采纳两条:研究编号本机已用过时冻结前报错;docker run 没启动时写完结果就停下,不在本进程里无限起新编号。

eval/ 新增第零轮检验:起研究命令行、回放假模型、检验用 Jev 客户端、六问质量评估、16-real-1 回放、杀进程与两份同时跑。tsc 与 depcruise 也检查 eval/,新增 eval 只经 index.ts 用正式代码的规则。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-03 10:58:52 -04:00
parent 8491191a2b
commit 75d7cffd27
36 changed files with 2456 additions and 14 deletions
+10 -1
View File
@@ -1,5 +1,6 @@
// 模块之间的依赖规则,来源是 docs/结构.md 第二部分(模块表)和第六部分(检查规则)。
// 模块按 src/<模块名>/ 认;新建模块目录后自动受这些规则检查。规则只管 src 下的模块,tests/ 不受"只有某模块能用某外部包"的限制。
// 模块按 src/<模块名>/ 认;新建模块目录后自动受这些规则检查。规则主要管 src 下的模块,tests/、eval/ 不受"只有某模块能用某外部包"的限制;
// eval/ 另有一条:只能经 src/<模块>/index.ts 用正式代码(任务书 12 第三部分第 4 条)。
// 模块表"依赖"一列:每个模块除了自己和 vocab 以外,还能引用哪些模块。plugin 装配时可用各模块。
const ALLOWED = {
@@ -76,6 +77,14 @@ module.exports = {
from: { path: "^src/" },
to: { pathNot: ["^src/", "^node_modules/"], dependencyTypesNot: ["core"] },
},
{
name: "eval-through-index",
comment:
"eval/ 像用户一样用正式代码,只能经 src/<模块>/index.ts 引用(CLAUDE.md\"测试\":正式代码和检验代码完全分开)",
severity: "error",
from: { path: "^eval/" },
to: { path: "^src/", pathNot: "^src/[^/]+/index\\.ts$" },
},
{
name: "pure-allowlist",
comment: