Why: establish the authorized task workspace and its initial baseline.
Evidence: preserved precheck receipt in .task/feature-card-merge-squash-detect.md; R0=d23fb4363dcc0a206e71e47f9cd23a644c7e1c70.
Impact: task metadata only; the feature workspace starts at d23fb4363d.
Refs: .task/feature-card-merge-squash-detect.md
Why: card_merge only recognized "Merge ... from <branch> into main"
merge commits, so a PR landed as a squash (real case: #457) left its
task card in .task/ forever; task-close reported nothing to close and
precheck showed no debt. Closing required a manual backfill (PR #541).
Evidence: card_merge now returns sha|subject|pr and falls back to a
Gitea API lookup by head ref or label (deleted branches keep the
original name only in label), gated by merge_commit_sha ancestry in
origin/main; precheck [cards] reuses card_merge so both surfaces agree.
Live probe against production Gitea returns 226a4af15791|Reset
per-service runtime state in svc.sh env_config|457 for
feature/svc-pidcheck-leak; stub-server tests cover squash landing,
decoy skip and the not-on-main refusal; full governance suite follows
in-card evidence.
Impact: scripts/task.sh close and precheck detect squash-merged cards
when GITEA_TOKEN is set (merge-commit path unchanged without token);
tests/test_task.py adds two regressions; no protocol change for
existing merge-commit closures beyond the appended pr field.
Refs: card-merge-misses-squash-merges (memory); PR #541 manual closure.
Why: include the current integration baseline before verification.
Evidence: fetched origin/main=11aa76a3bc1c5047791f9a2de154e451634b6567.
Impact: integrate upstream changes without rewriting task history.
Refs: task-sync
Why: include the current integration baseline before verification.
Evidence: fetched origin/main=7e9ebdea5055a63c713ccc0fb1f938ffe35a6b9d.
Impact: integrate upstream changes without rewriting task history.
Refs: task-sync
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
修复 task-close/precheck 对 squash 落地 PR 的任务卡漏检(真实案例 #457,经 PR #541 手动闭合)。