Przeglądaj źródła

docs(harness): 进度日志改为正序(旧 → 新),并加机械校验

用户指出「进度日志顺序反了」——原顺序是倒序(Session 034 在最上、000 在最下)。

- progress.md 的 35 个会话块翻为**正序(旧 → 新)**,与根 README.md 的日期节一致
  (README 的正序是 Session 016 时用户明确要求的)
- 前言加顺序约定:「最新在最下面,加新记录请追加到文件末尾,不要插到开头」
- 顺带调整:原先挂在文件**最末尾**的「### 还没写进 feature_list 的待办」
  (常驻待办、不属于任何一轮)移到「## 会话记录」**之前**——正序下留在末尾
  会看起来像最新那轮会话的内容
- validate-harness.mjs 新增**正序校验**(会话编号必须升序),并实测能抓到乱序:
  故意把最新一条插到开头 → 立刻报「Session 035 之后跟了 Session 000」

重排安全:逐块 md5 比对重排前后 —— 会话块 35 → 35,无丢失、无多出,
只有 Session 000 变化(它末尾原本挂着待办小节、被摘出,属预期)。

验证:validate-harness 通过(exit=0,含新校验);npm run build 通过。

Co-Authored-By: Claude Code <noreply@anthropic.com>
gongtianxiao 3 dni temu
rodzic
commit
c9b97b36a5
2 zmienionych plików z 567 dodań i 782 usunięć
  1. 549 781
      harness/progress.md
  2. 18 1
      harness/tools/validate-harness.mjs

Plik diff jest za duży
+ 549 - 781
harness/progress.md


+ 18 - 1
harness/tools/validate-harness.mjs

@@ -107,18 +107,35 @@ try {
   bad(`feature_list.json 无法解析:${err.message}`);
 }
 
-// ── 4. progress.md 里的会话编号不重复 ──────────────────────────────────
+// ── 4. progress.md 里的会话编号不重复、且按时间正序(旧 → 新)──────────
 try {
   const text = readFileSync(join(HARNESS, 'progress.md'), 'utf8');
   const seen = new Map();
+  const order = [];
   for (const m of text.matchAll(/^## Session (\d+)/gm)) {
     const n = Number(m[1]);
     seen.set(n, (seen.get(n) || 0) + 1);
+    order.push(n);
   }
   for (const [n, count] of seen) {
     if (count > 1) bad(`progress.md 里 Session ${String(n).padStart(3, '0')} 出现了 ${count} 次`);
   }
   if (!seen.size) warn('progress.md 里没有任何 Session 记录');
+
+  // 顺序:必须是升序(最新在最下面,与根 README 的日期节一致)。
+  // 这条被违反过 —— 一度是倒序(新的在最上),用户指出后才改回来。
+  const outOfOrder = [];
+  for (let i = 1; i < order.length; i++) {
+    if (order[i] < order[i - 1]) {
+      outOfOrder.push(`Session ${String(order[i - 1]).padStart(3, '0')} 之后跟了 Session ${String(order[i]).padStart(3, '0')}`);
+    }
+  }
+  if (outOfOrder.length) {
+    bad(
+      `progress.md 的会话记录不是正序(旧 → 新,最新在最下面):${outOfOrder.slice(0, 3).join(';')}` +
+        `${outOfOrder.length > 3 ? ` 等 ${outOfOrder.length} 处` : ''}`
+    );
+  }
 } catch (err) {
   bad(`progress.md 读取失败:${err.message}`);
 }

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików