--- title: Checkpoint 2026-08-17 02:05:37 UTC [8cfb657a21] type: checkpoint permalink: main/projects/d5a7f581-c442-4554-87b9-ee723b8b0258/checkpoint-2026-08-17-02-05-37-utc-8cfb657a21 stable_id: 6c4cbc6d-a59b-4128-9d6a-cb9652cff00e scope: project project_id: d5a7f581-c442-4554-87b9-ee723b8b0258 memory_type: checkpoint status: active revision: 1 restored_from_commit: 6a6a895eafcca6052e81a14fca103a42635dd1c2 created_at: '2026-09-23T15:08:41.349780+00:00' updated_at: '2026-09-23T15:08:41.349883+00:00' tags: - submodule - plugins - refactor --- # 子模块迁移到 plugins/ 目录 ## 完成内容 - CapacityReport、InterferenceETL 两个 git 子模块从仓库根迁至 plugins/ 下(用户新建的插件目录),提交 2837fd6(main,R100 重命名,子模块 commit 指针不变:CapacityReport 10b8403、InterferenceETL 67f34b5)。 - InterferenceETL 用 git mv 直接成功;CapacityReport 因 Cursor IDE 持有其内嵌 .git 的目录句柄与 pack 文件映射导致 rename 被锁,采用“被锁对象移出树→整树 rename→移回”手法完成(经验已存:「坑:Windows 目录改名被句柄锁死的破解法」),并手动补 .gitmodules path / git rm --cached / git add / submodule sync。 - dev.py 的 CAPA_DIR 改为 plugins/CapacityReport(py_compile 通过,venv 完好)。 - 验证:git submodule status 正常、两子模块工作区干净、HEAD 无变化;临时诊断工具 handle64.exe 已删。 - MemRelay 记忆同步:fact「子模块」升 rev2(plugins 路径 + 内嵌/absorbed 差异),rule「工作流程」升 rev3(子模块只读记忆文件路径更新),新增 Windows 句柄锁破解经验。 ## 给下个会话 - 未推送(默认只提交);若用户要推送,本次只改了父仓(子模块指针未变),无需推子模块分支。 - 线上部署不受影响(Metrix 镜像不含子模块;线上 CapacityReport 容器独立部署)。无进行中任务。