From df23fcab5624e506e53bcd7186ad86d9b243c9f5 Mon Sep 17 00:00:00 2001 From: weichen Date: Mon, 5 Oct 2026 14:54:42 +0000 Subject: [PATCH] Record the finish-guard-fixes task card --- .task/feature-finish-guard-fixes.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.task/feature-finish-guard-fixes.md b/.task/feature-finish-guard-fixes.md index ef4a9369..b6b06787 100644 --- a/.task/feature-finish-guard-fixes.md +++ b/.task/feature-finish-guard-fixes.md @@ -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 ` 把**远端跟踪引用**(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 ` 加 `git stash list` 检查 + HEAD reflog 逐条 `--not ` 判定;refs/remotes 一律不算——远端有副本即「已保全」。 +- **非目标**:不改 verify/before-sync 等其他模式的既有校验;不引入新依赖。 ## 同步记录