Add task-card autoclose wiring: close subcommand, post-merge hook, gate reports

Why: 11 merged branches had left their task cards open (bookkeeping debt found on 2026-09-30); closure was manual and never triggered, so card status rotted after each merge.
Evidence: dogfood run of `task.sh close --fold` closed and archived the 11 cards (previous commit); temp-repo matrix 33/33 PASS covering detection, pending-branch idempotence, dirty/no-fold refusals, post-merge auto-close on merge-type pulls, worktree guard, and the full lifecycle (closure PR merge archives cards on main).
Impact: scripts/task.sh (+close, precheck [cards] report, finish-tail trigger), scripts/hooks/post-merge (new), Makefile (+task-close target, setup chmod), AGENTS.md rule; archive fixes correct PR links missed by the first dogfood run; no module or gitlink change.
Refs: task card feature/card-autoclose-r1
This commit is contained in:
2026-09-30 07:12:54 +00:00
parent 6f6b670e55
commit beaefb7549
15 changed files with 185 additions and 26 deletions
+15
View File
@@ -0,0 +1,15 @@
#!/usr/bin/env bash
# 本地钩子(post-merge):merge 型 pull/merge 落地后自动闭合已合入任务卡(ff-only 不触发
# 本钩子——由 task-finish 收尾与 precheck [cards] 报告兜底)。
# 触发条件收紧到"主检出 + 集成分支 main"——任务 worktree 里 task-sync 的 merge 不触发,
# 防止把卡片闭合混进任务分支现场。失败只警告,绝不阻断 pull。
# 注意:task.sh close 在主检出会另建 feature/card-close-* 分支提交(集成分支不直推),
# 结束后切回 main;PR 由所有者合入。
common=$(git rev-parse --git-common-dir) && common=$(cd "$common" 2>/dev/null && pwd) || exit 0
mainrepo=$(dirname "$common")
[ "$mainrepo" = "$PWD" ] || exit 0
[ "$(git rev-parse --abbrev-ref HEAD)" = "main" ] || exit 0
[ -f "$mainrepo/scripts/task.sh" ] || exit 0
bash "$mainrepo/scripts/task.sh" close \
|| echo "[warn] post-merge 卡片自动闭合失败——在主检出手动运行 make task-close" >&2
exit 0