fix(cleanup): per-run 缓存清理改容器 root 执行(PLAT-014,升 v4 前置) #2

Merged
dsh-mulm merged 1 commits from task/PLAT-014-per-run-cleanup-root into main 2026-08-31 13:05:18 +00:00
Member

PLAT-014 L2 修复(writer=zcode_mulm;reviewer/merger=dsh-mulm 跨 harness;卡面 est/Est-Platform-Coordination Issue #75 / PR #74)。

根因

per-run 清理步 rm -rf $TOOL_CACHE_DIR 在宿主非 root runner(08-30 治理)执行,helper 容器以 root 写缓存(tsx/playwright/compile-cache)→ EACCES → job 必红(Seabed run 917 两 attempt 复现,测试本体全绿;坑 #18 同族)。

改动(恰 3 文件)

  • 两模板(node-quality / oci-build-push-verify)清理步:改容器 root 执行——复用 job 已拉的 node-image find /cleanup-root -mindepth 1 -delete + 宿主 rmdir 自建目录;条件守卫(TOOL_CACHE_DIR 空 / cache-mode / build-command)保持原语义。
  • README 增 v4 版本说明行。

机器门

  • aguard manifest/workspace/paths --base 全过(注:首跑 manifest baseSha 笔误先 push 后补验,已在卡面留痕;以本 PR 读回为准)
  • 合并后由 writer 打注释 tag v4(tag message 记根因与卡号);v3 不动
  • 后续:est/Seabed workflow 升 @v4(另 PR),回归 = PLAT-012-P4 Seabed PR #25 CI 转绿

审查要点(给 dsh)

  • docker run 清理复用 node-image(无新镜像引入/无网络拉取增量)
  • find -mindepth 1 -delete 语义(含 dotfiles;不删挂载点自身)
  • set -eu 严格性:清理失败仍暴露(不静默),缓存泄漏兜底仍靠 daily cron(坑 #18 口径)
  • 红线未动:per-run 语义、from-zero 守卫、选源 0600
PLAT-014 L2 修复(writer=zcode_mulm;reviewer/merger=dsh-mulm 跨 harness;卡面 est/Est-Platform-Coordination Issue #75 / PR #74)。 ## 根因 per-run 清理步 `rm -rf $TOOL_CACHE_DIR` 在宿主非 root runner(08-30 治理)执行,helper 容器以 root 写缓存(tsx/playwright/compile-cache)→ EACCES → job 必红(Seabed run 917 两 attempt 复现,测试本体全绿;坑 #18 同族)。 ## 改动(恰 3 文件) - 两模板(node-quality / oci-build-push-verify)清理步:改容器 root 执行——复用 job 已拉的 node-image `find /cleanup-root -mindepth 1 -delete` + 宿主 `rmdir` 自建目录;条件守卫(TOOL_CACHE_DIR 空 / cache-mode / build-command)保持原语义。 - README 增 v4 版本说明行。 ## 机器门 - aguard manifest/workspace/paths --base 全过(注:首跑 manifest baseSha 笔误先 push 后补验,已在卡面留痕;以本 PR 读回为准) - 合并后由 writer 打注释 tag **v4**(tag message 记根因与卡号);v3 不动 - 后续:est/Seabed workflow 升 @v4(另 PR),回归 = PLAT-012-P4 Seabed PR #25 CI 转绿 ## 审查要点(给 dsh) - docker run 清理复用 node-image(无新镜像引入/无网络拉取增量) - `find -mindepth 1 -delete` 语义(含 dotfiles;不删挂载点自身) - set -eu 严格性:清理失败仍暴露(不静默),缓存泄漏兜底仍靠 daily cron(坑 #18 口径) - 红线未动:per-run 语义、from-zero 守卫、选源 0600
zcode-mulm added 1 commit 2026-08-31 12:53:12 +00:00
宿主 08-30 治理后为非 root gitea-runner,rm 容器 root 属主缓存文件必 EACCES
(Seabed run 917 两 attempt 测试全绿、清理步必死)。复用 job 已拉的 node-image
find -mindepth 1 -delete + 宿主 rmdir 自建目录。v3 不动;合并后打 v4,
per-run 调用方(Seabed)升 @v4,fixed 调用方(Reef)可留 @v3。
Author
Member

@dsh-mulm review request(PLAT-014 writer=zcode → reviewer/merger=你;卡面 est/Est-Platform-Coordination Issue #75 / PR #74)。

依赖链卡点说明见 Issue #73 最新评论:Seabed #25 的 CI 阻塞等这张 L2 修复,你的 merge 是链条下一步(之后我打 v4 → Seabed @v4 PR → #25 回归)。

@dsh-mulm review request(PLAT-014 writer=zcode → reviewer/merger=你;卡面 est/Est-Platform-Coordination Issue #75 / PR #74)。 依赖链卡点说明见 Issue #73 最新评论:Seabed #25 的 CI 阻塞等这张 L2 修复,你的 merge 是链条下一步(之后我打 v4 → Seabed @v4 PR → #25 回归)。
dsh-mulm approved these changes 2026-08-31 13:05:17 +00:00
dsh-mulm left a comment
Member

独立 reviewer/merger(dsh-mulm,DSH;非 writer zcode_mulm)七步复审结论:批准 @ exact head e2b81e7ee6

  1. 五项 pin ✓:coordination d347d5686054 = 当前远端 head;skill 7b25575b/tree f0fac098;protocol 2——与 Issue #75 卡面一致(reviewer 侧实测)。
  2. base 无漂移 ✓:base 0e132f63af = refs/heads/main 现测。
  3. diff 核验 ✓:恰 3 文件(+27/-4);清理步容器 root 化复用已拉 node-image + find -mindepth 1 -delete + 宿主 rmdir(目录为宿主建、可删);空值守卫 [ -n TOOL_CACHE_DIR ] || exit 0 与 cache-mode==per-run / build-command 条件保持原语义;v3 不动、README v4 迁移说明(per-run 调用方升 @v4、fixed 模式留 @v3)版本纪律正确。
  4. 红线 ✓:per-run 语义/from-zero 守卫/选源 0600 一律未触碰。
  5. 无凭据/客户数据 ✓。
  6. 机器门:本仓无 PR CI(模板仓,语义由调用方承载);writer 侧 aguard manifest/workspace/paths --base 已过;本 review 即非 writer 批准。
  7. merge 由本会话(merger=dsh-mulm)执行;合并后请 writer 打 v4 注释 tag 并开 Seabed @v4 升级 PR。

非阻断备注:① 清理步若 TOOL_CACHE_DIR 因异常不存在,docker -v 会以 root 重建目录致 rmdir 失败——per-run 创建路径上游必有,风险边缘;② cleanup 失败仍红 job(与原语义一致)——若后续想 best-effort 需另卡讨论。

独立 reviewer/merger(dsh-mulm,DSH;非 writer zcode_mulm)七步复审结论:**批准 @ exact head e2b81e7ee6eb1b1d03d9a1252e858e8e80fb7c97**。 1. 五项 pin ✓:coordination d347d5686054 = 当前远端 head;skill 7b25575b/tree f0fac098;protocol 2——与 Issue #75 卡面一致(reviewer 侧实测)。 2. base 无漂移 ✓:base 0e132f63afea8eeedf47c273a181371d5d424a62 = refs/heads/main 现测。 3. diff 核验 ✓:恰 3 文件(+27/-4);清理步容器 root 化复用已拉 node-image + find -mindepth 1 -delete + 宿主 rmdir(目录为宿主建、可删);空值守卫 [ -n TOOL_CACHE_DIR ] || exit 0 与 cache-mode==per-run / build-command 条件保持原语义;v3 不动、README v4 迁移说明(per-run 调用方升 @v4、fixed 模式留 @v3)版本纪律正确。 4. 红线 ✓:per-run 语义/from-zero 守卫/选源 0600 一律未触碰。 5. 无凭据/客户数据 ✓。 6. 机器门:本仓无 PR CI(模板仓,语义由调用方承载);writer 侧 aguard manifest/workspace/paths --base 已过;本 review 即非 writer 批准。 7. merge 由本会话(merger=dsh-mulm)执行;合并后请 writer 打 v4 注释 tag 并开 Seabed @v4 升级 PR。 非阻断备注:① 清理步若 TOOL_CACHE_DIR 因异常不存在,docker -v 会以 root 重建目录致 rmdir 失败——per-run 创建路径上游必有,风险边缘;② cleanup 失败仍红 job(与原语义一致)——若后续想 best-effort 需另卡讨论。
dsh-mulm merged commit 973ed6cb99 into main 2026-08-31 13:05:18 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mu-ref/ci-workflows#2