From a5f0ca107d86bd7aa9329347ab1840a71c0c381b Mon Sep 17 00:00:00 2001 From: weichen Date: Mon, 5 Oct 2026 15:05:54 +0000 Subject: [PATCH] Only count remote-unreachable commits as local work in finish guard MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Why: 本地 main 停在 origin/main 顶端(克隆默认态)在 pin 为 feature 顶端时不在 pin 历史内,--branches 直判仍会误阻(本 worktree 自身收尾实测踩到)。 Evidence: 第五例回归(本地默认分支+克隆 reflog 不阻)全绿;五例套件+全套治理回归 GOVERNANCE-SUITE-OK;worktree 实际 finish 通过即端到端自证。 Impact: local_work_outside 候选提交先过 --not --remotes 过滤(远端可达即已保全); stash 仍恒算本地独有。 --- .task/feature-finish-guard-fixes.md | 38 +++++++++++++++++++++++++++++ scripts/check-worktree.py | 17 +++++++------ tests/test_task.py | 17 +++++++++++++ 3 files changed, 65 insertions(+), 7 deletions(-) diff --git a/.task/feature-finish-guard-fixes.md b/.task/feature-finish-guard-fixes.md index e9b624b0..0dfef4c7 100644 --- a/.task/feature-finish-guard-fixes.md +++ b/.task/feature-finish-guard-fixes.md @@ -184,3 +184,41 @@ "receipt_sha256": "802977ea11533d1e855dcc915a859653c64da69fdb74cd708a7d8b19a8fd6da3" } ``` + + +```json +{ + "schema": 1, + "source": "SELF", + "timestamp": "2026-10-05T15:05:30.878391+00:00", + "command": "PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s tests -p 'test_*.py' && echo GOVERNANCE-SUITE-OK", + "command_sha256": "fb6400ad104362bb0215a93402c20e94c337135854705717074ed83a568582ad", + "cwd": "/home/weichen/projects/Agent-System-Dev-wt-feature-finish-guard-fixes", + "common_dir": "/home/weichen/projects/Agent-System-Dev/.git", + "before": { + "head": "c62a410e5abd92564c40505d4e8896b398bfcd43", + "branch": "feature/finish-guard-fixes", + "target_branch": "main", + "target_head": "49f93ed0c590d84a54a05b6ed43c053e26f031f5", + "status": " M scripts/check-worktree.py\n M tests/test_task.py\n", + "tracked_diff_sha256": "5206e9a3efb912bf80167000b599ee83618cdd46385027c665b2ef2024fdae51", + "untracked": {}, + "submodules": " cc1ad7749816afe129f81bcf0732d0ca7c789d10 deps/agent-command (remotes/origin/feature/core-v0-1-gcc1ad77)\n ed2af3e6048928b1fd0ba6da1f9d0c1bafec82d4 deps/agent-command/deps/development-guidelines (remotes/origin/feature/delivery-mechanism-5-ged2af3e)\n 65aaebca1ea69ab7d48eda51d33ef1d4eea5a0bf deps/agent-intent (65aaebc)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-intent/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 deps/agent-intent/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-intent/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 deps/agent-intent/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-intent/deps/logging-system/deps/development-guidelines (26b562d)\n 3a110a728cf520cfbbbafc0c4c75f14bf78bec3f deps/agent-native (remotes/origin/feature/agent-harness-p1-27-g3a110a7)\n 65aaebca1ea69ab7d48eda51d33ef1d4eea5a0bf deps/agent-native/deps/agent-intent (65aaebc)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-native/deps/agent-intent/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 deps/agent-native/deps/agent-intent/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-native/deps/agent-intent/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 deps/agent-native/deps/agent-intent/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-native/deps/agent-intent/deps/logging-system/deps/development-guidelines (26b562d)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-native/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 deps/agent-native/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-native/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 deps/agent-native/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-native/deps/logging-system/deps/development-guidelines (26b562d)\n 5a57636cc0b8426a86a72bbbdd5b7f30e4fcac88 deps/agent-squad (remotes/origin/feature/agent-harness-p1-27-g5a57636)\n 65aaebca1ea69ab7d48eda51d33ef1d4eea5a0bf deps/agent-squad/deps/agent-intent (65aaebc)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/agent-intent/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 deps/agent-squad/deps/agent-intent/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/agent-intent/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 deps/agent-squad/deps/agent-intent/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/agent-intent/deps/logging-system/deps/development-guidelines (26b562d)\n 3a110a728cf520cfbbbafc0c4c75f14bf78bec3f deps/agent-squad/deps/agent-native (remotes/origin/feature/agent-harness-p1-27-g3a110a7)\n 65aaebca1ea69ab7d48eda51d33ef1d4eea5a0bf deps/agent-squad/deps/agent-native/deps/agent-intent (65aaebc)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/agent-native/deps/agent-intent/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 deps/agent-squad/deps/agent-native/deps/agent-intent/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/agent-native/deps/agent-intent/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 deps/agent-squad/deps/agent-native/deps/agent-intent/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/agent-native/deps/agent-intent/deps/logging-system/deps/development-guidelines (26b562d)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/agent-native/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 deps/agent-squad/deps/agent-native/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/agent-native/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 deps/agent-squad/deps/agent-native/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/agent-native/deps/logging-system/deps/development-guidelines (26b562d)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 deps/agent-squad/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 deps/agent-squad/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/logging-system/deps/development-guidelines (26b562d)\n af199eeaa23c5b39e08b4649f2513d7572dc5274 deps/development-guidelines (heads/main)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/logging-system/deps/development-guidelines (26b562d)\n cb26e4c9473f75ad015a83e3bba8137a08ff56f9 modules/backend (remotes/origin/feature/ext-1-inproc-handler)\n cc1ad7749816afe129f81bcf0732d0ca7c789d10 modules/backend/deps/agent-command (remotes/origin/feature/core-v0-1-gcc1ad77)\n ed2af3e6048928b1fd0ba6da1f9d0c1bafec82d4 modules/backend/deps/agent-command/deps/development-guidelines (remotes/origin/feature/delivery-mechanism-5-ged2af3e)\n 65aaebca1ea69ab7d48eda51d33ef1d4eea5a0bf modules/backend/deps/agent-intent (65aaebc)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-intent/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 modules/backend/deps/agent-intent/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-intent/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 modules/backend/deps/agent-intent/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-intent/deps/logging-system/deps/development-guidelines (26b562d)\n 3a110a728cf520cfbbbafc0c4c75f14bf78bec3f modules/backend/deps/agent-native (remotes/origin/feature/agent-harness-p1-27-g3a110a7)\n 65aaebca1ea69ab7d48eda51d33ef1d4eea5a0bf modules/backend/deps/agent-native/deps/agent-intent (65aaebc)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-native/deps/agent-intent/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 modules/backend/deps/agent-native/deps/agent-intent/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-native/deps/agent-intent/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 modules/backend/deps/agent-native/deps/agent-intent/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-native/deps/agent-intent/deps/logging-system/deps/development-guidelines (26b562d)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-native/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 modules/backend/deps/agent-native/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-native/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 modules/backend/deps/agent-native/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-native/deps/logging-system/deps/development-guidelines (26b562d)\n 5a57636cc0b8426a86a72bbbdd5b7f30e4fcac88 modules/backend/deps/agent-squad (remotes/origin/feature/agent-harness-p1-27-g5a57636)\n 65aaebca1ea69ab7d48eda51d33ef1d4eea5a0bf modules/backend/deps/agent-squad/deps/agent-intent (65aaebc)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/agent-intent/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 modules/backend/deps/agent-squad/deps/agent-intent/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/agent-intent/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 modules/backend/deps/agent-squad/deps/agent-intent/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/agent-intent/deps/logging-system/deps/development-guidelines (26b562d)\n 3a110a728cf520cfbbbafc0c4c75f14bf78bec3f modules/backend/deps/agent-squad/deps/agent-native (remotes/origin/feature/agent-harness-p1-27-g3a110a7)\n 65aaebca1ea69ab7d48eda51d33ef1d4eea5a0bf modules/backend/deps/agent-squad/deps/agent-native/deps/agent-intent (65aaebc)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/agent-native/deps/agent-intent/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 modules/backend/deps/agent-squad/deps/agent-native/deps/agent-intent/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/agent-native/deps/agent-intent/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 modules/backend/deps/agent-squad/deps/agent-native/deps/agent-intent/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/agent-native/deps/agent-intent/deps/logging-system/deps/development-guidelines (26b562d)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/agent-native/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 modules/backend/deps/agent-squad/deps/agent-native/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/agent-native/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 modules/backend/deps/agent-squad/deps/agent-native/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/agent-native/deps/logging-system/deps/development-guidelines (26b562d)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 modules/backend/deps/agent-squad/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 modules/backend/deps/agent-squad/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/logging-system/deps/development-guidelines (26b562d)\n 0b5c7747a3165bf0d0f2219204b7b70ec3ed7645 modules/backend/deps/agent-system-core (remotes/origin/feature/agent-harness-p3b-12-g0b5c774)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 modules/backend/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 modules/backend/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/logging-system/deps/development-guidelines (26b562d)\n 0b5c7747a3165bf0d0f2219204b7b70ec3ed7645 modules/core (remotes/origin/feature/agent-harness-p3b-12-g0b5c774)\n 19e89ae10bd93306400f13a9a1f449cbc5bfaa42 modules/documents (remotes/origin/feature/governance-docs)\n 50c724460159171254242ae48e956a80f4eb9c7e modules/frontend (heads/main)\n 2cb1496320dda6e65501ac94318295f067231dd7 modules/ui (remotes/origin/feature/governance-docs)\n" + }, + "after": { + "head": "c62a410e5abd92564c40505d4e8896b398bfcd43", + "branch": "feature/finish-guard-fixes", + "target_branch": "main", + "target_head": "49f93ed0c590d84a54a05b6ed43c053e26f031f5", + "status": " M scripts/check-worktree.py\n M tests/test_task.py\n", + "tracked_diff_sha256": "5206e9a3efb912bf80167000b599ee83618cdd46385027c665b2ef2024fdae51", + "untracked": {}, + "submodules": " cc1ad7749816afe129f81bcf0732d0ca7c789d10 deps/agent-command (remotes/origin/feature/core-v0-1-gcc1ad77)\n ed2af3e6048928b1fd0ba6da1f9d0c1bafec82d4 deps/agent-command/deps/development-guidelines (remotes/origin/feature/delivery-mechanism-5-ged2af3e)\n 65aaebca1ea69ab7d48eda51d33ef1d4eea5a0bf deps/agent-intent (65aaebc)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-intent/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 deps/agent-intent/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-intent/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 deps/agent-intent/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-intent/deps/logging-system/deps/development-guidelines (26b562d)\n 3a110a728cf520cfbbbafc0c4c75f14bf78bec3f deps/agent-native (remotes/origin/feature/agent-harness-p1-27-g3a110a7)\n 65aaebca1ea69ab7d48eda51d33ef1d4eea5a0bf deps/agent-native/deps/agent-intent (65aaebc)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-native/deps/agent-intent/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 deps/agent-native/deps/agent-intent/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-native/deps/agent-intent/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 deps/agent-native/deps/agent-intent/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-native/deps/agent-intent/deps/logging-system/deps/development-guidelines (26b562d)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-native/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 deps/agent-native/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-native/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 deps/agent-native/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-native/deps/logging-system/deps/development-guidelines (26b562d)\n 5a57636cc0b8426a86a72bbbdd5b7f30e4fcac88 deps/agent-squad (remotes/origin/feature/agent-harness-p1-27-g5a57636)\n 65aaebca1ea69ab7d48eda51d33ef1d4eea5a0bf deps/agent-squad/deps/agent-intent (65aaebc)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/agent-intent/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 deps/agent-squad/deps/agent-intent/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/agent-intent/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 deps/agent-squad/deps/agent-intent/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/agent-intent/deps/logging-system/deps/development-guidelines (26b562d)\n 3a110a728cf520cfbbbafc0c4c75f14bf78bec3f deps/agent-squad/deps/agent-native (remotes/origin/feature/agent-harness-p1-27-g3a110a7)\n 65aaebca1ea69ab7d48eda51d33ef1d4eea5a0bf deps/agent-squad/deps/agent-native/deps/agent-intent (65aaebc)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/agent-native/deps/agent-intent/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 deps/agent-squad/deps/agent-native/deps/agent-intent/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/agent-native/deps/agent-intent/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 deps/agent-squad/deps/agent-native/deps/agent-intent/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/agent-native/deps/agent-intent/deps/logging-system/deps/development-guidelines (26b562d)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/agent-native/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 deps/agent-squad/deps/agent-native/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/agent-native/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 deps/agent-squad/deps/agent-native/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/agent-native/deps/logging-system/deps/development-guidelines (26b562d)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 deps/agent-squad/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 deps/agent-squad/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/agent-squad/deps/logging-system/deps/development-guidelines (26b562d)\n af199eeaa23c5b39e08b4649f2513d7572dc5274 deps/development-guidelines (heads/main)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 deps/logging-system/deps/development-guidelines (26b562d)\n cb26e4c9473f75ad015a83e3bba8137a08ff56f9 modules/backend (remotes/origin/feature/ext-1-inproc-handler)\n cc1ad7749816afe129f81bcf0732d0ca7c789d10 modules/backend/deps/agent-command (remotes/origin/feature/core-v0-1-gcc1ad77)\n ed2af3e6048928b1fd0ba6da1f9d0c1bafec82d4 modules/backend/deps/agent-command/deps/development-guidelines (remotes/origin/feature/delivery-mechanism-5-ged2af3e)\n 65aaebca1ea69ab7d48eda51d33ef1d4eea5a0bf modules/backend/deps/agent-intent (65aaebc)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-intent/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 modules/backend/deps/agent-intent/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-intent/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 modules/backend/deps/agent-intent/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-intent/deps/logging-system/deps/development-guidelines (26b562d)\n 3a110a728cf520cfbbbafc0c4c75f14bf78bec3f modules/backend/deps/agent-native (remotes/origin/feature/agent-harness-p1-27-g3a110a7)\n 65aaebca1ea69ab7d48eda51d33ef1d4eea5a0bf modules/backend/deps/agent-native/deps/agent-intent (65aaebc)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-native/deps/agent-intent/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 modules/backend/deps/agent-native/deps/agent-intent/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-native/deps/agent-intent/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 modules/backend/deps/agent-native/deps/agent-intent/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-native/deps/agent-intent/deps/logging-system/deps/development-guidelines (26b562d)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-native/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 modules/backend/deps/agent-native/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-native/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 modules/backend/deps/agent-native/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-native/deps/logging-system/deps/development-guidelines (26b562d)\n 5a57636cc0b8426a86a72bbbdd5b7f30e4fcac88 modules/backend/deps/agent-squad (remotes/origin/feature/agent-harness-p1-27-g5a57636)\n 65aaebca1ea69ab7d48eda51d33ef1d4eea5a0bf modules/backend/deps/agent-squad/deps/agent-intent (65aaebc)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/agent-intent/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 modules/backend/deps/agent-squad/deps/agent-intent/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/agent-intent/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 modules/backend/deps/agent-squad/deps/agent-intent/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/agent-intent/deps/logging-system/deps/development-guidelines (26b562d)\n 3a110a728cf520cfbbbafc0c4c75f14bf78bec3f modules/backend/deps/agent-squad/deps/agent-native (remotes/origin/feature/agent-harness-p1-27-g3a110a7)\n 65aaebca1ea69ab7d48eda51d33ef1d4eea5a0bf modules/backend/deps/agent-squad/deps/agent-native/deps/agent-intent (65aaebc)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/agent-native/deps/agent-intent/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 modules/backend/deps/agent-squad/deps/agent-native/deps/agent-intent/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/agent-native/deps/agent-intent/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 modules/backend/deps/agent-squad/deps/agent-native/deps/agent-intent/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/agent-native/deps/agent-intent/deps/logging-system/deps/development-guidelines (26b562d)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/agent-native/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 modules/backend/deps/agent-squad/deps/agent-native/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/agent-native/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 modules/backend/deps/agent-squad/deps/agent-native/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/agent-native/deps/logging-system/deps/development-guidelines (26b562d)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/development-guidelines (26b562d)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 modules/backend/deps/agent-squad/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 modules/backend/deps/agent-squad/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/agent-squad/deps/logging-system/deps/development-guidelines (26b562d)\n 0b5c7747a3165bf0d0f2219204b7b70ec3ed7645 modules/backend/deps/agent-system-core (remotes/origin/feature/agent-harness-p3b-12-g0b5c774)\n a3ee67bba269e1276c14e22c026171ecf2cf6190 modules/backend/deps/error-code-system (a3ee67b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/error-code-system/deps/development-guidelines (26b562d)\n 49b5d8be604d05e4246dffa0d10fa1c2b7ad45d7 modules/backend/deps/logging-system (49b5d8b)\n 26b562d2e34fbc560711296a309c91c74ffc55b1 modules/backend/deps/logging-system/deps/development-guidelines (26b562d)\n 0b5c7747a3165bf0d0f2219204b7b70ec3ed7645 modules/core (remotes/origin/feature/agent-harness-p3b-12-g0b5c774)\n 19e89ae10bd93306400f13a9a1f449cbc5bfaa42 modules/documents (remotes/origin/feature/governance-docs)\n 50c724460159171254242ae48e956a80f4eb9c7e modules/frontend (heads/main)\n 2cb1496320dda6e65501ac94318295f067231dd7 modules/ui (remotes/origin/feature/governance-docs)\n" + }, + "after_error": null, + "exit_code": 0, + "output": "....................................................................................................\n----------------------------------------------------------------------\nRan 100 tests in 23.131s\n\nOK\nGOVERNANCE-SUITE-OK\n", + "output_sha256": "82a8a7063a926d1e210ab1198606150524f35fec98ee390c650586291b70dc53", + "receipt_sha256": "bd5da3712ef304af3c305fee2dda4bd7d48b08e860db5b801cdb33dd35268dc0" +} +``` diff --git a/scripts/check-worktree.py b/scripts/check-worktree.py index c682e712..a9503cc4 100644 --- a/scripts/check-worktree.py +++ b/scripts/check-worktree.py @@ -107,16 +107,19 @@ def local_work_outside(child, expected): """2026-10-05 修复:pinned-history 检查此前用 --all --reflog,把 refs/remotes 也 计入——pin 在 feature 顶端的子仓因 origin/main 不在 pin 历史内而永远无法 finish (实测被迫删远端引用+清 reflog 绕过,损害现场)。只认「本地独有」工作: - 本地分支、stash、以及 HEAD 的 reflog(最近检出轨迹里的独有提交); - refs/remotes 一律不算——远端有副本即已保全。""" - if git(child, "rev-list", "--branches", "--not", expected).strip(): - return True - if git(child, "stash", "list").strip(): - return True + 不在任何远端跟踪引用历史内的提交才算。克隆默认分支停在 origin/main 顶端、 + reflog 里的检出轨迹等「远端有副本」的状态一律不算;stash 恒为本地独有。""" + candidates = git(child, "rev-list", "--branches", "--not", expected).split() for line in git(child, "reflog", "show", "HEAD", "--format=%H").splitlines(): tip = line.strip() - if tip and git(child, "rev-list", "-1", tip, "--not", expected).strip(): + if tip: + candidates.append(tip) + for tip in dict.fromkeys(candidates): # 去重保序 + # 远端任一引用可达 ⇒ 已保全,不算本地独有 + if git(child, "rev-list", "-1", tip, "--not", "--remotes").strip(): return True + if git(child, "stash", "list").strip(): + return True return False diff --git a/tests/test_task.py b/tests/test_task.py index b972a0e3..e6947d14 100644 --- a/tests/test_task.py +++ b/tests/test_task.py @@ -758,6 +758,23 @@ class FinishGuardFixTests(unittest.TestCase): self.assertEqual(result.returncode, 0, result.stdout + result.stderr) self.assertFalse(wt.exists()) + + def test_local_default_branch_at_origin_main_does_not_block(self): + """克隆默认分支停在 origin/main 顶端(pin 为 feature 顶端时不在其历史内) + 且 HEAD reflog 含克隆/检出轨迹——均为远端有副本的状态,不得阻断 finish。""" + self.add_submodule_pinned_off_main() + wt = self.worktree() + self.git(wt, "submodule", "update", "--init", "--recursive") + (self.repo / "tracked").write_text("implementation done\n") + self.git(self.repo, "add", "-A") + self.git(self.repo, "commit", "-q", "-m", "done") + self.git(self.repo, "push", "-q", "origin", "feature/guard") + self.git(self.repo, "merge", "--no-ff", "-q", "-m", "Merge feature/guard", "feature/guard") + self.git(self.repo, "push", "-q", "origin", "main") + result = self.task(wt, "finish", check=False) + self.assertEqual(result.returncode, 0, result.stdout + result.stderr) + self.assertFalse(wt.exists()) + def test_local_unique_commit_still_preserved(self): self.add_submodule_pinned_off_main() wt = self.worktree()