From 8b857428e3720716426cb6c0056e4cea60a08d57 Mon Sep 17 00:00:00 2001 From: Knowit Date: Wed, 29 Apr 2026 00:53:08 +0800 Subject: [PATCH] log: post-mortem of running --all on the other 4 Pro projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Captures the two new --all crash paths fixed in 61fd3ff (odd inner copper layers, duplicate BOARD titles) plus the Pro 2.x scope gap (Taishan + Liangshan are JSON-format, not EPRO2 streams, so our replay_project reads the bytes but doc_type stays None and _group_by_board returns no SCH/PCB groupings — needs a separate Pro 2.x writer). Status as of this commit: ESP-VoCat 6 boards + 220V power 7 boards = 13 project dirs ready for downstream corpus. X86 motherboard is the largest of the five (7374 docs, 1.9 GB RAM in flight) and still running. Co-Authored-By: Claude Opus 4.7 (1M context) --- log.md | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/log.md b/log.md index d9d75ca..e92e7e3 100644 --- a/log.md +++ b/log.md @@ -4,6 +4,57 @@ --- +## 2026-04-29 03:00 跑完 5 块 Pro 项目 export,发现并修两个 --all 崩溃路径 + +**Claude 会话** + +接 `3c00edf`。给下游同学打包:5 块 Wokwi pipeline 不吃的 Pro 项目(X86主板 / 220V电源 / ESP-VoCat / 泰山派 / 梁山派)跑 `--all` 一键 export。 + +### 实战结果 + +| 项目 | EPRO2 类型 | --all 结果 | 备注 | +|---|---|---|---| +| ESP-VoCat | Pro 3.x AES | ✅ 6 boards | 之前已验证 | +| 220V 电源 | Pro 3.x AES | ✅ **7 boards** | 修了两个 bug 之后 | +| X86 主板 | Pro 3.x AES | ⏳ 跑中 | 7374 docs / 1.9GB RAM;目前 5 boards 出来,CPU 板 PCB 还在写 | +| 泰山派 (RK3566) | **Pro 2.x JSON** | ❌ no BOARDs | 我们的 EPRO2 pipeline 不识别 Pro 2.x docType | +| 梁山派 | **Pro 2.x JSON** | ❌ no BOARDs | 同上 | + +### 220V 跑出来发现的两个崩溃路径 + +#### Bug A: KiCad 拒收奇数铜层数 + +``` +12:45:56 AM: Error: 3 is not a valid layer count in '...kicad_pcb', line 31 +``` + +220V 电源里的板子有 **1 个内层 SIGNAL** 用到(GND 一层),加 F.Cu+B.Cu 总共 3 层。KiCad 8 要求铜层数偶数(2/4/6/...)。修法:奇数时 pad 一个空的 In{N+1}.Cu,总层数凑偶。 + +#### Bug B: 同标题 BOARD 互覆盖 + +220V 项目里有**两块都叫 "显示板"** 的不同 BOARD(不同 uuid)。我之前的 `--all` 用 title 推 basename,两块争同一个目录,第二块写完就把第一块覆盖。修法:title 撞名时给所有撞名实例都加 BOARD uuid 前 8 位后缀(`显示板_52e8cc76` / `显示板_55d32906`);只一份的还是干净 basename。 + +### Pro 2.x 没拿下 + +泰山派 / 梁山派的 source 文件是**纯 JSON**(`.json`),不是 `.epro2` 二进制流。我们的 `replay_project` 读得了文件但 `doc_type=None`——head 里没 docType 字段,整个识别链路断掉,`_group_by_board` 拿不到 SCH/PCB 分组。 + +要补这 2 块得写**单独的 Pro 2.x → KiCad writer**(plaintext dataStr 解析跟 EPRO2 是两套不一样的对象模型;也许能跟 Std json 共用)。本轮范围外。 + +### 决策(Why) + +- **基板撞名一律加 uuid**:第一份保 clean basename 的方案有歧义性,"哪个是真的"不可靠。所有撞名一律带 uuid 后缀虽然多两个字符但绝对安全。 +- **不在 ESP-VoCat 上重跑验证奇数层 fix**:ESP-VoCat 的板要么 2 层(无 inner)要么 4 层(2 inner),不会触发奇数层路径,重跑没意义。 + +### 测试 + +71 → 73:`test_odd_inner_signal_count_padded_to_even_total` + `test_duplicate_board_titles_get_distinct_basenames`。 + +### 下游交付 + +ESP-VoCat 6 + 220V 7 = **13 个 board** 项目目录就绪,可以直接拷给下游同学的 corpus。X86 跑完后再加 5 个左右(已知是 ADL_S 平台 motherboard,含 CPU/PCH/USB/PCIe 多板)。 + +--- + ## 2026-04-29 02:30 KiCad 工程文件 + `--all` 一键导:双击 .kicad_pro 打开 GUI **Claude 会话**