From f8fe14d124202aacb9400cc01ca0f15d112ca26a Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Tue, 15 Sep 2026 06:47:24 +0800 Subject: [PATCH] =?UTF-8?q?docs(debts):=20=E7=99=BB=E8=AE=B0=20pi-bridge-a?= =?UTF-8?q?dopt-cwd-mismatch=20=E2=80=94=E2=80=94=20=E6=B2=99=E7=AE=B1=20r?= =?UTF-8?q?w=20=E4=B8=8E=20worker=20cwd=20=E7=9A=84=E7=AC=AC=E4=B8=89?= =?UTF-8?q?=E4=B8=AA=E6=9D=A5=E6=BA=90=EF=BC=88=E6=8E=A5=E7=AE=A1=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=EF=BC=89=E6=9C=AA=E5=AF=B9=E9=BD=90=EF=BC=8C=E4=B8=94?= =?UTF-8?q?=E8=BF=99=E7=B1=BB=E9=94=99=E4=BD=8D=E6=B2=A1=E6=9C=89=E4=BB=BB?= =?UTF-8?q?=E4=BD=95=E4=B8=80=E5=B1=82=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/DEBTS.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/DEBTS.json b/docs/DEBTS.json index 1c9976f..5cc825f 100644 --- a/docs/DEBTS.json +++ b/docs/DEBTS.json @@ -92,6 +92,13 @@ "due": "下一次因空间问题失败时;或有人愿意补一行 df 时", "where": "deploy/lib/env-defaults.sh ②b 只判了 $TMPDIR,没判 $PREFIX 所在的文件系统" }, + { + "id": "pi-bridge-adopt-cwd-mismatch", + "count": 1, + "kind": "沙箱 rw 与 worker 实际 cwd 的第三个来源未对齐(同类已修两处,剩接管路径)", + "due": "下一次动 pi 桥的会话装载 / `session-scan.mjs` 时;或有人愿意把「这一轮用哪个 cwd」完全收成父进程一处决定时", + "where": "`plugins/pi-mail-bridge/src/worker.mjs` 的**接管会话**分支:worker 用会话文件 header 里的 `info.cwd`(`resolveWorkspaceCwd(info.cwd || data.to_workspace, …)`),而父进程(`src/pool.mjs` → `src/turn-cwd.mjs`)只能从 `state` 里拿 `{sessionFile, cwd}`,**读不到 header** ⇒ 接管的首回合 rw 仍可能不含 worker 真正要写的目录。父进程要拿 header 得用 `src/session-scan.mjs`,但 `readHeader` 未导出、整表 `scan()` 在父进程里代价大(worker 里实测 1431ms / 堆瞬时 240MB,见 worker.mjs 里那段注释)。★ 这类错位的**特征是没有提示**:EACCES 落在「界内」,读日志的人会以为沙箱装错了(不像 `ask` 还有一次问)。修法方向:把「这次用哪个 cwd」收成父进程一处决定(它已有 `state.sessionFile`,header 也可读),worker 只消费、不再自己推导 —— 即 `src/turn-cwd.mjs` 头注释里写的「三来源变一来源」。" + }, { "id": "deploy-interrupt-trap-other-scripts", "count": 1,