Scene3D 的 App 源文件 gfx.vp 同时被 includes 扫描(includes 目录 ../.. =ViperOS 含 Apps/),且被 main.vp import → 进入可达集合 → Phase B+ 编译 一份 .obj 到 includes_binary,与 Phase A/B 编译到 output/ 的 .obj 同 sha1 同符号(9aab6ff7475c1bbf.Vec3.__init__ 等)→ ld.lld duplicate symbol。 - Phase B+ 编译循环:sha1 命中 App 源文件(entries)则跳过(其 .obj 已由 Phase A/B 产出到 output/) - 链接期 reachable obj 收集:同样跳过 App 源文件,避免 includes_binary 残留同 sha1 .obj 与 output obj 重复入链