---
name: boardwise-draw
description: boardwise 绘制线专项 SOP：原理图绘制（PresentationSpec、功能分岛/合岛、布局布线、旗标与文字）的硬裁决规则——语义归属优先、成对支路一致性、机器闸与视觉闸互不替代、修复优先级与 agent/解释器责任边界。当用户或任务要求画原理图、写/改 PresentationSpec、决定功能岛划分、跑 draw compile/plan/apply/lint、把候选画回编辑器，或审查一张「机器全绿但读起来不像工程师画的」图时加载。它是 boardwise 总 SOP 的专项扩展，通用真机纪律与交付三关仍以 boardwise 为准。
whenToUse: 提到原理图绘制、画图/落图、PresentationSpec、功能岛/分岛/合岛、布局布线、旗标/文字避让、draw compile / draw plan / draw apply / draw lint、画回编辑器、视觉自审，或机器闸全过但图读不懂时
---

# boardwise-draw（绘制线专项 SOP）

> **身份**：本文件是 boardwise 总 SOP 的**绘制线专项扩展**，不是第二套通用 SOP。
> R1–R3、真机白名单与禁地、交付三关、git 与删除纪律、子代理纪律**全部继承**总 SOP：
> `.kimi-code/skills/boardwise/SKILL.md`（`.agents/skills/boardwise/SKILL.md` 是它的
> 逐字节同步副本）。两处冲突时，通用纪律以总 SOP 为准，绘制裁决以本文件为准。
> **命令手册**：`docs/draw.md`；**样式规格**：`docs/schematic-style-spec.md`
> （S-01…S-21，视觉自审逐条对照）；**三种结果记账**（`automatic` / `reference-replay` /
> `agent-adjusted`）的原则见 `tasks/543_semantic_layout.md` §1，本文不复述。
> **派单入口**：`tasks/draw-line.md`。本文只写裁决规则，不复制命令手册与样式表。

## 0. 分工与责任边界（先划清，再谈图）

- **Agent 决定语义**：功能分岛/合岛、核心器件（`core`）、主信号流与阅读方向，写进
  PresentationSpec。
- **解释器只消费意图**：按规格做确定性布局布线、文字/旗标避让、机器校验；
  **不自动语义分岛**，也不猜没有写出来的几何关系。
- 现有合同里能表达的关系按 `docs/draw.md` 当前口径使用（`modules[].parts` / `role` /
  `core` / `branchOrder` / `modules[].attach`、`flow`、`islands`、`serviceLayout` 等）；
  **没实现的约束不许说成「已有」**——缺能力就派单补通用约束。
- **责任**：Agent 对错误的语义输入和视觉放行负责，不能把锅推给解释器；解释器对未表达的
  约束不能猜语义，Agent 必须补显式规格，或派单修解释器的通用能力。
- 一句话：**图读不懂，先查语义与约束，再查算法。**

## 1. 语义归属优先

功能岛按**电路功能与阅读关系**划分。**不许为了绕开编译器位姿、碰撞、布线或页框困难，
拆散本应属于同一功能组的器件。** 局部算法受阻是算法问题，不是改变语义分岛的理由；
该修的是解释器能力或显式约束，不是把电路拆成算法好摆的样子。

## 2. 拆岛/合岛前必须写清三件事

提交任何分岛/合岛改动前，规格或候选说明里必须有一句：

1. **功能理由**：这组器件在电路上是什么功能、为什么同属一组；
2. **空间/信号关系**：与宿主岛的位置关系，以及跨岛的信号边界；
3. **预期图形结果**：读者应该看到什么（成对并列、同一行、旗标分布、桩长节距）。

只写「这样编译能过 / 某个约束能绕开 / 这样排得下」= **禁止提交该规格**。
附属支路（上下拉、去耦、钳位、检测脚）优先留在宿主岛；必须分开时要有显式 `attach`
或等价关系，**不许留成无约束孤岛**。

## 3. 成对与同类支路默认一致

成对/同类支路（CC1/CC2、上下拉、对称滤波、双通道、同一引脚的重复去耦等）默认：

- 同向、对齐、等节距/等桩长；
- 标签阅读方向一致，标签贴着自己的引脚；
- GND/电源处理一致（同侧、同型旗标）。
- 信号型成对二端支路（例如 CC 下拉）在宿主连接为水平时默认横向，shared pin 朝宿主；
  供电去耦保持其功能支路的阅读方向，不得借“统一”把所有二端件一律旋转。
- 同一器件上的一对 D+/D− 必须等桩长；A/B 镜像组可以采用不同扇出深度，但不得让
  对内一长一短。避让应先成对联合选档，再分别验碰撞，不得逐脚选完才接受偶然差异。

需要不对称时，必须有电路或可读性理由并写进规格；**不允许由局部搜索偶然决定**。
边界：这里讲的是**原理图阅读一致性**，不是 PCB 差分等长/阻抗规则，不要错误推广。

## 4. 禁止结构性问题的局部化妆

竖排文字、无意义拐线、旗标绕合、成对支路姿态不一致——**先回溯分岛、模块关系、
支路约束**：

- 不许只旋转文字、拉长/缩短桩、挪坐标把根因盖住；
- agent 手动微调是合法兜底，但必须走受守卫接口（plan/apply、ATTR 位姿/可见性），
  记 `agent-adjusted`，保存调整前后证据，并重跑三关；不能冒称 `automatic`，也不能
  用它关闭解释器的能力缺口；
- 一次成功的微调不构成通用能力：同类问题第二次出现就派单补通用约束。

## 5. 机器闸与视觉闸不可互相替代

- lint/DRC/逐脚连通全过，只证明相应的机器条件，**不证明「像一个工程师画的」**。
- 视觉检查必须逐岛回答四问：① 这是什么功能、归属哪个岛；② 同类/成对支路是否一致；
  ③ 有没有多余拐点、绕线、跨网穿越；④ 读写方向与标签方向是否一致。
- 任一问答不上来 → **候选判废**，不落画布、不端给用户；不许写「机器全绿所以可交付」。
- 判废不删证据：候选、渲染与读数留在 evidence，写清判废理由。

## 5A. 可见连接与旗标聚簇（岳复审补充）

- **每条不连续导线都要有可见去向**：名字必须贴着自己的载体；同名但不连续的导线各有
  名字，不许为了全模块去重而让一段长线变成无解释裸桩。隐藏重复名只处理重复显示，
  不能删除读者理解连接所需的信息。网表连通、`valueVisible=false` 和 lint 通过都不能
  证明图面已经接上；文字盒与线端的固定容差也不能给明显脱线开脱。
- **地/电源旗使用同一策略**：先按功能支路与阅读关系决定合并与否，再比较终点路径；
  成对但独立的支路默认各自本地旗，不得强制共享。power 高扇出逐脚放旗、gnd 按坐标聚簇
  的旧分歧不是合法视觉裁决。
- **并联支路两端同类判定**：同一宿主、两端网络分别相同的并联支路（例如同组并联去耦），
  其共同回流端可以进入共簇候选，和共同供电端一样过同一距离与视觉闸；不得把
  `other_net` 一律写死成独立旗。信号端不同的独立支路（例如 CC1/CC2 各自下拉）仍各自
  本地旗，不得仅因返回网相同而共享。
- **聚簇距离必须是导线终点的合法绕行距离**：从两条支路各自准备挂旗的导线终点求最短
  合法正交路径，绕开器件、文字、旗标、其他导线和禁入区，累计各段长度；不可达记 `∞`，
  不得共簇。禁止用焊盘欧氏距离，也禁止用两根线上任意点的最近距离。A–B 近、B–C 近
  不构成 A/B/C 共簇的理由。
- 距离只决定能否候选共簇，最终还要过语义与视觉闸；分开后的同名旗之间不画线。

## 6. 修复优先级

1. **错误语义分岛 / 缺失模块关系** → 改规格与关系（先修输入）；
2. **成对支路偶然不一致** → 补解释器的通用约束（派单），并加回归用例；
3. **纯局部小瑕疵**（一处桩长、一处避让） → agent 受控微调，记账 `agent-adjusted`。

禁止用手改一堆坐标代替通用能力，禁止每次为算法方便重新分岛。

## 7. 分岛前 / 视觉验收清单

**分岛前：**

- [ ] 每个岛能用一句话说出功能，名称与电路对应；
- [ ] 没有器件因为「编译/布线/页框好过」被搬离它的功能组；
- [ ] 跨岛表达（信号边界、附属关系）已在规格里显式写出；
- [ ] 成对/同类支路的预期姿态已写进「预期图形结果」。

**视觉验收（逐岛）：**

- [ ] 功能归属说得清，读图顺序与主信号流一致；
- [ ] 成对支路同向、对齐、等节距/等桩长、标签方向一致；
- [ ] 无多余拐点、无跨网穿越、无旗标绕合；
- [ ] 地/电源用旗标（可汇聚就近引脚，但不拉全板母线）；
- [ ] 标题栏禁地内无内容；机器读数（lint、逐脚）单独列，不当视觉结论。

**反例（只说明规则，不写页面流水账）**：为解决 USB-C 连接器翻转后 D+/D− 标签方向，
把两只 CC 下拉电阻从 USB 功能组拆成独立岛。拆后失去宿主与成对约束，解释器把两支路
自由摆放：一支竖桩竖字、一支横桩，GND 上端绕合。`draw lint` 0E/0W/0I、逐脚 58/58
全通，图仍然不合格——**机器全绿不改变判废结论**。正确做法：留在 USB 功能组内，
或建立显式附着与成对约束后再重画。

## 8. 命令面与交付口径

- 链：`boardwise draw propose`（意图合同 → PresentationSpec 草稿）→
  `boardwise draw compile`（离线候选，`ok=True` 才过编译闸）→
  `boardwise draw plan`（候选 → ChangePlan）→ `boardwise draw apply`
  （守卫 → 落图 → 回读 → 保存 → 出图）；画完一页先跑
  `boardwise draw lint --page …` 再谈交付。
- 操作细节（符号库实测工序、apply 执行序、支路顺序三来源、旗标画法）全在
  `docs/draw.md`；`--profiles` 必须先在真机上量过，不许拿没量过的 profile 落图。
- 交付时必须把三关分开报：编译闸读数、逐脚连通读数、视觉自审的逐岛结论；
  缺哪关就说缺哪关，不合并成一句「通过」。
