Record the finish-guard-fixes task card

This commit is contained in:
2026-10-05 14:54:42 +00:00
parent eb140545a4
commit df23fcab56
+5 -3
View File
@@ -7,11 +7,13 @@
- 权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)= 4edec763fff1b8239e203dc9106f16a241ca343d
- 工作区:/home/weichen/projects/Agent-System-Dev-wt-feature-finish-guard-fixes(worktree);分支:feature/finish-guard-fixes
- 授权与交付终点:<本次允许的动作与终点;未授权事项写明>
- 授权与交付终点:会话目标令(2026-10-05,owner)「按阶段流程保持推进系统目标」;两处 finish 守卫误报修复 + 回归测试,PR 合入+worktree 清理为终点。
## 目标与非目标
## 目标与非目标(阶段一:目标确认;阶段二:方案)
<预期结果、受影响入口/模块/契约;明确不做什么。>
- **阶段目标**:修复 2026-10-05 两次实测踩到的 finish 守卫误报——① `common.rglob("*.lock")` 把 `.git/cursor/` 等 IDE 产物当 Git 锁(实测五天陈锁阻断回收,手工删除才通过);② 子仓 pinned-history 检查 `rev-list --all --reflog --not <pin>` 把**远端跟踪引用**(refs/remotes)也计入——pin 在 feature 顶端的子仓(backend/documents 等)因 origin/main 不在 pin 历史内而**永远无法 finish**(实测靠删远端引用+清 reflog 绕过,损害现场)。
- **方案**:① 锁扫描收窄到 Git 真实锁语义——`common/config.lock`、`common/index.lock`(主检出侧)、各 worktree gitdir 的 `index.lock/HEAD.lock`、`shallow.lock`、`MERGE_HEAD/CHERRY_PICK_HEAD/REVERT_HEAD/BISECT_LOG/rebase-merge/rebase-apply`(活动操作标记,沿用 check_operations 已有清单);排除 `.git/cursor/` 等一切非 Git 目录。② reachability 改为**仅本地分支 + stash + reflog(HEAD)**:`rev-list --branches --tags? 否——tags 属远端快照亦可漂` → 用 `--branches` + 显式 stash 引用 + `HEAD` reflog(`--reflog` 限定 HEAD:`rev-list --branches --reflog=HEAD? ` 实现取 `git rev-list --branches --not <pin>` 加 `git stash list` 检查 + HEAD reflog 逐条 `--not <pin>` 判定;refs/remotes 一律不算——远端有副本即「已保全」。
- **非目标**:不改 verify/before-sync 等其他模式的既有校验;不引入新依赖。
## 同步记录