Files
STM32F4-Base/.dsh/skills/task-worktree/scripts
wandering1 1576d7b709 fix(task-worktree): 联接列改三态点名——半联树不再被说成已联,adopt 没补齐不许报就绪
同一个谎有两处,根因是「联没联上」有两套判定:列表只取样 JUNCTION_SPECS 首项
(.venv),而 adopt 填两条。于是「有 .venv、缺 simulator/SDL2」的半联树被报成已联,
adopt 遇主线缺 SDL2 走 skip、联接失败走 warn,回来照样打「现在可以跑」——宣布就绪。

改法是把判定收成一处:
- 新增 junction_states() 三态(link / real 实体内容 / absent 真缺)与 junction_label(),
  plugin_trees() 改读三态;adopt_junctions() 也改读同一函数,消除两处逻辑分叉。
- 列表按缺的那一样分别说后果:缺 .venv 会**静默**落到机器级解释器(无 fontTools,
  即 generated-fresh 假红的老根因);缺 simulator/SDL2 是模拟器当场报错(CMakeLists.txt
  的 SDL2_DIR 是裸 set,没有环境变量逃生口)。实体目录单列齐(实体SDL2),不算共享。
- adopt 补完复算一次,仍缺就打「还不能算就绪」,不再打「现在可以跑」;锁归属与
  锁命令照常打印。
- SKILL.md 同步四处措辞,并把「adopt 之前跑不了 Python」这条不准确的说法换成上面
  两种真实失败方式(一条是静默错解释器、一条是响亮报错)。

验证:scratch 仓 16 条断言全 PASS(全联 / 只摘 SDL2 那条 → 缺 SDL2 且不得再出现已联 /
实体目录不被覆盖 / unadopt 只摘联接 / 主线缺 SDL2 时 skip + 不报就绪 / 已联的 .venv
不误报 / 两样都缺 → 缺 .venv+SDL2),同一半联态上新旧对照 = 缺 SDL2 vs 已联。
py_compile 通过;doc-links --all --sections-strict 与编号门禁绿;两文件无 BOM、无
U+FFFD、纯 LF、无行尾空格。改动只落在 .dsh/,不进体积门禁指纹面,也不需要 @build。
2026-10-29 08:18:49 +08:00
..