Skip to content

Commit fd922ca

Browse files
committed
docs(plans): 生成器并列排序与自审项三处修正
- writeTable 排序补路径断开:Map 迭代序来自 readdirSync,跨平台不一致, 只按行数排会让 --write 在 Windows/Linux 产出不同字节 - Task 5 自审第 5 项自相矛盾:脚本扫描域不含 scripts/,量不到自己;改为直接量 - 显式登记扫描域窄化:口径域只有 app/src + app/src-tauri/src 的 .ts/.tsx/.rs, scripts/ 与 docs/ 不在内(AGENTS.md 字面是全仓要求,这是有意窄化)
1 parent 0bbe1fa commit fd922ca

1 file changed

Lines changed: 7 additions & 3 deletions

File tree

‎docs/superpowers/plans/2026-09-11-frontend-redesign-batch0c1-line-limit-governance.md‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -415,8 +415,11 @@ function parseHistory() {
415415
function writeTable() {
416416
const measured = scanTree();
417417
const reasons = parseReasons();
418-
const over = [...measured.entries()].filter(([, n]) => n > HARD_LIMIT).sort((a, b) => b[1] - a[1]);
419-
const band = [...measured.entries()].filter(([, n]) => n > SOFT_LIMIT && n <= HARD_LIMIT).sort((a, b) => b[1] - a[1]);
418+
// 并列时必须按路径断开:`scanTree` 的 Map 迭代序来自 readdirSync,**跨平台不一致**
419+
// (Windows 与 Linux 的顺序可能不同)⇒ 只按行数排会让 `--write` 在不同平台产出不同字节。
420+
const byLinesDesc = (a, b) => b[1] - a[1] || a[0].localeCompare(b[0]);
421+
const over = [...measured.entries()].filter(([, n]) => n > HARD_LIMIT).sort(byLinesDesc);
422+
const band = [...measured.entries()].filter(([, n]) => n > SOFT_LIMIT && n <= HARD_LIMIT).sort(byLinesDesc);
420423
// 单元格净化:文本里的半角 `|` 会撑破 Markdown 表格,并让下次 `parseReasons` 误切列。
421424
// 换**全角** `|` 而不是 `\|` —— 转义写法在下次读取时会被再次转义,破坏 `--write` 的幂等性。
422425
const cell = (t, fallback) => {
@@ -656,7 +659,7 @@ git commit -m "docs(versions): 0-C1 行数红线验收与门槛更正"
656659
2. 四条不变式是否**各自**用变异探针证明过会失败?
657660
3. 登记表是否**只剩一条有效路径一行**(`parseTable` 的行数 == 去重后的路径数)?
658661
4. `>600` 是否仍是 **15**(本批不拆文件,数字不应变化)?
659-
5. 新增脚本自身是否 ≤300 行(用 `node scripts/line-limits.mjs` 自己量自己)?
662+
5. 新增脚本自身是否 ≤300 行?⚠️ **不能**用 `node scripts/line-limits.mjs` 自己量 —— 它的扫描域**只有** `app/src` 与 `app/src-tauri/src`,**不含 `scripts/`**(刻意的边界:`.mjs` 不在本批口径内,见「未做(登记)」)。请直接量:`[System.IO.File]::ReadAllLines('scripts/line-limits.mjs', [Text.Encoding]::UTF8).Count`。
660663
661664
---
662665
@@ -673,6 +676,7 @@ git commit -m "docs(versions): 0-C1 行数红线验收与门槛更正"
673676
- **15 个 >600 文件的拆分**:`0-C2`(`ClassroomPage.tsx` / `SessionDetailPanel.tsx` / `NoteListView.tsx` / `SessionListPanel.tsx` / `NotesPage.tsx`)与 `0-C3`(`lib.rs` / `types.rs` / `live_session_frame.rs` / `commands_ai_refine.rs` / `db_goals.rs` / `commands_goals.rs` / `ai_refine_task.rs` / `note_filter.rs` / `artifact_templates.rs` / `video_profile.rs`)。`0-C3` 含 `lib.rs`(AGENTS.md §10 需额外审查:Tauri command 注册边界)。
674677
- **`scripts/validate-all.mjs` 已失效**:它引用 `client/`、`server/ai-gateway` 等**本仓库不存在的目录**(重构前遗留),跑起来第一步即失败。并行审查曾建议把行数守卫挂进它 —— **该建议的前提不成立**(落点本身是坏的)。修它或删它属独立治理项。
675678
- **`REQ-201` 状态标注**、豁免表历史节的进一步精简:不属本批。
679+
- **扫描域不含 `scripts/` 与 `docs/`**:本批的口径域**只有** `app/src` + `app/src-tauri/src` 的 `.ts/.tsx/.rs`(868 个文件)。AGENTS.md §3 说"单文件 ≤300 行"字面上是**全仓**要求,故这是一处**有意的窄化**:`scripts/*.mjs`(现 62–238 行,均 ≤300)与 `docs/**` 未纳入登记表,也**不会**被守卫拦。若要扩域,须另立批次(并先把 `SOURCE_EXT` 与登记表节的措辞一起改)。
676680
677681
## 自审记录
678682

0 commit comments

Comments
 (0)