执行方式:inline(同 M1-M5 先例),implement.jsonl / check.jsonl 保持种子行,Phase 2 上下文走 trellis-before-dev。四期,每期一 commit,期末验证绿才进下期。
v7/src/style-stats/index.js:splitSentences / splitParagraphs / styleMetrics / extractImagery / extractFingerprint(契约与算法口径见 design §2.1)v7/test/style-stats/index.test.js:
验证:node --test v7/test/style-stats/
提交:feat(v7): M5.5 P1——style-stats 统计算法(分句/意象/指纹)
v7/src/health-check/index.js 改造:排除表 / 正文读取剥 front matter / 全书意象→meta / 两段指纹 upsert / 缺时间锚点 / 报告四节替换占位 / 结构化 data 返回 / 单项 try-catch 降级(design §2.2)v7/test/health-check/index.test.js:
.cache 全量重建 → 再体检 → 指纹行逐字段一致v7/test/state-machine/router.test.js 不改仍绿(体检后 meta 更新、next 不再报体检)验证:node --test v7/test/health-check/ v7/test/state-machine/
提交:feat(v7): M5.5 P2——体检编排(意象入 meta/指纹入表/缺时间锚点/结构化返回)
v7/src/mechanical-check/index.js:checkImageryHits + checkStyleDeviation 两候选(design §2.3);v7/test/mechanical-check/ 补用例——有数据命中出候选、无数据静默跳过、句式阈值边界(29% 不报 31% 报)、pass 判定不受候选影响v7/src/prep/index.js:97:反复读清单接 meta(design §2.4);v7/test/prep/ 补有/无 imagery_top 两态断言v7/src/commands/report-style-drift.js:补 sentence_length_variance_delta;对应 v7/test/commands/report-style-drift.test.js 更新v7/src/cache/rebuilder.js:49 注释同步(行为不变)验证:node --test v7/test/mechanical-check/ v7/test/prep/ v7/test/commands/
提交:feat(v7): M5.5 P3——机检候选、备料反复读清单、drift 方差 delta
node --test v7/test/(Windows 本机跑)——374/374 绿(原 346 + 新增 28)last_health_check_chapter)绝不改pass = issues.length===0 语义绝不动,新增只进 candidatesgit revert 该期即可,无跨期数据耦合