验证:bash -n PASS;功能负例 PASS(exit≠0 断言,无副作用);sync 修复验证 PASS(exit 0);make test 全链 PASS(修复前 94f8d47 与最终 HEAD 两轮,exit 0);权威源为 CI 在 PR HEAD 的 make test+make build(GATE)。
$ bash scripts/task.sh start feature/ext-1-inproc-handler && exit 1 || echo 'guard refused merged branch as expected'
[exit 0 | HEAD 94f8d4760b | sha256:937f2c0a1987b4f7] 输出尾部 15 行:
ERROR: branch feature/ext-1-inproc-handler already merged into origin/main — reuse the original branch or pick a new slug (task-start must not recreate merged cards)
guard refused merged branch as expected
| 2026-10-05T12:29:05Z | make test | 94f8d4760b | 0 | SELF | 84092b2ad053ee79 |
$ make test
[exit 0 | HEAD 94f8d4760b | sha256:84092b2ad053ee79] 输出尾部 20 行:
✓ test/ui.test.tsx (6 tests) 66ms
✓ test/toolblock.test.tsx (4 tests) 76ms
✓ test/overlay-host.test.tsx (6 tests) 68ms
✓ test/file-preview.test.tsx (9 tests) 89ms
✓ test/inbox.test.tsx (13 tests) 93ms
✓ test/card-anchor.test.tsx (4 tests) 96ms
✓ test/inline-confirm.test.tsx (7 tests) 107ms
✓ test/capability.test.tsx (14 tests) 153ms
Test Files 14 passed (14)
Tests 103 passed (103)
Start at 12:29:37
Duration 619ms (transform 415ms, setup 0ms, import 1.36s, tests 955ms, environment 3.25s)
knip unused exports 55 <= 55
cd deps/agent-command && go vet ./... && go test -count=1 ./...
ok agent-command 0.002s
ok agent-command/conformance 0.002s
make[1]: Leaving directory '/home/weichen/projects/Agent-System-Dev-wt-feature-task-start-merged-guard'
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.
feature/task-start-merged-guard 任务卡
任务主记录:<PR 链接,task-finish 时填写>;状态:进行中;owner:weichen
基线与授权
43d33aa492目标与非目标
cmd_start在分支名校验后新增守护——本地或远端存在同名分支且已包含于origin/main时拒绝启动(exit 非零),提示「沿用原分支或换新 slug」。task-start同名分支会从新 main 长出第二段历史、空卡覆盖已合入任务卡(两轮证据差点丢失,靠 git show 恢复);旧逻辑只校验本地分支能否创建,不查是否刚合入。||,暴露cmd_sync证据扫描按裸|切行、把转义碎片当 HEAD 传给git diff致 fatal 128 杀死 sync 的潜在缺陷(task-sync 门禁被卡死,卡内 12:30–12:32 五次中毒复现)——同 PR 一并修复(非十六进制单元格跳过,WARN 语义不变)。同步记录
43d33aa49243d33aa492证据(Evidence)
结果与验证(完成后填写)
\|\|转义行的卡片上 sync 正常完成、WARN 语义不变。94f8d47与最终 HEAD 两轮,exit 0);权威源为 CI 在 PR HEAD 的 make test+make build(GATE)。| 2026-10-05T12:28:53Z |
bash -n scripts/task.sh|94f8d4760b| 0 | SELF | e3b0c44298fc1c14 || 2026-10-05T12:28:53Z |
bash scripts/task.sh start feature/ext-1-inproc-handler && exit 1 \|\| echo 'guard refused merged branch as expected'|94f8d4760b| 0 | SELF | 937f2c0a1987b4f7 || 2026-10-05T12:29:05Z |
make test|94f8d4760b| 0 | SELF | 84092b2ad053ee79 || 2026-10-05T12:30:24Z |
make task-sync|94f8d4760b| 2 | SELF | c59e97420676c4fa || 同步前验收 |
43d33aa492|e58035a8e4| 2026-10-05T12:30:36Z || 2026-10-05T12:30:36Z |
make task-sync|e58035a8e4| 2 | SELF | 12717b8736ff03bf || 同步前验收 |
43d33aa492|879bf64b94| 2026-10-05T12:30:49Z || 同步前验收 |
43d33aa492|09aa6e59b0| 2026-10-05T12:31:08Z || 同步前验收 |
43d33aa492|9e30c5f656| 2026-10-05T12:31:17Z || 同步前验收 |
43d33aa492|b3a5a31d10| 2026-10-05T12:31:59Z || 同步前验收 |
43d33aa492|2fec8b4e82| 2026-10-05T12:32:00Z || 2026-10-05T12:32:55Z |
bash -n scripts/task.sh && bash scripts/task.sh sync && echo 'sync survives escaped-pipe evidence row'|278bff9a31| 1 | SELF | afc745546e4eb5ba || 同步前验收 |
43d33aa492|1e0508e8a7| 2026-10-05T12:33:06Z || 同步前验收 |
43d33aa492|9a3ebe6539| 2026-10-05T12:33:16Z || 2026-10-05T12:33:16Z |
bash -n scripts/task.sh && bash scripts/task.sh sync >/dev/null 2>&1 && echo 'sync survives escaped-pipe evidence row'|9a3ebe6539| 0 | SELF | 2a3457acb8b31495 || 2026-10-05T12:33:22Z |
make test|de75f1ede9| 0 | SELF | 9a4f394d8e0f5c60 |PR 说明:与任务卡同一份文档。两处 scripts/task.sh 修复:① cmd_start 拒绝已合入 origin/main 的同名分支(EXT-1 复核轮实测事故的根因);② cmd_sync 证据扫描跳过非十六进制单元格(证据命令含 || 时转义碎片曾致 git diff fatal 128 杀死 sync)。审阅重放集:
bash scripts/task.sh start feature/ext-1-inproc-handler(应拒绝);在含转义管道证据行的卡片上bash scripts/task.sh sync(应正常完成)。