From 0a4076e8e6c855e34be3e42136b95efe5dd2d536 Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Wed, 14 Oct 2026 14:11:59 -0500 Subject: [PATCH] row 116 round 2 builder packet: C1 cases and mutants, D1 Six cases for Filbert's C1 (f1 split into actor_role and actor_run), the earlier-merge dry run, a node_modules canary with s27, and the TOOLS.md usage line. 84 cases, 55 of 56 mutants killed (s26 equivalent), targeted gate green. Candidate is build.patch against 1223a0f37; not committed. Co-Authored-By: Claude Opus 5.5 --- agents/darkwing/work/queue-116/r2/build.md | 129 ++ agents/darkwing/work/queue-116/r2/build.patch | 1074 +++++++++++++++++ .../queue-116/r2/candidate-manifest.sha256 | 6 + .../darkwing/work/queue-116/r2/gate-run.log | 6 + agents/darkwing/work/queue-116/r2/gate.sh | 21 + .../work/queue-116/r2/gate/pkg-bus.log | 164 +++ .../r2/gate/pkg-webui-pinned-copy.log | 18 + .../queue-116/r2/gate/script-conductor.log | 55 + .../queue-116/r2/gate/script-land-work.log | 86 ++ .../work/queue-116/r2/mutants-run.log | 205 ++++ agents/darkwing/work/queue-116/r2/mutants.py | 110 ++ .../r2/mutants/mutant-r01-schema-digest.log | 86 ++ .../r2/mutants/mutant-r02-schema-meta.log | 86 ++ .../r2/mutants/mutant-r03-read-only.log | 86 ++ .../r2/mutants/mutant-r04-business-scope.log | 86 ++ .../r2/mutants/mutant-r05-one-raise.log | 86 ++ .../r2/mutants/mutant-r06-not-a-merge.log | 86 ++ .../r2/mutants/mutant-r07-resolved-op.log | 86 ++ .../r2/mutants/mutant-r08-human-by.log | 86 ++ .../r2/mutants/mutant-r09-human-via.log | 86 ++ .../r2/mutants/mutant-r10-human-answer.log | 86 ++ .../r2/mutants/mutant-r11-merge-option.log | 86 ++ .../r2/mutants/mutant-r12-one-work-ref.log | 86 ++ .../r2/mutants/mutant-r13-work-ref-shape.log | 86 ++ .../r2/mutants/mutant-r14-task-ref-agrees.log | 86 ++ .../r2/mutants/mutant-r15-target.log | 86 ++ .../mutants/mutant-r16-later-supersedes.log | 86 ++ .../r2/mutants/mutant-r17-later-task.log | 86 ++ .../r2/mutants/mutant-r18-later-question.log | 86 ++ .../r2/mutants/mutant-r19-no-verdict.log | 86 ++ .../r2/mutants/mutant-r20-latest-verdict.log | 89 ++ .../r2/mutants/mutant-r21-approve.log | 86 ++ .../r2/mutants/mutant-r22-verdict-task.log | 86 ++ .../r2/mutants/mutant-r23-full-oid.log | 86 ++ .../r2/mutants/mutant-r24-answer-role.log | 86 ++ .../r2/mutants/mutant-r25-answer-run.log | 86 ++ .../r2/mutants/mutant-r26-answer-choice.log | 86 ++ .../r2/mutants/mutant-r27-one-answer.log | 86 ++ .../r2/mutants/mutant-r28-raise-task-ref.log | 86 ++ .../r2/mutants/mutant-r29-later-only.log | 86 ++ .../r2/mutants/mutant-s01-base-early.log | 86 ++ .../r2/mutants/mutant-s02-ref-moved.log | 86 ++ .../r2/mutants/mutant-s03-merge-base.log | 86 ++ .../r2/mutants/mutant-s04-empty-diff.log | 86 ++ .../r2/mutants/mutant-s05-root-top-file.log | 86 ++ .../r2/mutants/mutant-s06-root-new-dir.log | 86 ++ .../r2/mutants/mutant-s07-root-src-v1.log | 86 ++ .../r2/mutants/mutant-s08-dirty-changed.log | 86 ++ .../r2/mutants/mutant-s09-dirty-staged.log | 86 ++ .../r2/mutants/mutant-s10-dirty-untracked.log | 86 ++ .../r2/mutants/mutant-s11-dirty-recheck.log | 86 ++ .../r2/mutants/mutant-s12-apply-conflict.log | 86 ++ .../r2/mutants/mutant-s13-patch-drift.log | 86 ++ .../mutants/mutant-s14-gate-node-modules.log | 86 ++ .../r2/mutants/mutant-s15-gate-step-fails.log | 86 ++ .../mutants/mutant-s16-gate-skips-queue.log | 86 ++ .../r2/mutants/mutant-s17-gate-scripts.log | 86 ++ .../r2/mutants/mutant-s18-base-moved-cas.log | 86 ++ .../r2/mutants/mutant-s19-dry-run.log | 86 ++ .../r2/mutants/mutant-s20-checkout-sync.log | 86 ++ .../r2/mutants/mutant-s21-subject.log | 86 ++ .../r2/mutants/mutant-s22-attribution.log | 86 ++ .../mutants/mutant-s23-cleanup-worktree.log | 86 ++ .../r2/mutants/mutant-s24-cleanup-network.log | 86 ++ .../r2/mutants/mutant-s25-cleanup-scratch.log | 86 ++ .../r2/mutants/mutant-s26-cleanup-link.log | 86 ++ .../mutant-s27-cleanup-follows-link.log | 86 ++ agents/darkwing/work/queue-116/r2/repro.sh | 9 + .../work/queue-116/r2/test-land-work.log | 86 ++ 69 files changed, 6788 insertions(+) create mode 100644 agents/darkwing/work/queue-116/r2/build.md create mode 100644 agents/darkwing/work/queue-116/r2/build.patch create mode 100644 agents/darkwing/work/queue-116/r2/candidate-manifest.sha256 create mode 100644 agents/darkwing/work/queue-116/r2/gate-run.log create mode 100755 agents/darkwing/work/queue-116/r2/gate.sh create mode 100644 agents/darkwing/work/queue-116/r2/gate/pkg-bus.log create mode 100644 agents/darkwing/work/queue-116/r2/gate/pkg-webui-pinned-copy.log create mode 100644 agents/darkwing/work/queue-116/r2/gate/script-conductor.log create mode 100644 agents/darkwing/work/queue-116/r2/gate/script-land-work.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants-run.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants.py create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r01-schema-digest.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r02-schema-meta.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r03-read-only.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r04-business-scope.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r05-one-raise.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r06-not-a-merge.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r07-resolved-op.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r08-human-by.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r09-human-via.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r10-human-answer.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r11-merge-option.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r12-one-work-ref.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r13-work-ref-shape.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r14-task-ref-agrees.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r15-target.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r16-later-supersedes.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r17-later-task.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r18-later-question.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r19-no-verdict.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r20-latest-verdict.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r21-approve.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r22-verdict-task.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r23-full-oid.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r24-answer-role.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r25-answer-run.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r26-answer-choice.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r27-one-answer.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r28-raise-task-ref.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-r29-later-only.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s01-base-early.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s02-ref-moved.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s03-merge-base.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s04-empty-diff.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s05-root-top-file.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s06-root-new-dir.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s07-root-src-v1.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s08-dirty-changed.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s09-dirty-staged.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s10-dirty-untracked.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s11-dirty-recheck.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s12-apply-conflict.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s13-patch-drift.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s14-gate-node-modules.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s15-gate-step-fails.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s16-gate-skips-queue.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s17-gate-scripts.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s18-base-moved-cas.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s19-dry-run.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s20-checkout-sync.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s21-subject.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s22-attribution.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s23-cleanup-worktree.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s24-cleanup-network.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s25-cleanup-scratch.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s26-cleanup-link.log create mode 100644 agents/darkwing/work/queue-116/r2/mutants/mutant-s27-cleanup-follows-link.log create mode 100644 agents/darkwing/work/queue-116/r2/repro.sh create mode 100644 agents/darkwing/work/queue-116/r2/test-land-work.log diff --git a/agents/darkwing/work/queue-116/r2/build.md b/agents/darkwing/work/queue-116/r2/build.md new file mode 100644 index 000000000..d1620fe84 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/build.md @@ -0,0 +1,129 @@ +# Row 116 (#1610) round 2: a resolved merge decision lands as a gated local commit + +Brief: docs/plans/2026-10-14_merge-path-for-approved-work.md (blob 7a610f379). Round 1's packet is agents/darkwing/work/queue-116/r1/ (82943bf61). Filbert's round 1 verdict was changes, comment 28464, queue rev 1165, for C1. Sage's sage-0207 asks for C1 as tests only and folds in D1. sage-0204 settles the base and tree question from round 1. + +BASE: 1223a0f37, unchanged. No candidate path has changed on refactor from 1223a0f37 to a2ee3a80f. Over packages/bus, scripts/test-conductor.sh and the webui pinned-copy test, the only change is still 7eb5ad0cb's requirement count in packages/bus/tests/requirements.test.mjs. The candidate is build.patch against BASE, and candidate-manifest.sha256 lists the same 6 files. `repro.sh` exports BASE with `git archive`, applies build.patch and checks every manifest digest: DIGESTS_OK. + +## What changed in round 2 + +Two files changed. read.mjs, land-work.sh, fixture.mjs and CONDUCTOR.md are byte-identical to round 1, as Filbert ruled no change there; their digests in candidate-manifest.sha256 equal round 1's. + +| File | Round 2 change | +|---|---| +| scripts/test-land-work.sh | six cases for C1, and a canary file in the fixture target's node_modules. 84 cases, was 78 | +| docs/TOOLS.md | D1: the usage line has `--attribution`, `--business` and `--project`, and the prose says what each does. The Maintenance row says 84 cases | + +### C1: one case per condition + +Each case is a gen.mjs variant built through fixture.mjs like the rest. Each mutant is listed with the round 2 mutants below and was run against the full suite. + +| Filbert | Condition in read.mjs | Case | Mutant | Mutant result | +|---|---|---|---|---| +| f1 | the answer's `actor_role` is null | `answer-role`: the answer event has actor_role pm. Refuses `not-human` | r24-answer-role | killed, only this case fails | +| f1 | the answer's `actor_run` is null | `answer-run`: the answer event has actor_run rfixture. Refuses `not-human` | r25-answer-run | killed, only this case fails | +| f2 | the answer's choice equals the close's | `answer-choice`: the answer says `no`, the close says `yes`. Refuses `not-human` | r26-answer-choice | killed, only this case fails | +| f3 | exactly one answer | `two-answers`: the same answer event twice. Refuses `not-human` | r27-one-answer | killed, only this case fails | +| f4 | `raise.task_ref` agrees with the work ref | `raise-task-disagrees`: the raise cites vikunja:7/99, the ref is work/vikunja-7-42. Refuses `work-ref` | r28-raise-task-ref | killed, only this case fails | +| f5 | `later` counts only later decisions | `earlier-merge`: a merge decision E on the same ref, raised before D and withdrawn. A dry run of D exits 0 | r29-later-only | killed, only this case fails | + +I split f1 into two cases and two mutants because read.mjs checks `actor_role` and `actor_run` as separate conditions, and a mutant that drops one leaves the other in place. r27 changes `answers.length === 1` to `>= 1`, the narrower form of round 1's r10, which also accepted no answer. + +The earlier-merge case goes as far as Filbert asked. E is a merge decision with the same task_ref and question, and a `withdrawn` close. fixture.mjs writes it before D, so its seq is lower. The dry run passes every check and runs the gate, then writes no ref. With r29, `later` picks E up and the case refuses `superseded`. + +### The canary + +Filbert's s26 ruling suggested it. The suite's target node_modules was an empty directory, so "the target's node_modules is still there" couldn't see its contents being deleted. Now it holds a file named canary, and the case also checks that the file is there. s27 is the mutant that shows the case can fail: cleanup does `rm -rf "$WT/node_modules/"`, which follows the link and empties the target's directory. s26, which drops the explicit unlink, stays equivalent, as Filbert confirmed on git 2.55.0. + +## Tests + +scripts/test-land-work.sh, 84 cases, all passing (log: test-land-work.log). The round 1 groups are unchanged except these: + +| Group | Round 2 addition | +|---|---| +| The decision | `answer-role`, `answer-run`, `answer-choice` and `two-answers` refuse `not-human`, and `raise-task-disagrees` refuses `work-ref`. 25 variants, was 20 | +| A dry run | `earlier-merge` exits 0 with a withdrawn earlier merge decision on the same ref | +| Cleanup | the target's node_modules is still there, with its canary file | + +## Mutants + +mutants.py has 56 mutants, the 49 from round 1 plus r24 to r29 and s27. It applies each to the file, runs the whole suite under a 600 second timeout in its own process group, and restores the file from `.orig` with a sha256 check. I ran the seven new ones first, then all 56 against the 84-case suite. mutants-run.log has both runs and each mutant's failing cases. The full run ended `restored: True`, and 55 of 56 are killed. s26 survives, and Filbert ruled it equivalent in comment 28464. Four round 1 mutants now fail one more case than they did, each a new case: r10 also fails `two-answers`, r14 `raise-task-disagrees`, and r20 and s16 `earlier-merge`. + +| Mutant | Change | Result | +|---|---|---| +| r01-schema-digest | skip the schema digest compare | killed, 1 of 84 fail | +| r02-schema-meta | skip the meta version and digest check | killed, 1 of 84 fail | +| r03-read-only | open read-write | killed, 2 of 84 fail | +| r04-business-scope | drop `business = ?` from every query | killed, 1 of 84 fail | +| r05-one-raise | accept zero or several raises | killed, 1 of 84 fail | +| r06-not-a-merge | skip the action check | killed, 1 of 84 fail | +| r07-resolved-op | accept any single close op | killed, 1 of 84 fail | +| r08-human-by | skip resolved-by == human | killed, 1 of 84 fail | +| r09-human-via | skip via == cli | killed, 1 of 84 fail | +| r10-human-answer | accept a missing human answer | killed, 2 of 84 fail | +| r11-merge-option | skip choice == approvalChoice | killed, 1 of 84 fail | +| r12-one-work-ref | accept several work refs | killed, 1 of 84 fail | +| r13-work-ref-shape | loosen the work ref pattern | killed, 1 of 84 fail | +| r14-task-ref-agrees | skip the task_ref agreement | killed, 2 of 84 fail | +| r15-target | skip the target check | killed, 1 of 84 fail | +| r16-later-supersedes | ignore `supersedes` | killed, 1 of 84 fail | +| r17-later-task | ignore a later decision on the task | killed, 1 of 84 fail | +| r18-later-question | ignore a later question naming the ref | killed, 1 of 84 fail | +| r19-no-verdict | skip the no-verdict refusal | killed, 1 of 84 fail | +| r20-latest-verdict | take the earliest verdict | killed, 31 of 84 fail | +| r21-approve | skip verdict == approve | killed, 1 of 84 fail | +| r22-verdict-task | skip the verdict body's task_ref | killed, 1 of 84 fail | +| r23-full-oid | accept a short commit | killed, 1 of 84 fail | +| r24-answer-role | skip the answer's actor_role check | killed, 1 of 84 fail | +| r25-answer-run | skip the answer's actor_run check | killed, 1 of 84 fail | +| r26-answer-choice | skip the answer's choice == the close's | killed, 1 of 84 fail | +| r27-one-answer | accept several answers | killed, 1 of 84 fail | +| r28-raise-task-ref | drop the raise's task_ref from the agreement | killed, 1 of 84 fail | +| r29-later-only | `later` counts earlier decisions too | killed, 1 of 84 fail | +| s01-base-early | skip the early `--base` check | killed, 1 of 84 fail | +| s02-ref-moved | skip ref-moved | killed, 1 of 84 fail | +| s03-merge-base | ignore a missing merge base | killed, 1 of 84 fail | +| s04-empty-diff | accept an empty diff | killed, 1 of 84 fail | +| s05-root-top-file | allow a top-level file | killed, 1 of 84 fail | +| s06-root-new-dir | allow a new top-level directory | killed, 1 of 84 fail | +| s07-root-src-v1 | allow `src/` and `v1/` | killed, 1 of 84 fail | +| s08-dirty-changed | skip the changed-path check | killed, 3 of 84 fail | +| s09-dirty-staged | skip the staged check | killed, 1 of 84 fail | +| s10-dirty-untracked | skip the untracked check | killed, 1 of 84 fail | +| s11-dirty-recheck | skip the recheck before the commit | killed, 2 of 84 fail | +| s12-apply-conflict | ignore an apply failure | killed, 1 of 84 fail | +| s13-patch-drift | skip the patch-id compare | killed, 1 of 84 fail | +| s14-gate-node-modules | skip the node_modules check | killed, 1 of 84 fail | +| s15-gate-step-fails | ignore a failing gate step | killed, 5 of 84 fail | +| s16-gate-skips-queue | run the queue suite too | killed, 16 of 84 fail | +| s17-gate-scripts | run no scripts/test-*.sh | killed, 8 of 84 fail | +| s18-base-moved-cas | update-ref without the old value | killed, 2 of 84 fail | +| s19-dry-run | ignore `--dry-run` | killed, 3 of 84 fail | +| s20-checkout-sync | skip the checkout sync | killed, 1 of 84 fail | +| s21-subject | a fixed subject | killed, 1 of 84 fail | +| s22-attribution | drop the attribution line | killed, 2 of 84 fail | +| s23-cleanup-worktree | keep the worktree | killed, 6 of 84 fail | +| s24-cleanup-network | keep the Docker network | killed, 1 of 84 fail | +| s25-cleanup-scratch | keep the scratch directory | killed, 6 of 84 fail | +| s26-cleanup-link | skip the explicit node_modules unlink | survived, equivalent (Filbert, comment 28464) | +| s27-cleanup-follows-link | cleanup follows the link and empties the target's node_modules | killed, 1 of 84 fail | + +## Gate + +A targeted builder gate under #271 (gate.sh, logs in gate/), the same steps as round 1. Round 1 ran the webui pinned-copy test by hand beside gate.sh; this round gate.sh runs it as its fourth step. Sage's landing gate stays full. + +| Step | Result | +|---|---| +| packages/bus `node --test tests/*.test.mjs` | 156 pass, 0 fail | +| scripts/test-land-work.sh | 84 passed, 0 failed | +| scripts/test-conductor.sh | 17 passed, 0 failed | +| packages/webui `node --test tests/pinned-copy.test.mjs` | 10 pass, 0 fail | + +GATE_PASSED (gate-run.log). No step failed, so the flake rule had nothing to count. The suite also passed 84 of 84 on its own before the mutants (test-land-work.log), and s26, the one survivor, passed all 84 in the full mutant run. + +## Replay + +Round 1's replay stands, and I didn't rerun it. It ran read.mjs and land-work.sh, which are byte-identical in this candidate, against scratch copies of the live rows. Filbert checked it under sage-0204: at 1c9a4910d the landed diff is f7c8537b3's own diff and the dry run wrote no ref, and at 4bc908991 the tree equals `f7c8537b3^{tree}`. The commit stayed local in both. The evidence is in agents/darkwing/work/queue-116/r1/ (build.md's Replay section, replay-1c9a/, replay-4bc9/). + +## Going live + +Nothing goes live. The tool is a conductor command run by hand. No service, role or session calls it. Push, the merge to next or main, re-pins and restarts stay out of this row. diff --git a/agents/darkwing/work/queue-116/r2/build.patch b/agents/darkwing/work/queue-116/r2/build.patch new file mode 100644 index 000000000..eee855a14 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/build.patch @@ -0,0 +1,1074 @@ +diff --git a/docs/TOOLS.md b/docs/TOOLS.md +index 404dd9391..8fecefb40 100644 +--- a/docs/TOOLS.md ++++ b/docs/TOOLS.md +@@ -118,6 +118,34 @@ succeeded run → clean target tree → path allowlist → syntax gates → + apply → policy suites → attribution commit. Any failure reverts. + Push is never automatic. + ++## Conductor (landing approved work) ++ ++```bash ++scripts/land-work.sh [--base refactor] [--dry-run] [--subject TEXT] ++ [--attribution LINE] [--business ID] [--project ID] ++``` ++ ++Turns a merge decision the human resolved into one gated local commit on ++`refactor` (#1610). It reads `/bus/bus.sqlite` read-only through ++`scripts/land-work/read.mjs` and checks that the human picked the raise's ++approval option, that the question names one `work/vikunja-

-`, and ++that the task's latest `review.verdict` approves a commit C that the work ++ref in the working repository still points at. It then applies ++`git diff $(merge-base refactor C) C` in a detached worktree, checks the ++patch-id, runs every package suite except `queue` and every ++`scripts/test-*.sh`, and commits. The subject is the approval option's ++text unless `--subject` overrides it, and `--attribution` replaces the last ++line, `Applied-under: scripts/land-work.sh (conductor)`. `--business` and ++`--project` are needed only when the config has more than one business file ++or the business more than one project. The tool prints the line for the PM ++and doesn't send it. `--dry-run` runs every check and the gate and writes ++no ref. A refusal names its reason and exits 2; the reasons are listed at ++the top of the script. The worktree, its `node_modules` link and its Docker ++network are removed on every exit. The gate log directory stays and the ++tool names it. Keep `TMPDIR` short: the gate inherits it, the cli suite ++puts unix sockets under it, and a 46-byte `TMPDIR` failed 8 of those tests. ++Push is a separate act. ++ + ## Maintenance + + | Command | Purpose | Notes | +@@ -128,6 +156,7 @@ Push is never automatic. + | `scripts/test-release.sh` | Release selftests | 14 cases | + | `scripts/test-conductor.sh` | Auto-apply selftests (sandboxed) | 17 cases | + | `scripts/test-auth.sh` | Auth checkpoint selftests (no Docker) | 13 cases | ++| `scripts/test-land-work.sh` | Land-work selftests (sandboxed, fake Docker) | 84 cases | + | `scripts/gitea-api.sh [body]` | Gitea API helper; reads the JSON credential file or a raw per-seat token file | Token never on argv/stdout | + + ## Seat launch with registration (`scripts/mosaic`) +diff --git a/docs/plans/CONDUCTOR.md b/docs/plans/CONDUCTOR.md +index 0d5deff5c..bab3525a6 100644 +--- a/docs/plans/CONDUCTOR.md ++++ b/docs/plans/CONDUCTOR.md +@@ -43,6 +43,33 @@ tracked, versioned files whose changes arrive as reviewed commits. + - Verification is mechanical: suites + `node --check` / `bash -n` gates. + - Recursive decomposition = "fail → smaller task", never "hope." + ++## Landing approved work ++ ++A stack coder pushes `work/vikunja-

-` to the working repository, the ++reviewer approves a commit on it, and the PM raises a `git.merge.protected` ++decision for the human. After the human resolves it with the merge option, ++the conductor runs: ++ ++```bash ++scripts/land-work.sh --dry-run ++scripts/land-work.sh ++``` ++ ++The tool binds the commit to what was reviewed and decided. It reads the ++decision, its raise and the latest verdict from the bus database ++read-only, requires the work ref to be at the approved commit, squashes ++the reviewed diff onto `refactor` in a detached worktree, checks the ++patch-id, runs the full gate and commits once, locally. It refuses work ++that adds a file at the repository root, in a new top-level directory, or ++under `src/` or `v1/`. Each ++refusal names its reason (`docs/TOOLS.md`). Don't work around one; fix the ++cause or go back to the PM. ++ ++The conductor then reviews the commit, pushes it as a separate act and ++sends the PM the line the tool printed. Only `refactor` lands this way. ++Merges to `next` or `main`, re-pins and restarts keep their own authority, ++and no stack role runs this tool. ++ + ## Worker task template + + ```json +diff --git a/scripts/land-work.sh b/scripts/land-work.sh +new file mode 100644 +index 000000000..8c8ff6e80 +--- /dev/null ++++ b/scripts/land-work.sh +@@ -0,0 +1,280 @@ ++#!/usr/bin/env bash ++# Land approved work: turn a resolved merge decision into one gated local ++# commit on the base branch (row 116, #1610). ++# ++# Usage: scripts/land-work.sh [--base refactor] [--dry-run] ++# [--subject TEXT] [--attribution LINE] [--business ID] ++# [--project ID] ++# ++# Checks, in order; each refusal names its reason on stderr and exits 2: ++# bus-schema the bus database's schema isn't the Store's ++# decision-not-found no decision with that id and one raise in the business ++# not-a-merge the decision's action isn't git.merge.protected ++# not-resolved the decision is open, withdrawn or expired ++# not-human not resolved by the business's human through the CLI ++# not-merge-option the choice isn't the raise's approval option ++# work-ref the question doesn't name exactly one ++# work/vikunja-

-, or a task_ref disagrees with it ++# target-branch the raise's target or --base isn't refactor (next and ++# main always refuse) ++# superseded a later merge decision on the same work ref or task, ++# or one that supersedes this one ++# no-verdict no review.verdict for the task ++# not-approved the latest verdict isn't approve on a full commit id ++# ref-moved the work ref in the working repository isn't at C ++# root-file the reviewed diff adds a file at the repository root ++# checkout-dirty the base is checked out with changes on a reviewed path ++# base-conflict the reviewed diff doesn't apply cleanly to the base ++# patch-drift the applied diff's patch-id isn't the reviewed one ++# gate-failed a gate step failed; the log is named ++# base-moved the base branch moved while the gate ran ++# ++# Reads: /bus/bus.sqlite, opened readOnly by ++# scripts/land-work/read.mjs, which holds every query and runs SELECTs only. ++# The live bus can stay up: it runs in WAL mode and a reader doesn't block it. ++# ++# Writes, on a pass and without --dry-run: one commit on refs/heads/, ++# made by `git commit` in a detached worktree, then moved onto the base with ++# a compare-and-swap update-ref. If the base is checked out, the reviewed ++# paths there are brought up to the new commit. Nothing is pushed. ++# ++# The worktree goes under $TMPDIR and is removed on every exit. The gate logs ++# stay in $TMPDIR/land-work-logs.* and the tool names the directory. ++set -euo pipefail ++ ++SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ++REPO="$(cd "$SCRIPT_DIR/.." && pwd)" ++ ++usage() { echo "usage: land-work.sh [--base refactor] [--dry-run] [--subject TEXT] [--attribution LINE] [--business ID] [--project ID]" >&2; exit 4; } ++fail() { echo "land-work: $1" >&2; exit "${2:-1}"; } ++refuse() { echo "land-work: refused: $1${2:+: $2}" >&2; exit 2; } ++ ++DECISION=""; BASE="refactor"; DRY_RUN="no"; SUBJECT=""; ATTRIBUTION="" ++BUSINESS=""; PROJECT="" ++while [ $# -gt 0 ]; do ++ case "$1" in ++ --base) [ $# -ge 2 ] || usage; BASE="$2"; shift 2 ;; ++ --dry-run) DRY_RUN="yes"; shift ;; ++ --subject) [ $# -ge 2 ] || usage; SUBJECT="$2"; shift 2 ;; ++ --attribution) [ $# -ge 2 ] || usage; ATTRIBUTION="$2"; shift 2 ;; ++ --business) [ $# -ge 2 ] || usage; BUSINESS="$2"; shift 2 ;; ++ --project) [ $# -ge 2 ] || usage; PROJECT="$2"; shift 2 ;; ++ -*) usage ;; ++ *) [ -z "$DECISION" ] || usage; DECISION="$1"; shift ;; ++ esac ++done ++[ -n "$DECISION" ] || usage ++[[ "$DECISION" =~ ^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$ ]] || fail "not a decision id: $DECISION" 4 ++case "$SUBJECT$ATTRIBUTION" in *$'\n'*) fail "--subject and --attribution take one line" 4 ;; esac ++# Exactly refactor (#1610): next and main always refuse, as does anything else. ++[ "$BASE" = "refactor" ] || refuse target-branch "--base must be refactor, not $BASE" ++ ++# ---- temporary space: the worktree goes, the gate logs stay ---- ++TMP_ROOT="${TMPDIR:-/tmp}" ++LOGS="$(mktemp -d "$TMP_ROOT/land-work-logs.XXXXXX")" ++SCRATCH="$(mktemp -d "$TMP_ROOT/land-work.XXXXXX")" ++# Lowercase digits and a dash: Compose names a network

_default as is. ++WT_NAME="lw-$$-$(date -u +%s)" ++WT="" ++TARGET="" ++cleanup() { ++ local rc=$? ++ if [ -n "$WT" ]; then ++ [ -L "$WT/node_modules" ] && rm -f "$WT/node_modules" ++ git -C "$TARGET" worktree remove --force "$WT" >/dev/null 2>&1 || rm -rf "$WT" ++ git -C "$TARGET" worktree prune >/dev/null 2>&1 || true ++ fi ++ if command -v docker >/dev/null 2>&1 && docker network inspect "${WT_NAME}_default" >/dev/null 2>&1; then ++ docker network rm "${WT_NAME}_default" >/dev/null 2>&1 || echo "land-work: could not remove Docker network ${WT_NAME}_default" >&2 ++ fi ++ rm -rf "$SCRATCH" ++ rmdir "$LOGS" 2>/dev/null || true ++ exit "$rc" ++} ++trap cleanup EXIT ++ ++# ---- configuration: data root, business, project ---- ++DATA_ROOT="$(node "$REPO/scripts/mosaic-config.mjs" validate | node -e 'let d="";process.stdin.on("data",c=>d+=c).on("end",()=>console.log(JSON.parse(d).dataRoot))')" \ ++ || fail "system config is missing or invalid" 3 ++CONFIG_DIR="$(dirname "${MOSAIC_CONFIG:-$HOME/.config/mosaic-dev/config.json}")" ++if [ -z "$BUSINESS" ]; then ++ shopt -s nullglob ++ files=("$CONFIG_DIR"/businesses/*.json) ++ shopt -u nullglob ++ [ "${#files[@]}" -eq 1 ] || fail "name the business with --business (${#files[@]} business files)" 4 ++ BUSINESS="$(basename "${files[0]}" .json)" ++fi ++BUSINESS_FILE="$CONFIG_DIR/businesses/$BUSINESS.json" ++[ -f "$BUSINESS_FILE" ] || fail "no business file: $BUSINESS_FILE" 3 ++ ++# ---- the decision and the verdict, read-only from the bus ---- ++READ_RC=0 ++node "$SCRIPT_DIR/land-work/read.mjs" "$DATA_ROOT" "$BUSINESS_FILE" "$DECISION" "$BASE" > "$SCRATCH/read.txt" || READ_RC=$? ++value() { awk -F'\t' -v k="$1" '$1 == k { sub(/^[^\t]*\t/, ""); print; exit }' "$SCRATCH/read.txt"; } ++if [ "$READ_RC" -eq 2 ] && grep -q '^refuse' "$SCRATCH/read.txt"; then ++ line="$(value refuse)" ++ refuse "${line%% *}" "${line#* }" ++fi ++[ "$READ_RC" -eq 0 ] || fail "could not read the decision from the bus (exit $READ_RC)" "$READ_RC" ++TASK_REF="$(value task_ref)" ++WORK_REF="$(value work_ref)" ++C="$(value commit)" ++VERDICT="$(value verdict)" ++CHOICE="$(value choice)" ++RESOLVED_BY="$(value by)" ++RESOLVED_AT="$(value resolved_at)" ++[ -n "$SUBJECT" ] || SUBJECT="$(value subject)" ++[ -n "$SUBJECT" ] || fail "the decision gives no subject; pass --subject" 4 ++[ -n "$PROJECT" ] || PROJECT="$(value project)" ++ ++# ---- the project's repository and the working repository ---- ++PROJECT_ROOT="$(node -e ' ++const b = JSON.parse(require("fs").readFileSync(process.argv[1], "utf8")); ++const ids = Object.keys(b.projects ?? {}); ++const p = process.argv[2] || (ids.length === 1 ? ids[0] : ""); ++if (!p || !b.projects?.[p]?.root) process.exit(3); ++console.log(`${p}\t${b.projects[p].root}`); ++' "$BUSINESS_FILE" "$PROJECT")" || fail "name the project with --project; the decision names none that $BUSINESS has" 4 ++PROJECT="${PROJECT_ROOT%% *}" ++TARGET="${PROJECT_ROOT#* }" ++[ -d "$TARGET/.git" ] || [ -f "$TARGET/.git" ] || fail "project root is not a git checkout: $TARGET" 4 ++WORKING="$DATA_ROOT/working/$BUSINESS/$PROJECT.git" ++[ -d "$WORKING" ] || fail "no working repository: $WORKING" 4 ++ ++# The working repository holds what sessions sent: no hooks, no fsmonitor, ++# file transport only, as packages/seat/src/working.mjs runs it. ++wgit() { git -c core.hooksPath=/dev/null -c core.fsmonitor=false -c protocol.allow=never -c protocol.file.allow=always -C "$WORKING" "$@"; } ++# A diff in one fixed format, whatever the user's diff config says. ++pdiff() { git -c diff.noprefix=false -c diff.mnemonicPrefix=false -C "$1" diff --no-ext-diff --no-textconv --no-color --binary --no-renames "${@:2}"; } ++ ++AT="$(wgit rev-parse --verify -q "refs/heads/$WORK_REF^{commit}" || true)" ++[ "$AT" = "$C" ] || refuse ref-moved "$WORK_REF is at ${AT:-nothing}, the verdict approved $C" ++ ++OLD="$(git -C "$TARGET" rev-parse --verify -q "refs/heads/$BASE^{commit}")" || fail "no branch $BASE in $TARGET" 4 ++# Objects only: no refspec destination and no FETCH_HEAD, so no ref moves. ++git -c protocol.allow=never -c protocol.file.allow=always -c transfer.fsckObjects=true \ ++ -c maintenance.auto=false -c gc.auto=0 -C "$TARGET" \ ++ fetch -q --no-tags --no-write-fetch-head "$WORKING" "refs/heads/$WORK_REF" \ ++ || fail "could not fetch $WORK_REF from $WORKING" ++git -C "$TARGET" cat-file -e "$C^{commit}" 2>/dev/null || fail "the fetch did not bring $C" ++ ++# ---- the reviewed diff ---- ++MB="$(git -C "$TARGET" merge-base "$OLD" "$C")" || refuse base-conflict "$C shares no history with $BASE" ++pdiff "$TARGET" "$MB" "$C" > "$SCRATCH/reviewed.patch" ++[ -s "$SCRATCH/reviewed.patch" ] || refuse base-conflict "the reviewed diff $MB..$C is empty" ++REVIEWED_ID="$(git -C "$TARGET" patch-id --stable < "$SCRATCH/reviewed.patch" | cut -d' ' -f1)" ++ ++# Invariant 1: nothing new at the root. A top-level file, a top-level ++# directory the base doesn't have, and the legacy src/ and archived v1/ ++# trees all count as the root. ++mapfile -d '' -t ADDED < <(git -C "$TARGET" diff -z --no-renames --name-only --diff-filter=A "$MB" "$C") ++mapfile -d '' -t TOP < <(git -C "$TARGET" ls-tree -z --name-only "$OLD") ++ROOT_HITS="" ++for f in "${ADDED[@]}"; do ++ case "$f" in ++ */*) top="${f%%/*}" ;; ++ *) ROOT_HITS="$ROOT_HITS $f"; continue ;; ++ esac ++ known="no" ++ for t in "${TOP[@]}"; do [ "$t" = "$top" ] && known="yes" && break; done ++ if [ "$known" = "no" ] || [ "$top" = "src" ] || [ "$top" = "v1" ]; then ROOT_HITS="$ROOT_HITS $f"; fi ++done ++[ -z "$ROOT_HITS" ] || refuse root-file "the reviewed diff adds$ROOT_HITS" ++ ++mapfile -d '' -t PATHS < <(git -C "$TARGET" diff -z --no-renames --name-only "$MB" "$C") ++# Paths go to git as they are, never as globs or pathspec magic. ++lgit() { git --literal-pathspecs -C "$@"; } ++ ++# Where the base is checked out, the reviewed paths there must be clean: the ++# landing rewrites them to the new commit. ++CHECKOUT="$(git -C "$TARGET" worktree list --porcelain | awk -v b="branch refs/heads/$BASE" '/^worktree /{w=substr($0,10)} $0==b{print w; exit}')" ++checkout_clean() { ++ [ -n "$CHECKOUT" ] || return 0 ++ local dirty="" ++ lgit "$CHECKOUT" diff --quiet HEAD -- "${PATHS[@]}" || dirty="changed" ++ lgit "$CHECKOUT" diff --cached --quiet HEAD -- "${PATHS[@]}" || dirty="staged" ++ for f in "${PATHS[@]}"; do ++ if ! git -C "$CHECKOUT" cat-file -e "HEAD:$f" 2>/dev/null && [ -e "$CHECKOUT/$f" ]; then dirty="untracked $f"; fi ++ done ++ [ -z "$dirty" ] || refuse checkout-dirty "$BASE is checked out at $CHECKOUT with a $dirty reviewed path" ++} ++checkout_clean ++ ++# ---- the squash, in a detached worktree on the base ---- ++WT="$SCRATCH/$WT_NAME" ++git -C "$TARGET" worktree add -q --detach "$WT" "$OLD" || fail "could not add a worktree at $WT" ++git -C "$WT" apply --index "$SCRATCH/reviewed.patch" 2> "$SCRATCH/apply.err" \ ++ || refuse base-conflict "$(tail -n1 "$SCRATCH/apply.err")" ++APPLIED_ID="$(pdiff "$WT" --cached "$OLD" | git -C "$WT" patch-id --stable | cut -d' ' -f1)" ++[ "$APPLIED_ID" = "$REVIEWED_ID" ] || refuse patch-drift "applied ${APPLIED_ID:-none}, reviewed $REVIEWED_ID" ++ ++# ---- the gate ---- ++echo "land-work: gate logs in $LOGS" >&2 ++# The full gate, as Sage's landing gate template runs it. There is no switch ++# to shorten or skip it. ++[ -d "$TARGET/node_modules" ] || fail "no node_modules in $TARGET for the gate" 4 ++ln -s "$TARGET/node_modules" "$WT/node_modules" ++gate_step() { # name dir command ++ local rc=0 ++ (cd "$WT/$2" && bash -c "set -o pipefail; $3") > "$LOGS/$1.log" 2>&1 || rc=$? ++ echo "$1 rc=$rc $(grep -E '^ℹ (pass|fail) [0-9]+' "$LOGS/$1.log" | tr '\n' ' ')" | tee -a "$LOGS/gate.log" >&2 ++ [ "$rc" -eq 0 ] || refuse gate-failed "$1, see $LOGS/$1.log" ++} ++# No pkg-queue step: scripts/test-queue.sh runs packages/queue/tests/ itself. ++for d in "$WT"/packages/*/; do ++ p="$(basename "$d")" ++ [ -d "$d/tests" ] || continue ++ [ "$p" = queue ] && continue ++ gate_step "pkg-$p" "packages/$p" 'node --test tests/*.test.mjs' ++done ++for s in "$WT"/scripts/test-*.sh; do ++ [ -f "$s" ] || continue ++ n="$(basename "$s" .sh)" ++ gate_step "script-${n#test-}" . "bash scripts/$n.sh" ++done ++echo "GATE_PASSED" | tee -a "$LOGS/gate.log" >&2 ++ ++# ---- the commit ---- ++SHORT_ID="${REVIEWED_ID:0:12}" ++cat > "$SCRATCH/message" </dev/null \ ++ || refuse base-moved "$BASE is no longer at $OLD; nothing was written" ++if [ -n "$CHECKOUT" ]; then ++ # HEAD is now NEW there: take the reviewed paths' index entries and files from it. ++ lgit "$CHECKOUT" reset -q -- "${PATHS[@]}" ++ for f in "${PATHS[@]}"; do ++ if git -C "$CHECKOUT" cat-file -e "HEAD:$f" 2>/dev/null; then ++ lgit "$CHECKOUT" checkout -q -- "$f" ++ else ++ rm -f "$CHECKOUT/$f" ++ fi ++ done ++fi ++echo "land-work: committed $NEW on $BASE (parent $OLD), patch-id $SHORT_ID. NOT pushed - push remains an explicit act." ++echo "$WORK_REF ($TASK_REF) is merged to $BASE as ${NEW:0:9}; push pending." +diff --git a/scripts/land-work/fixture.mjs b/scripts/land-work/fixture.mjs +new file mode 100644 +index 000000000..d7288a343 +--- /dev/null ++++ b/scripts/land-work/fixture.mjs +@@ -0,0 +1,57 @@ ++#!/usr/bin/env node ++// Test fixture for land-work (row 116, #1610): writes rows into a bus ++// database through the real Store, so the schema and its digest are the ++// Store's own and land-work's read check passes. ++// ++// node scripts/land-work/fixture.mjs ++// ++// rows.json is an array of { "table": "decisions" | "decision_events" | ++// "events", ...columns }. Rows go in in array order, in one transaction. ++// Object values (body, options) are stored as JSON text. A missing `at` is ++// now, a missing events or decisions `id` is a fresh UUID, and decisions ++// default to the shape a PM's merge raise has. The data root is made if ++// missing. Tests only: the Store's writer lock refuses a database that ++// already has a writer. ++import { readFileSync, mkdirSync } from 'node:fs'; ++import { randomUUID } from 'node:crypto'; ++import { pathToFileURL } from 'node:url'; ++import { Store } from '../../packages/bus/src/store.mjs'; ++ ++const TABLES = { ++ decisions: ['seq', 'id', 'at', 'business', 'project', 'raised_by_role', 'raised_by_run', 'class', 'action', ++ 'route_to', 'question', 'options', 'recommendation', 'task_ref', 'requirement_ref', 'blocking', 'supersedes'], ++ decision_events: ['seq', 'decision', 'at', 'op', 'by', 'choice', 'note', 'via'], ++ events: ['seq', 'id', 'at', 'business', 'kind', 'actor_role', 'actor_run', 'subject', 'corrects', 'body'], ++}; ++const DEFAULTS = { ++ decisions: { raised_by_role: 'pm', raised_by_run: 'rfixture', class: 'gated', route_to: 'human', ++ recommendation: 'yes', blocking: 0 }, ++ decision_events: {}, ++ events: {}, ++}; ++ ++export function writeRows(dataRoot, rows) { ++ mkdirSync(dataRoot, { recursive: true, mode: 0o700 }); ++ const store = new Store(dataRoot); ++ try { ++ store.transaction(() => { ++ for (const row of rows) { ++ const columns = TABLES[row.table]; ++ if (!columns) throw Error(`unknown table ${row.table}`); ++ const r = { ...DEFAULTS[row.table], ...row }; ++ r.at ??= new Date().toISOString(); ++ if (row.table !== 'decision_events') r.id ??= randomUUID(); ++ const used = columns.filter((c) => r[c] !== undefined); ++ const values = used.map((c) => (r[c] !== null && typeof r[c] === 'object' ? JSON.stringify(r[c]) : r[c])); ++ store.run(`INSERT INTO ${row.table} (${used.join(',')}) VALUES (${used.map(() => '?').join(',')})`, ...values); ++ } ++ }); ++ } finally { ++ store.close(); ++ } ++} ++ ++if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) { ++ const [dataRoot, file] = process.argv.slice(2); ++ writeRows(dataRoot, JSON.parse(readFileSync(file, 'utf8'))); ++} +diff --git a/scripts/land-work/read.mjs b/scripts/land-work/read.mjs +new file mode 100644 +index 000000000..495a069eb +--- /dev/null ++++ b/scripts/land-work/read.mjs +@@ -0,0 +1,224 @@ ++#!/usr/bin/env node ++// land-work's read of the bus (row 116, #1610). Every query land-work runs ++// against bus.sqlite is in this file, and every one is a SELECT. ++// ++// node scripts/land-work/read.mjs ++// ++// It opens /bus/bus.sqlite with readOnly: true and checks the ++// schema the way the Store does before reading anything. Output is one ++// "keyvalue" line per fact land-work needs, or one ++// "refusereasondetail" line and exit 2. A missing or unsafe ++// database or business file exits 3. ++// ++// Kept in step with packages/bus/src/store.mjs, which this imports from: ++// the schema_version literal '3b' below is a copy of the Store's. A schema ++// bump changes it there, and until it changes here every read refuses ++// bus-schema. ++import { DatabaseSync } from 'node:sqlite'; ++import { readFileSync, lstatSync } from 'node:fs'; ++import { join } from 'node:path'; ++import { pathToFileURL } from 'node:url'; ++import { createHash } from 'node:crypto'; ++import { schemaDigest, SCHEMA_SHA256 } from '../../packages/bus/src/store.mjs'; ++ ++const SCHEMA_VERSION = '3b'; ++const MERGE = 'git.merge.protected'; ++const WORK_REF = /^work\/vikunja-([1-9][0-9]*)-([1-9][0-9]*)$/; ++const ANY_WORK_REF = /\bwork\/[A-Za-z0-9._/-]*[A-Za-z0-9_]/g; ++const OID = /^[0-9a-f]{40}([0-9a-f]{24})?$/; ++ ++class Refusal extends Error { ++ constructor(reason, detail) { ++ super(detail); ++ this.reason = reason; ++ } ++} ++const refuse = (reason, detail) => { ++ throw new Refusal(reason, detail); ++}; ++const json = (text) => { ++ try { ++ return JSON.parse(text); ++ } catch { ++ return null; ++ } ++}; ++ ++export function openBus(dataRoot) { ++ const path = join(dataRoot, 'bus', 'bus.sqlite'); ++ let s; ++ try { ++ s = lstatSync(path); ++ } catch { ++ throw Object.assign(new Error(`no bus database at ${path}`), { exit: 3 }); ++ } ++ if (s.isSymbolicLink() || !s.isFile() || s.uid !== process.getuid()) ++ throw Object.assign(new Error(`unsafe bus database ${path}`), { exit: 3 }); ++ const db = new DatabaseSync(path, { readOnly: true, timeout: 5000 }); ++ try { ++ checkSchema(db); ++ } catch (e) { ++ db.close(); ++ throw e; ++ } ++ return db; ++} ++ ++// The Store's own open check (store.mjs), against a reference built from the ++// same schema.sql the import has already verified against SCHEMA_SHA256. ++export function checkSchema(db) { ++ const ddl = readFileSync(new URL('../../packages/bus/schema.sql', import.meta.url), 'utf8'); ++ if (createHash('sha256').update(ddl).digest('hex') !== SCHEMA_SHA256) ++ refuse('bus-schema', 'packages/bus/schema.sql does not match SCHEMA_SHA256'); ++ const reference = new DatabaseSync(':memory:'); ++ reference.exec(ddl); ++ const expected = schemaDigest(reference); ++ reference.close(); ++ const meta = (key) => db.prepare('SELECT value FROM meta WHERE key = ?').get(key)?.value; ++ let digest; ++ try { ++ digest = schemaDigest(db); ++ } catch (e) { ++ refuse('bus-schema', `cannot read the schema: ${e.message}`); ++ } ++ if (digest !== expected) refuse('bus-schema', `schema digest ${digest.slice(0, 12)}, the store expects ${expected.slice(0, 12)}`); ++ if (meta('schema_version') !== SCHEMA_VERSION || meta('schema_digest') !== expected) ++ refuse('bus-schema', `meta says version ${meta('schema_version')}, digest ${String(meta('schema_digest')).slice(0, 12)}`); ++} ++ ++// The queries. Each takes the business so one bus can't answer for another. ++const queries = { ++ decision: (db, b, id) => db.prepare('SELECT * FROM decisions WHERE business = ? AND id = ?').get(b, id), ++ raise: (db, b, id) => ++ db ++ .prepare( ++ `SELECT * FROM events WHERE business = ? AND kind = 'action.allowed' AND subject = ? ++ AND json_extract(body, '$.operation') = 'decision.raise' AND json_extract(body, '$.decision') = ? ++ ORDER BY seq`, ++ ) ++ .all(b, id, id), ++ closes: (db, id) => ++ db ++ .prepare( ++ `SELECT * FROM decision_events WHERE decision = ? AND op IN ('resolved','withdrawn','expired') ORDER BY seq`, ++ ) ++ .all(id), ++ answer: (db, b, id) => ++ db ++ .prepare( ++ `SELECT * FROM events WHERE business = ? AND kind = 'human.input' AND subject = ? ++ AND json_extract(body, '$.kind') = 'answer' AND json_extract(body, '$.decision') = ? ++ AND json_extract(body, '$.op') = 'resolved' ++ ORDER BY seq`, ++ ) ++ .all(b, id, id), ++ later: (db, b, d) => ++ db ++ .prepare( ++ `SELECT * FROM decisions WHERE business = ? AND id <> ? ++ AND (supersedes = ? OR (seq > ? AND action = ?)) ORDER BY seq`, ++ ) ++ .all(b, d.id, d.id, d.seq, MERGE), ++ verdict: (db, b, task) => ++ db ++ .prepare(`SELECT * FROM events WHERE business = ? AND kind = 'review.verdict' AND subject = ? ORDER BY seq DESC LIMIT 1`) ++ .get(b, task), ++}; ++ ++export function readLanding(db, business, id, base) { ++ const b = business.id; ++ const d = queries.decision(db, b, id); ++ const raises = queries.raise(db, b, id); ++ if (!d || raises.length !== 1) refuse('decision-not-found', `no decision ${id} with one raise in business ${b}`); ++ const raise = json(raises[0].body) ?? {}; ++ if (d.action !== MERGE || raise.action !== MERGE) refuse('not-a-merge', `action ${d.action}`); ++ ++ const closes = queries.closes(db, id); ++ if (closes.length !== 1 || closes[0].op !== 'resolved') ++ refuse('not-resolved', closes.length ? closes.map((r) => r.op).join(',') : 'open'); ++ const res = closes[0]; ++ const answers = queries.answer(db, b, id); ++ const answer = answers.length === 1 ? answers[0] : null; ++ if ( ++ res.by !== business.human || ++ res.via !== 'cli' || ++ !answer || ++ answer.actor_role !== null || ++ answer.actor_run !== null || ++ json(answer.body)?.choice !== res.choice ++ ) ++ refuse('not-human', `resolved by ${res.by} via ${res.via}, ${answers.length} human answer(s)`); ++ const options = json(d.options) ?? []; ++ const merge = options.find((o) => o?.key === raise.approvalChoice); ++ if (!raise.approvalChoice || !merge) refuse('not-merge-option', 'the raise names no approval option'); ++ if (res.choice !== raise.approvalChoice) ++ refuse('not-merge-option', `chose ${res.choice}, the merge option is ${raise.approvalChoice}`); ++ ++ // The work ref comes from the question: decisions don't carry it. ++ const named = [...new Set(d.question.match(ANY_WORK_REF) ?? [])]; ++ const m = named.length === 1 ? WORK_REF.exec(named[0]) : null; ++ if (!m) refuse('work-ref', `the question names ${named.join(', ') || 'no work ref'}`); ++ const workRef = named[0]; ++ const task = `vikunja:${m[1]}/${m[2]}`; ++ for (const ref of [d.task_ref, raise.task_ref]) ++ if (ref != null && ref !== task) refuse('work-ref', `the decision cites ${ref}, the question ${workRef}`); ++ ++ // The target is the raise's, and only refactor ever lands. ++ if (raise.target !== 'refactor' || raise.target !== base) ++ refuse('target-branch', `the raise targets ${raise.target}, the base is ${base}`); ++ ++ const later = queries.later(db, b, d).filter( ++ (r) => r.supersedes === id || r.task_ref === task || (r.question.match(ANY_WORK_REF) ?? []).includes(workRef), ++ ); ++ if (later.length) refuse('superseded', `later decision ${later.map((r) => r.id).join(', ')} on ${workRef}`); ++ ++ const v = queries.verdict(db, b, task); ++ if (!v) refuse('no-verdict', `no review.verdict for ${task}`); ++ const vb = json(v.body) ?? {}; ++ if (vb.verdict !== 'approve' || vb.task_ref !== task || !OID.test(vb.commit ?? '')) ++ refuse('not-approved', `latest verdict ${v.id} is ${vb.verdict} on ${vb.commit}`); ++ ++ return { ++ task_ref: task, ++ work_ref: workRef, ++ commit: vb.commit, ++ verdict: v.id, ++ project: d.project ?? '', ++ choice: res.choice, ++ by: res.by, ++ resolved_at: res.at, ++ subject: String(merge.text ?? '').split('\n')[0].trim(), ++ }; ++} ++ ++function main([dataRoot, businessFile, id, base]) { ++ const out = (k, v) => process.stdout.write(`${k}\t${String(v ?? '').replace(/[\t\n\r]/g, ' ')}\n`); ++ let business; ++ try { ++ business = JSON.parse(readFileSync(businessFile, 'utf8')); ++ } catch (e) { ++ process.stderr.write(`land-work: cannot read the business file ${businessFile}: ${e.message}\n`); ++ return 3; ++ } ++ if (typeof business?.id !== 'string' || typeof business?.human !== 'string' || !business.human) { ++ process.stderr.write(`land-work: ${businessFile} names no business id and human\n`); ++ return 3; ++ } ++ let db; ++ try { ++ db = openBus(dataRoot); ++ for (const [k, v] of Object.entries(readLanding(db, business, id, base))) out(k, v); ++ return 0; ++ } catch (e) { ++ if (e instanceof Refusal) { ++ out('refuse', `${e.reason}\t${e.message}`); ++ return 2; ++ } ++ process.stderr.write(`land-work: ${e.message}\n`); ++ return e.exit ?? 1; ++ } finally { ++ db?.close(); ++ } ++} ++ ++if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) process.exitCode = main(process.argv.slice(2)); +diff --git a/scripts/test-land-work.sh b/scripts/test-land-work.sh +new file mode 100644 +index 000000000..1bfe402db +--- /dev/null ++++ b/scripts/test-land-work.sh +@@ -0,0 +1,404 @@ ++#!/usr/bin/env bash ++# Sandboxed selftests for scripts/land-work.sh (row 116, #1610). ++# ++# Builds a fixture project repository, a working repository holding the ++# coder's work refs, and per case a bus database written through the real ++# Store (scripts/land-work/fixture.mjs). Every refusal is exercised, then a ++# landing, a dry run, a gate failure and a base that moves during the gate. ++# Docker is a fake on PATH that logs its calls. Nothing here opens the real ++# config, data root or bus: MOSAIC_CONFIG always names a sandbox file. ++set -uo pipefail ++cd "$(dirname "$0")/.." ++REPO="$(pwd)" ++ ++SANDBOX="$(cd "$(mktemp -d)" && pwd -P)" ++trap 'rm -rf "$SANDBOX"' EXIT ++ ++PASS=0 ++FAIL=0 ++# Status colors: terminal-only, NO_COLOR-respecting; plain when piped. ++if [ -t 1 ] && [ -z "${NO_COLOR:-}" ]; then ++ C_OK=$'\033[0;32m'; C_FAIL=$'\033[0;31m'; C_RESET=$'\033[0m' ++else ++ C_OK=""; C_FAIL=""; C_RESET="" ++fi ++check() { ++ if [ "$2" = "0" ]; then PASS=$((PASS+1)); echo "${C_OK}OK${C_RESET} $1"; else FAIL=$((FAIL+1)); echo "${C_FAIL}FAIL${C_RESET} $1"; fi ++} ++ ++# Git sees no user or system config: no hooks path, no signing, a fixed identity. ++: > "$SANDBOX/gitconfig" ++export GIT_CONFIG_NOSYSTEM=1 GIT_CONFIG_GLOBAL="$SANDBOX/gitconfig" ++export GIT_AUTHOR_NAME=suite GIT_AUTHOR_EMAIL=suite@local GIT_COMMITTER_NAME=suite GIT_COMMITTER_EMAIL=suite@local ++REAL_GIT="$(command -v git)" ++ ++# ---- fakes: docker logs its calls; a git that tampers with the applied diff ---- ++mkdir -p "$SANDBOX/bin" "$SANDBOX/tamper" ++cat > "$SANDBOX/bin/docker" <> "$SANDBOX/docker.log" ++[ "\$1 \$2" != "network inspect" ] || [ "\${FAKE_NET_EXISTS:-}" = 1 ] ++EOF ++cat > "$SANDBOX/tamper/git" <> "\$2/README.md" && "$REAL_GIT" -C "\$2" add README.md ++fi ++exit "\$rc" ++EOF ++chmod +x "$SANDBOX/bin/docker" "$SANDBOX/tamper/git" ++ ++# ---- the project repository at the review's merge base ---- ++P="$SANDBOX/proto" ++T="$P/target" ++git init -q -b refactor "$T" ++printf 'line1\nline2\nline3\n' > "$T/README.md" ++mkdir -p "$T/packages/demo/tests" "$T/packages/queue/tests" "$T/scripts" "$T/src" ++cat > "$T/packages/demo/tests/demo.test.mjs" <<'EOF' ++import test from 'node:test'; ++import assert from 'node:assert/strict'; ++test('demo', () => assert.notEqual(process.env.LW_FAIL, 'pkg')); ++EOF ++cat > "$T/packages/queue/tests/never.test.mjs" <<'EOF' ++import test from 'node:test'; ++test('the gate runs no pkg-queue step', () => { throw new Error('pkg-queue ran'); }); ++EOF ++cat > "$T/scripts/test-demo.sh" <<'EOF' ++#!/usr/bin/env bash ++[ "${LW_FAIL:-}" != script ] || exit 1 ++[ -z "${LW_DIRTY:-}" ] || echo "during the gate" >> "$LW_DIRTY" ++if [ -n "${LW_MOVE_BASE:-}" ]; then ++ moved="$(git -C "$LW_MOVE_BASE" commit-tree "refactor^{tree}" -p refactor -m moved)" \ ++ && git -C "$LW_MOVE_BASE" update-ref refs/heads/refactor "$moved" ++fi ++echo "ℹ pass 1" ++EOF ++echo 'echo legacy' > "$T/src/legacy.sh" ++echo node_modules > "$T/.gitignore" ++git -C "$T" add -A && git -C "$T" commit -q -m base ++MB="$(git -C "$T" rev-parse HEAD)" ++ ++# ---- the coder's commits, pushed to the working repository ---- ++git clone -q "$T" "$P/coder" ++CO="$P/coder" ++commit_on() { # message: commit what's changed in the coder clone, print the id ++ git -C "$CO" add -A && git -C "$CO" commit -q -m "$1" && git -C "$CO" rev-parse HEAD ++} ++git -C "$CO" checkout -q -b w42 "$MB" ++printf 'line1\nline2 changed\nline3\n' > "$CO/README.md" ++echo feature > "$CO/packages/demo/feature.txt" ++W_OK="$(commit_on w42)" ++git -C "$CO" checkout -q -b w43 "$MB"; echo notes > "$CO/notes.txt" ++W_ROOT="$(commit_on w43)" ++git -C "$CO" checkout -q -b w44 "$MB"; mkdir "$CO/tools2"; echo x > "$CO/tools2/x.txt" ++W_NEWDIR="$(commit_on w44)" ++git -C "$CO" checkout -q -b w45 "$MB"; echo 'export {};' > "$CO/src/parse-requirement-id.mjs" ++W_SRC="$(commit_on w45)" ++git -C "$CO" checkout -q --orphan w46; git -C "$CO" rm -rfq .; echo o > "$CO/o.txt" ++W_ORPHAN="$(commit_on w46)" ++git init -q --bare "$P/working" ++for pair in "w42:42" "w43:43" "w44:44" "w45:45" "w46:46"; do ++ git -C "$CO" push -q "$P/working" "${pair%%:*}:refs/heads/work/vikunja-7-${pair#*:}" ++done ++git -C "$CO" push -q "$P/working" "$MB:refs/heads/work/vikunja-7-47" ++ ++# The base moves on after the review, on a path the work doesn't touch. ++echo docs > "$T/docs.txt" ++git -C "$T" add docs.txt && git -C "$T" commit -q -m "base moves" ++OLD="$(git -C "$T" rev-parse HEAD)" ++mkdir "$T/node_modules" ++echo canary > "$T/node_modules/canary" # cleanup must not empty the linked directory ++ ++# ---- bus rows: one decision and its verdicts, in the live rows' shape ---- ++D="d0000000-0000-4000-8000-000000000001" ++V="e0000000-0000-4000-8000-000000000002" ++cat > "$SANDBOX/gen.mjs" <<'EOF' ++const [variant, p, t, commit] = process.argv.slice(2); ++const D = 'd0000000-0000-4000-8000-000000000001'; ++const L = 'd0000000-0000-4000-8000-000000000009'; ++const MERGE = 'git.merge.protected'; ++const biz = variant === 'other-business' ? 'other' : 'fx'; ++const ref = `work/vikunja-${p}-${t}`; ++const task = `vikunja:${p}/${t}`; ++const action = variant === 'not-a-merge' ? 'git.push.protected' : MERGE; ++const question = ++ { ++ 'two-refs': `Squash-merge ${ref} and work/vikunja-7-99 into refactor?`, ++ 'bad-ref': 'Squash-merge work/feature-x into refactor?', ++ }[variant] ?? `Squash-merge ${ref} into refactor? It carries task ${p}/${t}, approved by the reviewer.`; ++const options = [ ++ { key: 'yes', text: `Squash-merge ${ref} into refactor` }, ++ { key: 'no', text: "Don't merge yet" }, ++]; ++const rows = [ ++ { ++ table: 'decisions', id: D, business: biz, project: null, action, question, options, ++ ...(variant === 'task-ref-disagrees' ? { task_ref: 'vikunja:7/99' } : {}), ++ }, ++]; ++// An earlier merge decision on the same ref, withdrawn before D was raised: ++// only a later one supersedes D. ++const E = 'd0000000-0000-4000-8000-000000000008'; ++if (variant === 'earlier-merge') { ++ rows.unshift({ table: 'decisions', id: E, business: biz, project: null, action: MERGE, task_ref: task, question, options }); ++ rows.push({ table: 'decision_events', decision: E, op: 'withdrawn', by: 'pm', choice: null, via: null }); ++} ++if (variant !== 'no-raise') ++ rows.push({ ++ table: 'events', business: biz, kind: 'action.allowed', actor_role: 'pm', actor_run: 'rfixture', subject: D, ++ body: { decision: D, action, operation: 'decision.raise', ++ task_ref: variant === 'raise-task-disagrees' ? 'vikunja:7/99' : null, ++ target: variant === 'target-main' ? 'main' : 'refactor', approvalChoice: 'yes', holderRun: null }, ++ }); ++const choice = variant === 'chose-no' ? 'no' : 'yes'; ++if (variant === 'withdrawn') rows.push({ table: 'decision_events', decision: D, op: 'withdrawn', by: 'pm', choice: null, via: null }); ++else if (variant !== 'open') { ++ rows.push({ table: 'decision_events', decision: D, op: 'resolved', by: variant === 'by-agent' ? 'pm' : 'jason', choice, ++ via: variant === 'via-webui' ? 'webui' : 'cli' }); ++ const answer = { ++ table: 'events', business: biz, kind: 'human.input', subject: D, ++ actor_role: variant === 'answer-role' ? 'pm' : null, actor_run: variant === 'answer-run' ? 'rfixture' : null, ++ body: { kind: 'answer', decision: D, op: 'resolved', choice: variant === 'answer-choice' ? 'no' : choice }, ++ }; ++ if (variant !== 'no-answer') rows.push(answer); ++ if (variant === 'two-answers') rows.push({ ...answer }); ++} ++const later = { ++ 'superseded-question': { action: MERGE, question: `Hold ${ref} back after all?` }, ++ 'superseded-task': { action: MERGE, task_ref: task, question: `Hold task ${p}/${t} back after all?` }, ++ 'superseded-by': { action: 'scope.change', supersedes: D, question: 'Replace the earlier merge decision' }, ++}[variant]; ++if (later) rows.push({ table: 'decisions', id: L, business: biz, project: null, options, ...later }); ++const verdict = (id, v, c, body = {}) => ({ ++ table: 'events', id, business: biz, kind: 'review.verdict', actor_role: 'reviewer', actor_run: 'rrev', subject: task, ++ body: { task_ref: task, request: 'f0000000-0000-4000-8000-000000000003', commit: c, verdict: v, message: 'fixture', ...body }, ++}); ++// An earlier changes verdict, as 19/265 had, so "latest" is what's read. ++if (variant !== 'no-verdict') { ++ rows.push(verdict('e0000000-0000-4000-8000-000000000001', 'changes', '1'.repeat(40))); ++ rows.push(verdict('e0000000-0000-4000-8000-000000000002', 'approve', variant === 'short-commit' ? commit.slice(0, 12) : commit, ++ variant === 'wrong-task-body' ? { task_ref: 'vikunja:7/99' } : {})); ++} ++if (variant === 'changes-later') rows.push(verdict('e0000000-0000-4000-8000-000000000004', 'changes', commit)); ++process.stdout.write(JSON.stringify(rows)); ++EOF ++ ++# ---- per case: a copy of the target and the working repository, and a bus ---- ++setup() { # name variant task commit ++ local c="$SANDBOX/c/$1" ++ mkdir -p "$c/businesses" "$c/tmp" "$c/data/working/fx" ++ chmod 700 "$c/data" ++ cp -a "$T" "$c/target" ++ cp -a "$P/working" "$c/data/working/fx/stack.git" ++ printf '{"configVersion":1,"environment":"development","dataRoot":"%s","execution":{"backend":"docker","provider":"zai","model":"m","adapter":"mock"}}\n' \ ++ "$c/data" > "$c/config.json" ++ printf '{"id":"fx","human":"jason","projects":{"stack":{"root":"%s"}}}\n' "$c/target" > "$c/businesses/fx.json" ++ node "$SANDBOX/gen.mjs" "$2" 7 "$3" "$4" > "$c/rows.json" \ ++ && node scripts/land-work/fixture.mjs "$c/data" "$c/rows.json" \ ++ || echo "setup failed for $1" >&2 ++} ++lw() { # name args... ++ local c="$SANDBOX/c/$1" ++ shift ++ MOSAIC_CONFIG="$c/config.json" TMPDIR="$c/tmp" PATH="${LW_PATH:+$LW_PATH:}$SANDBOX/bin:$PATH" \ ++ bash scripts/land-work.sh "$@" > "$c/out" 2> "$c/err" ++} ++expect() { # name rc reason args...: run land-work, check the exit and the refusal ++ local name="$1" want="$2" reason="$3" rc=0 ++ shift 3 ++ lw "$name" "$@" || rc=$? ++ if [ "$rc" -eq "$want" ] && { [ -z "$reason" ] || grep -q "refused: $reason\b" "$SANDBOX/c/$name/err"; }; then ++ PASS=$((PASS+1)); echo "${C_OK}OK${C_RESET} $name: exit $rc${reason:+, $reason}" ++ else ++ FAIL=$((FAIL+1)); echo "${C_FAIL}FAIL${C_RESET} $name: exit $rc, wanted $want${reason:+ $reason}: $(tail -n2 "$SANDBOX/c/$name/err" | tr '\n' ' ')" ++ fi ++} ++cleaned() { # name: one worktree left in the target, no scratch left in TMPDIR ++ local c="$SANDBOX/c/$1" ++ [ "$(git -C "$c/target" worktree list --porcelain | grep -c '^worktree ')" -eq 1 ] \ ++ && [ -z "$(find "$c/tmp" -maxdepth 1 -name 'land-work.*')" ] ++} ++ ++# ---- arguments and configuration ---- ++setup args ok 42 "$W_OK" ++expect args 2 target-branch "$D" --base next ++expect args 2 target-branch "$D" --base main ++expect args 4 "" "bad/../id" ++expect args 4 "" "$D" --unknown ++expect args 4 "" "$D" --subject $'two\nlines' ++rc=0; MOSAIC_CONFIG="$SANDBOX/missing.json" TMPDIR="$SANDBOX/c/args/tmp" bash scripts/land-work.sh "$D" --base next >/dev/null 2>&1 || rc=$? ++check "--base next refuses before the config is read (got $rc)" "$([ "$rc" -eq 2 ]; echo $?)" ++rc=0; MOSAIC_CONFIG="$SANDBOX/missing.json" TMPDIR="$SANDBOX/c/args/tmp" bash scripts/land-work.sh "$D" >/dev/null 2>&1 || rc=$? ++check "a missing system config exits 3 (got $rc)" "$([ "$rc" -eq 3 ]; echo $?)" ++mkdir -p "$SANDBOX/c/nobus/data/working/fx" "$SANDBOX/c/nobus/businesses" "$SANDBOX/c/nobus/tmp" ++chmod 700 "$SANDBOX/c/nobus/data" ++cp "$SANDBOX/c/args/businesses/fx.json" "$SANDBOX/c/nobus/businesses/" ++sed "s#$SANDBOX/c/args/data#$SANDBOX/c/nobus/data#" "$SANDBOX/c/args/config.json" > "$SANDBOX/c/nobus/config.json" ++expect nobus 3 "" "$D" ++ ++# ---- the bus database ---- ++setup schema-table ok 42 "$W_OK" ++node -e 'const {DatabaseSync}=require("node:sqlite"); const db=new DatabaseSync(process.argv[1]); db.exec("CREATE TABLE extra(x)"); db.close()' \ ++ "$SANDBOX/c/schema-table/data/bus/bus.sqlite" ++expect schema-table 2 bus-schema "$D" ++setup schema-meta ok 42 "$W_OK" ++# The same schema, so the digest matches, with meta saying another version. ++node -e ' ++const {DatabaseSync}=require("node:sqlite"); const db=new DatabaseSync(process.argv[1]); ++const sql=db.prepare("SELECT sql FROM sqlite_master WHERE name=?").get("meta_no_update").sql; ++db.exec("DROP TRIGGER meta_no_update"); db.exec("UPDATE meta SET value=\x273a\x27 WHERE key=\x27schema_version\x27"); db.exec(sql); db.close()' \ ++ "$SANDBOX/c/schema-meta/data/bus/bus.sqlite" ++expect schema-meta 2 bus-schema "$D" ++rc=0 ++node --input-type=module -e ' ++import { openBus } from "./scripts/land-work/read.mjs"; ++const db = openBus(process.argv[1]); ++try { db.exec("CREATE TABLE x(y)"); process.exit(1); } catch (e) { process.exit(/readonly/.test(e.message) ? 0 : 1); }' \ ++ "$SANDBOX/c/args/data" || rc=$? ++check "openBus opens the database read-only" "$rc" ++ ++# ---- the decision ---- ++for v in "decision-not-found:other-business" "decision-not-found:no-raise" "not-a-merge:not-a-merge" \ ++ "not-resolved:open" "not-resolved:withdrawn" "not-human:by-agent" "not-human:via-webui" \ ++ "not-human:no-answer" "not-human:answer-role" "not-human:answer-run" "not-human:answer-choice" \ ++ "not-human:two-answers" "not-merge-option:chose-no" "work-ref:two-refs" "work-ref:bad-ref" \ ++ "work-ref:task-ref-disagrees" "work-ref:raise-task-disagrees" "target-branch:target-main" "superseded:superseded-question" \ ++ "superseded:superseded-task" "superseded:superseded-by" "no-verdict:no-verdict" \ ++ "not-approved:changes-later" "not-approved:short-commit" "not-approved:wrong-task-body"; do ++ setup "${v#*:}" "${v#*:}" 42 "$W_OK" ++ expect "${v#*:}" 2 "${v%%:*}" "$D" ++done ++expect args 2 decision-not-found "d0000000-0000-4000-8000-00000000000f" ++# A withdrawn earlier merge decision on the same ref doesn't supersede D. ++setup earlier-merge earlier-merge 42 "$W_OK" ++expect earlier-merge 0 "" "$D" --dry-run ++ ++# ---- the work ref and the reviewed diff ---- ++setup ref-moved ok 42 "$W_OK" ++git -C "$SANDBOX/c/ref-moved/data/working/fx/stack.git" update-ref refs/heads/work/vikunja-7-42 "$W_ROOT" ++expect ref-moved 2 ref-moved "$D" ++setup root-top ok 43 "$W_ROOT" ++expect root-top 2 root-file "$D" ++setup root-newdir ok 44 "$W_NEWDIR" ++expect root-newdir 2 root-file "$D" ++setup root-src ok 45 "$W_SRC" ++expect root-src 2 root-file "$D" ++setup unrelated ok 46 "$W_ORPHAN" ++expect unrelated 2 base-conflict "$D" ++setup empty ok 47 "$MB" ++expect empty 2 base-conflict "$D" ++grep -q "is empty" "$SANDBOX/c/empty/err" ++check "an empty reviewed diff says so" "$?" ++ ++# The base is checked out in the target: a reviewed path there must be clean. ++setup dirty-changed ok 42 "$W_OK" ++echo local >> "$SANDBOX/c/dirty-changed/target/README.md" ++expect dirty-changed 2 checkout-dirty "$D" ++setup dirty-staged ok 42 "$W_OK" ++echo local >> "$SANDBOX/c/dirty-staged/target/README.md" ++git -C "$SANDBOX/c/dirty-staged/target" add README.md ++printf 'line1\nline2\nline3\n' > "$SANDBOX/c/dirty-staged/target/README.md" ++expect dirty-staged 2 checkout-dirty "$D" ++setup dirty-untracked ok 42 "$W_OK" ++echo local > "$SANDBOX/c/dirty-untracked/target/packages/demo/feature.txt" ++expect dirty-untracked 2 checkout-dirty "$D" ++ ++setup conflict ok 42 "$W_OK" ++printf 'line1\nline2 on the base\nline3\n' > "$SANDBOX/c/conflict/target/README.md" ++git -C "$SANDBOX/c/conflict/target" commit -q -am "base edits the reviewed line" ++expect conflict 2 base-conflict "$D" ++check "a refusal after the worktree is added leaves no worktree or scratch" "$(cleaned conflict; echo $?)" ++grep -q "network inspect lw-" "$SANDBOX/docker.log" 2>/dev/null ++check "cleanup looks for the worktree's Docker network" "$?" ++ ++setup dirty-during ok 42 "$W_OK" ++LW_DIRTY="$SANDBOX/c/dirty-during/target/README.md" expect dirty-during 2 checkout-dirty "$D" ++check "a reviewed path dirtied during the gate moves no ref" \ ++ "$([ "$(git -C "$SANDBOX/c/dirty-during/target" rev-parse refactor)" = "$OLD" ]; echo $?)" ++ ++setup drift ok 42 "$W_OK" ++LW_PATH="$SANDBOX/tamper" expect drift 2 patch-drift "$D" ++check "patch-drift leaves no worktree or scratch" "$(cleaned drift; echo $?)" ++ ++# ---- the gate ---- ++setup gate-pkg ok 42 "$W_OK" ++LW_FAIL=pkg expect gate-pkg 2 gate-failed "$D" ++log="$(sed -n 's/.*gate-failed: pkg-demo, see \(.*\)$/\1/p' "$SANDBOX/c/gate-pkg/err")" ++check "gate-failed names the failing step's log, and it exists" "$([ -n "$log" ] && [ -s "$log" ]; echo $?)" ++check "gate-failed leaves no worktree or scratch" "$(cleaned gate-pkg; echo $?)" ++setup gate-script ok 42 "$W_OK" ++LW_FAIL=script expect gate-script 2 gate-failed "$D" ++grep -q "gate-failed: script-demo" "$SANDBOX/c/gate-script/err" ++check "a failing scripts/test-*.sh fails the gate" "$?" ++check "a failed gate moves no ref" "$([ "$(git -C "$SANDBOX/c/gate-script/target" rev-parse refactor)" = "$OLD" ]; echo $?)" ++ ++setup nomods ok 42 "$W_OK" ++rm -rf "$SANDBOX/c/nomods/target/node_modules" ++expect nomods 4 "" "$D" ++check "a target without node_modules leaves no worktree or scratch" "$(cleaned nomods; echo $?)" ++ ++setup moved ok 42 "$W_OK" ++git -C "$SANDBOX/c/moved/target" checkout -q -b side ++LW_MOVE_BASE="$SANDBOX/c/moved/target" expect moved 2 base-moved "$D" ++check "base-moved keeps the base where it moved to" \ ++ "$([ "$(git -C "$SANDBOX/c/moved/target" log -1 --format=%s refactor)" = moved ]; echo $?)" ++ ++# ---- a dry run ---- ++setup dry ok 42 "$W_OK" ++before="$(git -C "$SANDBOX/c/dry/target" for-each-ref; git -C "$SANDBOX/c/dry/target" reflog refactor; git -C "$SANDBOX/c/dry/target" status --porcelain)" ++expect dry 0 "" "$D" --dry-run --subject "Custom subject" --attribution "Applied-under: suite (conductor)" ++after="$(git -C "$SANDBOX/c/dry/target" for-each-ref; git -C "$SANDBOX/c/dry/target" reflog refactor; git -C "$SANDBOX/c/dry/target" status --porcelain)" ++check "--dry-run writes no ref" "$([ "$before" = "$after" ]; echo $?)" ++grep -q "no ref was written" "$SANDBOX/c/dry/out" && grep -qx " Custom subject" "$SANDBOX/c/dry/out" \ ++ && grep -qx " Applied-under: suite (conductor)" "$SANDBOX/c/dry/out" ++check "--dry-run prints the commit with --subject and --attribution" "$?" ++grep -q "^GATE_PASSED" "$SANDBOX/c/dry/err" ++check "--dry-run runs the gate" "$?" ++check "--dry-run leaves no worktree or scratch" "$(cleaned dry; echo $?)" ++DRY_TREE="$(sed -n 's/.*would commit tree \([0-9a-f]*\) .*/\1/p' "$SANDBOX/c/dry/out")" ++ ++# ---- a landing ---- ++setup land ok 42 "$W_OK" ++L="$SANDBOX/c/land" ++echo "local edit" >> "$L/target/docs.txt" ++BUS_BEFORE="$(sha256sum "$L/data/bus/bus.sqlite")" ++: > "$SANDBOX/docker.log" ++FAKE_NET_EXISTS=1 expect land 0 "" "$D" ++NEW="$(git -C "$L/target" rev-parse refactor)" ++check "the landing is one commit on the old base" "$([ "$(git -C "$L/target" rev-parse "$NEW^")" = "$OLD" ]; echo $?)" ++pid() { git -C "$L/target" diff "$1" "$2" | git patch-id --stable | cut -d' ' -f1; } ++check "its diff is the reviewed diff by patch-id" "$([ "$(pid "$OLD" "$NEW")" = "$(pid "$MB" "$W_OK")" ]; echo $?)" ++check "its tree is the dry run's" "$([ -n "$DRY_TREE" ] && [ "$(git -C "$L/target" rev-parse "$NEW^{tree}")" = "$DRY_TREE" ]; echo $?)" ++msg="$(git -C "$L/target" log -1 --format=%B "$NEW")" ++PATCH_ID="$(pid "$MB" "$W_OK")" ++ok=0 ++[ "$(head -n1 <<<"$msg")" = "Squash-merge work/vikunja-7-42 into refactor" ] || ok=1 ++for line in "Decision: $D" "Verdict: $V" "Work-ref: work/vikunja-7-42" "Reviewed-commit: $W_OK" \ ++ "Base: refactor $OLD" "Patch-id: $PATCH_ID"; do ++ grep -qxF "$line" <<<"$msg" || ok=1 ++done ++[ "$(sed '/^$/d' <<<"$msg" | tail -n1)" = "Applied-under: scripts/land-work.sh (conductor)" ] || ok=1 ++check "the message has the option's subject, the citations and the attribution last" "$ok" ++check "it prints the line for the PM" \ ++ "$([ "$(tail -n1 "$L/out")" = "work/vikunja-7-42 (vikunja:7/42) is merged to refactor as ${NEW:0:9}; push pending." ]; echo $?)" ++check "the checked-out base has the reviewed paths and keeps the unrelated edit" \ ++ "$([ "$(git -C "$L/target" status --porcelain)" = " M docs.txt" ] && [ -f "$L/target/packages/demo/feature.txt" ]; echo $?)" ++check "only refs/heads/refactor exists in the target" \ ++ "$([ "$(git -C "$L/target" for-each-ref --format='%(refname)')" = refs/heads/refactor ]; echo $?)" ++check "the work ref is unchanged" \ ++ "$([ "$(git -C "$L/data/working/fx/stack.git" rev-parse refs/heads/work/vikunja-7-42)" = "$W_OK" ]; echo $?)" ++check "the bus database is unchanged" "$([ "$(sha256sum "$L/data/bus/bus.sqlite")" = "$BUS_BEFORE" ]; echo $?)" ++logs="$(sed -n 's/^land-work: gate logs in //p' "$L/err")" ++grep -q "^pkg-demo rc=0" "$logs/gate.log" && grep -q "^script-demo rc=0" "$logs/gate.log" \ ++ && grep -q "^GATE_PASSED" "$logs/gate.log" && ! grep -q "pkg-queue" "$logs/gate.log" ++check "the gate ran each package suite but queue, and each scripts/test-*.sh" "$?" ++check "the landing leaves no worktree or scratch" "$(cleaned land; echo $?)" ++check "the target's node_modules is still there, with its contents" \ ++ "$([ -d "$L/target/node_modules" ] && [ ! -L "$L/target/node_modules" ] && [ -f "$L/target/node_modules/canary" ]; echo $?)" ++grep -q "^docker network rm lw-[0-9]*-[0-9]*_default$" "$SANDBOX/docker.log" ++check "the worktree's Docker network is removed" "$?" ++ ++echo "---" ++echo "land-work selftests: $PASS passed, $FAIL failed" ++[ "$FAIL" -eq 0 ] diff --git a/agents/darkwing/work/queue-116/r2/candidate-manifest.sha256 b/agents/darkwing/work/queue-116/r2/candidate-manifest.sha256 new file mode 100644 index 000000000..5c5f8ad68 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/candidate-manifest.sha256 @@ -0,0 +1,6 @@ +388419cc58cdb267564402132ef92738bd4ac343026f5798b9194b91ec63834f scripts/land-work.sh +550b746de4e3d7778cd18a37b566034a8bc64e41e57c002fc0578a7a6ae26d9b scripts/land-work/read.mjs +cf5082cdcb835759e03211072affbf621c19c3845e35a1a73332932581f77c6b scripts/land-work/fixture.mjs +c088c6aea2eac0bfe23c3d5a547657ed44511cfc57933f95659961f83c332a20 scripts/test-land-work.sh +e9e0e7ed6f735bb16b0691be617913e4e04418246fd0a9ff133cf3cfb8fa9809 docs/TOOLS.md +5ff76c5e85c91ee99c22665343330deb8fe961cbe191006e71ca451fd5a92f69 docs/plans/CONDUCTOR.md diff --git a/agents/darkwing/work/queue-116/r2/gate-run.log b/agents/darkwing/work/queue-116/r2/gate-run.log new file mode 100644 index 000000000..03f75ff9c --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/gate-run.log @@ -0,0 +1,6 @@ +base 1223a0f37 start 19:10:48 +pkg-bus rc=0 ℹ pass 156 ℹ fail 0 | ℹ duration_ms 4360.260647 +script-land-work rc=0 | land-work selftests: 84 passed, 0 failed +script-conductor rc=0 | selftest: 17 passed, 0 failed +pkg-webui-pinned-copy rc=0 ℹ pass 10 ℹ fail 0 | ℹ duration_ms 3401.291402 +GATE_PASSED 19:11:12 diff --git a/agents/darkwing/work/queue-116/r2/gate.sh b/agents/darkwing/work/queue-116/r2/gate.sh new file mode 100755 index 000000000..44866683c --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/gate.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# Row 116 targeted builder gate (#271): the new suite, the bus package whose +# store.mjs read.mjs and fixture.mjs import, the conductor suite beside it, and +# webui's pinned-copy test. +set -o pipefail +G=~/darkwing-scratch/r116/wt +OUT=~/darkwing-scratch/r116/pkt/gate +mkdir -p "$OUT" +cd "$G" || exit 9 +[ -d "$G/node_modules" ] || { echo "STOP no node_modules in $G"; exit 8; } +echo "base $(git rev-parse --short HEAD) start $(date -u +%H:%M:%S)" +run() { local name="$1" dir="$2" cmd="$3" + (cd "$G/$dir" && TMPDIR=~/darkwing-scratch/r116/tmp bash -c "$cmd") > "$OUT/$name.log" 2>&1; local rc=$? + echo "$name rc=$rc $(grep -E '^ℹ (pass|fail) [0-9]+' "$OUT/$name.log" | tr '\n' ' ') | $(tail -n1 "$OUT/$name.log")" + [ $rc -eq 0 ] || { echo "STOP $name"; exit $rc; }; } +run pkg-bus packages/bus 'node --test tests/*.test.mjs' +run script-land-work . 'bash scripts/test-land-work.sh' +run script-conductor . 'bash scripts/test-conductor.sh' +# The one package test that walks a scripts directory. +run pkg-webui-pinned-copy packages/webui 'node --test tests/pinned-copy.test.mjs' +echo "GATE_PASSED $(date -u +%H:%M:%S)" diff --git a/agents/darkwing/work/queue-116/r2/gate/pkg-bus.log b/agents/darkwing/work/queue-116/r2/gate/pkg-bus.log new file mode 100644 index 000000000..e3cd01494 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/gate/pkg-bus.log @@ -0,0 +1,164 @@ +✔ agents: a held role with nothing on the bus is idle; a role session gets the claim rows unchanged (135.638114ms) +✔ agents: working counts what the holder received and has not read; routed alone is not working (199.506061ms) +✔ agents: input needed is the role's open decisions routed to the human, gated first, then oldest (327.076178ms) +✔ agents: working wins over waiting, and Input needed still shows (175.06978ms) +✔ agents: a new holder doesn't inherit what the last one left unread; decisions stay with the role (204.947571ms) +✔ agents: state reads only its own business, even for a run name both use (195.45327ms) +✔ agents: a message the holder released unread is stranded; the next holder gets nothing and cannot read it (211.75594ms) +✔ agents: a message the holder read is not stranded; one the current holder has not read is not listed (218.216128ms) +✔ agents: stranded is oldest first and capped at 50 for a role (907.512531ms) +✔ agents: stranded is per role and per business (313.511519ms) +✔ agents: a message routed to a held role and not yet received is not stranded (128.656691ms) +✔ launch identity is stamped, payload identity is refused and stale holder cannot send (154.810615ms) +✔ decision classes route from policy; gated resolution is human-only, choice and target must match (262.123883ms) +✔ claim exclusion, holder release, gated revoke and rerouting to a new holder are atomic (267.03247ms) +✔ launch events require a human CLI capability; generic emit cannot forge authority events (177.233373ms) +✔ within-role decisions close atomically and invalid options or blocking omissions refuse (172.97714ms) +✔ a recommendation that is not exactly one option key refuses invalid-recommendation after the options (280.426314ms) +✔ observer capabilities read human inbox but cannot mutate or forge launch identity (177.795696ms) +✔ task action subjects and linked decision trail are complete and ordered (204.22357ms) +✔ launch binding is durable and reconnecting requires the identical trusted record (120.301659ms) +✔ business isolation includes inherited object names and cross-business message references (205.24983ms) +✔ authority never transfers between action, run, target, unresolved or replaced role holder (292.568709ms) +✔ task projection uses schema current view, skipping earlier and equal-start polls (148.128212ms) +✔ revocation permanently bars the old run from reclaiming first, including after broker restart (225.849262ms) +✔ empty message references refuse before storage; refusal-evidence failure stays a typed error (132.184167ms) +✔ both arbiters require human resolution when their cross-role route is themselves (221.850743ms) +✔ the shipped coder role raises task.reassign as gated to the human; task.scope.change stays cross-role (159.401225ms) +✔ S1 adapter takes resolved limits and refs, rejects mismatched instance, never mutates input (2.940412ms) +✔ credentials gives human and reader sessions service, account, role, date and state, and nothing else (93.852523ms) +✔ credentials refuses a role session and any argument (170.689454ms) +✔ credentials reads the status on each request, and a broker without one lists none (229.094171ms) +✔ the broker process answers credentials without a token, path or variable in its output, log or store (181.38465ms) +✔ only validated broker references load; returned data and exceptions cannot expose a known token (4.126086ms) +✔ bad file modes, symlinks, repository/data paths, malformed tokens and missing dates refuse (8.726732ms) +✔ expiry refuses use and env references never become client data (0.870963ms) +✔ S1 parsed service refs work, service mismatch refuses, Gitea rotation due is a warning state (1.55059ms) +✔ opaque tokens shorter than 16 characters refuse before use (0.366361ms) +✔ a human resolve sends the raising role one message from the human, and its request is the answer (236.909351ms) +✔ a cross-role decision resolved by its arbiter comes from that role and run, with no request (236.048499ms) +✔ a human withdraw sends one message with the note (238.947178ms) +✔ a human seen before the close leaves the request on the close's answer, not the seen (281.284945ms) +✔ the raising run's withdraw, a supersede, a within-role raise and seen send nothing (289.804828ms) +✔ refused closes send nothing: invalid-choice, decision-closed, not-resolver (294.917477ms) +✔ a raising role nobody holds at the close gets the message on the next claim (278.92108ms) +✔ a human DECISION send keeps its own instruction as the request, not a close's answer (258.254581ms) +✔ roles lists open decisions routed to a role, and never the human inbox (222.935025ms) +✔ recent lists closed decisions of every route, newest close first, with how each closed (282.7242ms) +✔ recent gives the closing event as closed when the decision was seen first (289.524264ms) +✔ recent stops at RECENT rows (808.565974ms) +✔ every row is what trail already gives the same session for that id (272.967419ms) +✔ a role session can't list decisions, so it can't read another role's open decisions (432.792339ms) +✔ decisions is a read: one business, strict arguments, nothing written (383.928075ms) +✔ endLaunch writes session.ended, releases the run claim and kills its capabilities (122.174933ms) +✔ endLaunch refuses an unknown run, a second end and a rebind of the ended run (141.464391ms) +✔ a restarted broker refuses to rebind an ended run; a refused rebind leaves the run unbound (155.434721ms) +✔ endLaunch leaves a claim another run took alone (169.277953ms) +✔ refuse records action.refused against the caller with the code only (129.029668ms) +✔ launches off refuses role.launch with launch-revoked until launches on (185.007959ms) +✔ broker process: launch ops authorize role.launch, record refusals and end runs (263.023728ms) +✔ human proof binds CLI entry, process start and nonce; agents and incomplete ancestry refuse (2.601558ms) +✔ process reader gets own kernel identity without exposing environment values (0.661329ms) +✔ EACCES ancestor environments skip only markers; commands and registered launches still refuse (0.68019ms) +✔ real pid 1 remains inspectable when its environment is protected (0.332117ms) +✔ within-role sends cite an open gated launch decision without spending it or naming it in grants (182.057634ms) +✔ missing and foreign-business citations refuse and roll back message and grant (187.061513ms) +✔ cross-role sends still need a matching resolved decision and consume it once (245.991258ms) +✔ messages pages all human messages newest first without writes; read state is history (2615.302872ms) +✔ messages refuses role callers, invalid paging and cursors outside this human feed (235.8248ms) +✔ views messages passes only its paging arguments through (0.283888ms) +✔ messages isolates businesses even with a valid foreign cursor (167.731671ms) +✔ broker process binds trusted launches, offers reader capabilities, refuses human mutation, closes cleanly (179.529643ms) +✔ startup token refusal returns safe code without value or partial listening broker (38.220427ms) +✔ loaded fixture token is absent from socket replies and SQLite, including refusal evidence (171.036862ms) +✔ killed broker leaves an explicit stale lock; another process cannot silently reclaim it (162.707911ms) +✔ trusted host registers later launches; socket clients never have a registration verb (179.519861ms) +✔ runtime excludes declared project roots even when host supplies no repoRoots (35.73814ms) +✔ a refused launch binding leaves the broker and existing capabilities alive; bad protocol stops it (167.676704ms) +✔ a reply is listed for human and reader sessions, and its delivery rows are unchanged (219.213944ms) +✔ the reply still reaches the human message.receive (mosaic talk) after the Console showed it (201.118142ms) +✔ a message with no reply gives an empty list (164.387163ms) +✔ replies come oldest first and stop at REPLIES (750.879003ms) +✔ an id that names no message in the business refuses message-not-found, and the refusal is recorded (310.404402ms) +✔ strict arguments; a role session gets human-required (406.439459ms) +✔ views passes replies through as one call with the id (0.260516ms) +✔ requirements returns the committed list to a holding role session, and no one else (194.98166ms) +✔ the PM's prd.approve with no task, when no id fits, reaches the human's Inbox (165.428205ms) +✔ the PM's non-blocking role.revoke with no task reaches the human's Inbox (179.79737ms) +✔ a push is recorded as the action.allowed for git.push.working on the task, and only the host records one (224.707559ms) +✔ review.request names the latest pushed commit and sends the reviewer a REVIEW-REQUEST (252.724677ms) +✔ review.request says which run holds the reviewer role, or null, and a null request waits for a claim (290.332156ms) +✔ review.request refuses a commit that isn't the latest push, a non-reviewer and a role without the action (371.385733ms) +✔ reviewFetch answers only the addressed reviewer, for the request it cites (259.162714ms) +✔ review.verdict answers one request once, to the role that asked (318.384534ms) +✔ task.close on a pushed task needs an approve verdict for the latest push (386.448364ms) +✔ a refusal the host decided is filed on the task it names, and only a task ref counts (254.460529ms) +✔ v3b prototype refusals, views and append-only mutations (1050.003953ms) +✔ gated approval authorizes once, survives store reopen, and fresh approval works (259.790147ms) +✔ another run cannot consume an approval; a failed check leaves it usable (227.078387ms) +✔ two scheduled callers have exactly one grant and one consumed refusal (168.091014ms) +✔ failed commit rolls consumption back; cross-role consumes and within-role stays reusable (315.867693ms) +✔ class drift gated to cross-role refuses before consumption (232.048021ms) +✔ class drift cross-role to gated refuses before consumption (261.977642ms) +✔ class drift gated to within-role refuses before consumption (233.429699ms) +✔ class drift cross-role to within-role refuses before consumption (274.792912ms) +✔ class drift within-role to gated refuses before consumption (222.714178ms) +✔ class drift within-role to cross-role refuses before consumption (199.975512ms) +✔ message.send consumes approval and prevents a later send or authorize (229.827435ms) +✔ role.revoke consumes approval and prevents a later revoke or authorize (246.69895ms) +✔ a business that never switched launches reads allowed with no time and no event (127.065351ms) +✔ launches revoked and then restored read allowed, with the restore time and event id (159.35912ms) +✔ a task closed on the tracker leaves the open list, and total counts the open ones (158.798939ms) +✔ a tombstone is not open (139.022571ms) +✔ the open list stops at the cap and says so; total still counts every open task (147.81593ms) +✔ a role and a reader session read state; arguments, and an unbound cap, refuse (142.464997ms) +✔ a human session reads the same state, with the same cap (146.611986ms) +✔ reading state writes nothing: every table keeps its row count (160.5461ms) +✔ creates private WAL store and excludes a second writer until explicit close (132.187719ms) +✔ rollback is atomic and schema metadata is checked against trusted DDL, not just itself (174.181938ms) +✔ existing empty database and symlink runtime directory refuse, never initialize over damage (181.612345ms) +✔ crash during a transaction recovers no partial event after explicit fixture-only lock removal (177.529027ms) +✔ writer refuses mixed at/read_at forms atomically, even through trusted SQL helpers (110.770499ms) +✔ async transactions refuse before invoking their function (93.94068ms) +✔ the session default fits under the reply cap and pages to the end with next (279.437191ms) +✔ the short form: no description, assignees by role, every listed key (250.331988ms) +✔ each filter, alone and together, and total counts every match (327.751928ms) +✔ task_ref reads one task in full, as the whole board has it (295.310465ms) +✔ no arguments is the read the Console and mosaic make, unchanged (244.132092ms) +✔ an unknown argument or a bad value refuses invalid-request (986.304709ms) +✔ tasks rows carry priority and requirement for every session that reads tasks (303.781969ms) +✔ the read model rebuilds from the ledger: a reopened bus and each trail give the same values (347.181081ms) +✔ an empty business and one with snapshots but no task.created read cleanly (118.102191ms) +✔ recordTask keeps sync reads and a role write apart (179.917596ms) +✔ read_at must be one canonical UTC format, so the projection compares strings safely (113.383091ms) +✔ a bad entry refuses the whole record (114.619021ms) +✔ taskView reads the projection for one business (135.409748ms) +✔ requestTask hands only a holder and a task verb to the handler, and records refusals (253.823239ms) +✔ the server sends task verbs to the adapter with its own timeout; other verbs stay synchronous (407.049872ms) +✔ without an adapter the server refuses every task verb (223.720339ms) +✔ the runtime refuses an invalid adapter and closes a valid one (228.282354ms) +✔ the process loads the S3 adapter from plain-data trackers (298.629493ms) +✔ the tester binds only when the business sets bus.tester to exactly true (834.853544ms) +✔ a business may not name a role tester, so the tester address is never a role (244.711735ms) +✔ every verb outside the tester list refuses tester-refused and is recorded against the tester (551.356334ms) +✔ a tester message is from tester, starts [mos test], and writes no human.input or authority (215.843065ms) +✔ a role answers a tester only in reply to a tester message, and the answer never reaches the human (248.30776ms) +✔ the tester reads the human views a reader reads (138.559232ms) +✔ tester proof binds its own CLI, start time and nonce, refuses a managed run and allows an agent (1.443599ms) +✔ neither CLI's nonce proves the other: each proof is bound to its own CLI and nonce variable (0.445256ms) +✔ testerNonce reads only the tester's variable and gives null on any read error (0.24818ms) +✔ an envelope carries exactly one of cap, human and tester; no tester authenticator refuses (72.332539ms) +✔ tester-cli.mjs binds through the runtime when the switch is on, and refuses off or under a run marker (835.146261ms) +✔ socket capability stamps launch identity; shared views use wire, no SQL client (158.985746ms) +✔ two wire claims serialize; a lost reply never automatically retries (185.506235ms) +✔ malformed, oversized and identity-forging envelopes refuse without echoing input (125.342306ms) +✔ client preserves UTF-8 when a response divides a multibyte character (11.423746ms) +✔ committed mutation followed by dropped reply reports unknown and is never retried (147.335887ms) +ℹ tests 156 +ℹ suites 0 +ℹ pass 156 +ℹ fail 0 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 4360.260647 diff --git a/agents/darkwing/work/queue-116/r2/gate/pkg-webui-pinned-copy.log b/agents/darkwing/work/queue-116/r2/gate/pkg-webui-pinned-copy.log new file mode 100644 index 000000000..51c110c45 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/gate/pkg-webui-pinned-copy.log @@ -0,0 +1,18 @@ +✔ copy writes the Console paths at the full id, read-only, and leaves an existing copy alone (555.200305ms) +✔ copy refuses a commit off refactor, an unknown one, a worktree and a bad copies directory (480.347712ms) +✔ copy writes nothing when an archived path is missing at the commit (170.506935ms) +✔ a copy that loses the rename race leaves no read-only temp directory behind (310.671839ms) +✔ a copy whose rename fails with no target refuses, writes no copy and leaves no temp directory (314.736406ms) +✔ a copy that meets a target holding files says exists: and moves nothing into it (319.040493ms) +✔ a copy that meets an empty target directory replaces it by rename, not by moving into it (318.421466ms) +✔ serve runs from a copy: /healthz 200, the config check, roles and RELEASE from the copy, the queue from --checkout (592.011152ms) +✔ serve refuses a --checkout that is not an absolute directory path (203.154426ms) +✔ consoleReads runs the queue read under queueRoot and reads RELEASE under root (51.603182ms) +ℹ tests 10 +ℹ suites 0 +ℹ pass 10 +ℹ fail 0 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 3401.291402 diff --git a/agents/darkwing/work/queue-116/r2/gate/script-conductor.log b/agents/darkwing/work/queue-116/r2/gate/script-conductor.log new file mode 100644 index 000000000..b71eb81d0 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/gate/script-conductor.log @@ -0,0 +1,55 @@ +Note: switching to '1223a0f37d5267d8b8076759c5df4dcb5450994c'. + +You are in 'detached HEAD' state. You can look around, make experimental +changes and commit them, and you can discard any commits you make in this +state without impacting any branches by switching back to a branch. + +If you want to create a new branch to retain commits you create, you may +do so (now or later) by using -c with the switch command. Example: + + git switch -c + +Or undo this operation with: + + git switch - + +Turn off this advice by setting config variable advice.detachedHead to false + +Not currently on any branch. +nothing to commit, working tree clean +Note: switching to '1223a0f37d5267d8b8076759c5df4dcb5450994c'. + +You are in 'detached HEAD' state. You can look around, make experimental +changes and commit them, and you can discard any commits you make in this +state without impacting any branches by switching back to a branch. + +If you want to create a new branch to retain commits you create, you may +do so (now or later) by using -c with the switch command. Example: + + git switch -c + +Or undo this operation with: + + git switch - + +Turn off this advice by setting config variable advice.detachedHead to false + +OK dry-run: allowed change, exit 0, nothing committed (exit 0) +OK dry-run committed nothing +OK apply: allowed change exits 0 (exit 0) +OK apply: attribution in commit subject +OK apply: target tree clean after commit +OK disallowed path refused (exit 1) +OK disallowed path: target untouched +OK syntax gate refused broken .mjs (exit 1) +OK syntax gate: target untouched +OK suite failure refused (exit 1) +OK suite failure: target reverted to clean +OK disabled policy refused (exit 2) +OK disabled policy: target untouched +OK failed run refused (exit 1) +OK failed run: target untouched +OK missing run exits 4 (exit 4) +OK invalid policy exits 2 (exit 2) + +selftest: 17 passed, 0 failed diff --git a/agents/darkwing/work/queue-116/r2/gate/script-land-work.log b/agents/darkwing/work/queue-116/r2/gate/script-land-work.log new file mode 100644 index 000000000..decdd8fbd --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/gate/script-land-work.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 84 passed, 0 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants-run.log b/agents/darkwing/work/queue-116/r2/mutants-run.log new file mode 100644 index 000000000..cca247a3d --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants-run.log @@ -0,0 +1,205 @@ +== round 2 new mutants 2026-10-14T18:59:04Z +r24-answer-role: killed (rc 1, 1 fail of 84) + answer-role: exit 0, wanted 2 not-human: script-demo rc=0 ℹ pass 1 GATE_PASSED +r25-answer-run: killed (rc 1, 1 fail of 84) + answer-run: exit 0, wanted 2 not-human: script-demo rc=0 ℹ pass 1 GATE_PASSED +r26-answer-choice: killed (rc 1, 1 fail of 84) + answer-choice: exit 0, wanted 2 not-human: script-demo rc=0 ℹ pass 1 GATE_PASSED +r27-one-answer: killed (rc 1, 1 fail of 84) + two-answers: exit 0, wanted 2 not-human: script-demo rc=0 ℹ pass 1 GATE_PASSED +r28-raise-task-ref: killed (rc 1, 1 fail of 84) + raise-task-disagrees: exit 0, wanted 2 work-ref: script-demo rc=0 ℹ pass 1 GATE_PASSED +r29-later-only: killed (rc 1, 1 fail of 84) + earlier-merge: exit 2, wanted 0: land-work: refused: superseded later decision d0000000-0000-4000-8000-000000000008 on work/vikunja-7-42: superseded later decision d0000000-0000-4000-8000-000000000008 on work/vikunja-7-42 +s27-cleanup-follows-link: killed (rc 1, 1 fail of 84) + the target's node_modules is still there, with its contents +restored: True +== round 2 full run 2026-10-14T19:00:27Z +r01-schema-digest: killed (rc 1, 1 fail of 84) + schema-table: exit 0, wanted 2 bus-schema: script-demo rc=0 ℹ pass 1 GATE_PASSED +r02-schema-meta: killed (rc 1, 1 fail of 84) + schema-meta: exit 0, wanted 2 bus-schema: script-demo rc=0 ℹ pass 1 GATE_PASSED +r03-read-only: killed (rc 1, 2 fail of 84) + openBus opens the database read-only + args: exit 2, wanted 2 decision-not-found: land-work: refused: bus-schema schema digest dbf2c5dbc4c3, the store expects 52514a1173be: bus-schema schema digest dbf2c5dbc4c3, the store expects 52514a1173be +r04-business-scope: killed (rc 1, 1 fail of 84) + other-business: exit 0, wanted 2 decision-not-found: script-demo rc=0 ℹ pass 1 GATE_PASSED +r05-one-raise: killed (rc 1, 1 fail of 84) + no-raise: exit 1, wanted 2 decision-not-found: land-work: Cannot read properties of undefined (reading 'body') land-work: could not read the decision from the bus (exit 1) +r06-not-a-merge: killed (rc 1, 1 fail of 84) + not-a-merge: exit 0, wanted 2 not-a-merge: script-demo rc=0 ℹ pass 1 GATE_PASSED +r07-resolved-op: killed (rc 1, 1 fail of 84) + withdrawn: exit 2, wanted 2 not-resolved: land-work: refused: not-human resolved by pm via null, 0 human answer(s): not-human resolved by pm via null, 0 human answer(s) +r08-human-by: killed (rc 1, 1 fail of 84) + by-agent: exit 0, wanted 2 not-human: script-demo rc=0 ℹ pass 1 GATE_PASSED +r09-human-via: killed (rc 1, 1 fail of 84) + via-webui: exit 0, wanted 2 not-human: script-demo rc=0 ℹ pass 1 GATE_PASSED +r10-human-answer: killed (rc 1, 2 fail of 84) + no-answer: exit 0, wanted 2 not-human: script-demo rc=0 ℹ pass 1 GATE_PASSED + two-answers: exit 0, wanted 2 not-human: script-demo rc=0 ℹ pass 1 GATE_PASSED +r11-merge-option: killed (rc 1, 1 fail of 84) + chose-no: exit 0, wanted 2 not-merge-option: script-demo rc=0 ℹ pass 1 GATE_PASSED +r12-one-work-ref: killed (rc 1, 1 fail of 84) + two-refs: exit 0, wanted 2 work-ref: script-demo rc=0 ℹ pass 1 GATE_PASSED +r13-work-ref-shape: killed (rc 1, 1 fail of 84) + bad-ref: exit 2, wanted 2 work-ref: land-work: refused: no-verdict no review.verdict for vikunja:x/: no-verdict no review.verdict for vikunja:x/ +r14-task-ref-agrees: killed (rc 1, 2 fail of 84) + task-ref-disagrees: exit 0, wanted 2 work-ref: script-demo rc=0 ℹ pass 1 GATE_PASSED + raise-task-disagrees: exit 0, wanted 2 work-ref: script-demo rc=0 ℹ pass 1 GATE_PASSED +r15-target: killed (rc 1, 1 fail of 84) + target-main: exit 0, wanted 2 target-branch: script-demo rc=0 ℹ pass 1 GATE_PASSED +r16-later-supersedes: killed (rc 1, 1 fail of 84) + superseded-by: exit 0, wanted 2 superseded: script-demo rc=0 ℹ pass 1 GATE_PASSED +r17-later-task: killed (rc 1, 1 fail of 84) + superseded-task: exit 0, wanted 2 superseded: script-demo rc=0 ℹ pass 1 GATE_PASSED +r18-later-question: killed (rc 1, 1 fail of 84) + superseded-question: exit 0, wanted 2 superseded: script-demo rc=0 ℹ pass 1 GATE_PASSED +r19-no-verdict: killed (rc 1, 1 fail of 84) + no-verdict: exit 1, wanted 2 no-verdict: land-work: Cannot read properties of undefined (reading 'body') land-work: could not read the decision from the bus (exit 1) +r20-latest-verdict: killed (rc 1, 31 fail of 84) + earlier-merge: exit 2, wanted 0: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 + ref-moved: exit 2, wanted 2 ref-moved: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 + root-top: exit 2, wanted 2 root-file: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 + root-newdir: exit 2, wanted 2 root-file: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 + root-src: exit 2, wanted 2 root-file: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 + unrelated: exit 2, wanted 2 base-conflict: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 + empty: exit 2, wanted 2 base-conflict: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 + an empty reviewed diff says so + dirty-changed: exit 2, wanted 2 checkout-dirty: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 + dirty-staged: exit 2, wanted 2 checkout-dirty: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 + dirty-untracked: exit 2, wanted 2 checkout-dirty: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 + conflict: exit 2, wanted 2 base-conflict: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 + dirty-during: exit 2, wanted 2 checkout-dirty: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 + drift: exit 2, wanted 2 patch-drift: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 + gate-pkg: exit 2, wanted 2 gate-failed: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 + gate-failed names the failing step's log, and it exists + gate-script: exit 2, wanted 2 gate-failed: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 + a failing scripts/test-*.sh fails the gate + nomods: exit 2, wanted 4: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 + moved: exit 2, wanted 2 base-moved: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 + base-moved keeps the base where it moved to + dry: exit 2, wanted 0: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 + --dry-run prints the commit with --subject and --attribution + --dry-run runs the gate + land: exit 2, wanted 0: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 + the landing is one commit on the old base + its tree is the dry run's + the message has the option's subject, the citations and the attribution last + it prints the line for the PM + the checked-out base has the reviewed paths and keeps the unrelated edit + the gate ran each package suite but queue, and each scripts/test-*.sh +r21-approve: killed (rc 1, 1 fail of 84) + changes-later: exit 0, wanted 2 not-approved: script-demo rc=0 ℹ pass 1 GATE_PASSED +r22-verdict-task: killed (rc 1, 1 fail of 84) + wrong-task-body: exit 0, wanted 2 not-approved: script-demo rc=0 ℹ pass 1 GATE_PASSED +r23-full-oid: killed (rc 1, 1 fail of 84) + short-commit: exit 2, wanted 2 not-approved: land-work: refused: ref-moved: work/vikunja-7-42 is at 64c4ffecf45ad495bb90b008b6cc92705d0f9f39, the verdict approved 64c4ffecf45a +r24-answer-role: killed (rc 1, 1 fail of 84) + answer-role: exit 0, wanted 2 not-human: script-demo rc=0 ℹ pass 1 GATE_PASSED +r25-answer-run: killed (rc 1, 1 fail of 84) + answer-run: exit 0, wanted 2 not-human: script-demo rc=0 ℹ pass 1 GATE_PASSED +r26-answer-choice: killed (rc 1, 1 fail of 84) + answer-choice: exit 0, wanted 2 not-human: script-demo rc=0 ℹ pass 1 GATE_PASSED +r27-one-answer: killed (rc 1, 1 fail of 84) + two-answers: exit 0, wanted 2 not-human: script-demo rc=0 ℹ pass 1 GATE_PASSED +r28-raise-task-ref: killed (rc 1, 1 fail of 84) + raise-task-disagrees: exit 0, wanted 2 work-ref: script-demo rc=0 ℹ pass 1 GATE_PASSED +r29-later-only: killed (rc 1, 1 fail of 84) + earlier-merge: exit 2, wanted 0: land-work: refused: superseded later decision d0000000-0000-4000-8000-000000000008 on work/vikunja-7-42: superseded later decision d0000000-0000-4000-8000-000000000008 on work/vikunja-7-42 +s01-base-early: killed (rc 1, 1 fail of 84) + --base next refuses before the config is read (got 3) +s02-ref-moved: killed (rc 1, 1 fail of 84) + ref-moved: exit 1, wanted 2 ref-moved: land-work: the fetch did not bring 4c983a077de46a76a88a0ba2253bdb6cd99e2994 +s03-merge-base: killed (rc 1, 1 fail of 84) + unrelated: exit 128, wanted 2 base-conflict: Use '--' to separate paths from revisions, like this: 'git [...] -- [...]' +s04-empty-diff: killed (rc 1, 1 fail of 84) + an empty reviewed diff says so +s05-root-top-file: killed (rc 1, 1 fail of 84) + root-top: exit 0, wanted 2 root-file: script-demo rc=0 ℹ pass 1 GATE_PASSED +s06-root-new-dir: killed (rc 1, 1 fail of 84) + root-newdir: exit 0, wanted 2 root-file: script-demo rc=0 ℹ pass 1 GATE_PASSED +s07-root-src-v1: killed (rc 1, 1 fail of 84) + root-src: exit 0, wanted 2 root-file: script-demo rc=0 ℹ pass 1 GATE_PASSED +s08-dirty-changed: killed (rc 1, 3 fail of 84) + dirty-changed: exit 0, wanted 2 checkout-dirty: script-demo rc=0 ℹ pass 1 GATE_PASSED + dirty-during: exit 0, wanted 2 checkout-dirty: script-demo rc=0 ℹ pass 1 GATE_PASSED + a reviewed path dirtied during the gate moves no ref +s09-dirty-staged: killed (rc 1, 1 fail of 84) + dirty-staged: exit 0, wanted 2 checkout-dirty: script-demo rc=0 ℹ pass 1 GATE_PASSED +s10-dirty-untracked: killed (rc 1, 1 fail of 84) + dirty-untracked: exit 0, wanted 2 checkout-dirty: script-demo rc=0 ℹ pass 1 GATE_PASSED +s11-dirty-recheck: killed (rc 1, 2 fail of 84) + dirty-during: exit 0, wanted 2 checkout-dirty: script-demo rc=0 ℹ pass 1 GATE_PASSED + a reviewed path dirtied during the gate moves no ref +s12-apply-conflict: killed (rc 1, 1 fail of 84) + conflict: exit 2, wanted 2 base-conflict: land-work: refused: patch-drift: applied none, reviewed 82ae6d6dd0f84b6010da197c32195805e4dd1c19 +s13-patch-drift: killed (rc 1, 1 fail of 84) + drift: exit 0, wanted 2 patch-drift: script-demo rc=0 ℹ pass 1 GATE_PASSED +s14-gate-node-modules: killed (rc 1, 1 fail of 84) + nomods: exit 0, wanted 4: script-demo rc=0 ℹ pass 1 GATE_PASSED +s15-gate-step-fails: killed (rc 1, 5 fail of 84) + gate-pkg: exit 0, wanted 2 gate-failed: script-demo rc=0 ℹ pass 1 GATE_PASSED + gate-failed names the failing step's log, and it exists + gate-script: exit 0, wanted 2 gate-failed: script-demo rc=1 GATE_PASSED + a failing scripts/test-*.sh fails the gate + a failed gate moves no ref +s16-gate-skips-queue: killed (rc 1, 16 fail of 84) + earlier-merge: exit 2, wanted 0: pkg-queue rc=1 ℹ pass 0 ℹ fail 1 land-work: refused: gate-failed: pkg-queue, see /home/jwoltje/darkwing-scratch/r116/tmp/tmp.lsncpSSYQh/c/earlier-merge/tmp/land-work-logs.d0b5hb/pkg-queue.log + dirty-during: exit 2, wanted 2 checkout-dirty: pkg-queue rc=1 ℹ pass 0 ℹ fail 1 land-work: refused: gate-failed: pkg-queue, see /home/jwoltje/darkwing-scratch/r116/tmp/tmp.lsncpSSYQh/c/dirty-during/tmp/land-work-logs.SteamJ/pkg-queue.log + a failing scripts/test-*.sh fails the gate + moved: exit 2, wanted 2 base-moved: pkg-queue rc=1 ℹ pass 0 ℹ fail 1 land-work: refused: gate-failed: pkg-queue, see /home/jwoltje/darkwing-scratch/r116/tmp/tmp.lsncpSSYQh/c/moved/tmp/land-work-logs.30S2yZ/pkg-queue.log + base-moved keeps the base where it moved to + dry: exit 2, wanted 0: pkg-queue rc=1 ℹ pass 0 ℹ fail 1 land-work: refused: gate-failed: pkg-queue, see /home/jwoltje/darkwing-scratch/r116/tmp/tmp.lsncpSSYQh/c/dry/tmp/land-work-logs.zNYKFz/pkg-queue.log + --dry-run prints the commit with --subject and --attribution + --dry-run runs the gate + land: exit 2, wanted 0: pkg-queue rc=1 ℹ pass 0 ℹ fail 1 land-work: refused: gate-failed: pkg-queue, see /home/jwoltje/darkwing-scratch/r116/tmp/tmp.lsncpSSYQh/c/land/tmp/land-work-logs.5FJ6Ru/pkg-queue.log + the landing is one commit on the old base + its diff is the reviewed diff by patch-id + its tree is the dry run's + the message has the option's subject, the citations and the attribution last + it prints the line for the PM + the checked-out base has the reviewed paths and keeps the unrelated edit + the gate ran each package suite but queue, and each scripts/test-*.sh +s17-gate-scripts: killed (rc 1, 8 fail of 84) + dirty-during: exit 0, wanted 2 checkout-dirty: pkg-demo rc=0 ℹ pass 1 ℹ fail 0 GATE_PASSED + a reviewed path dirtied during the gate moves no ref + gate-script: exit 0, wanted 2 gate-failed: pkg-demo rc=0 ℹ pass 1 ℹ fail 0 GATE_PASSED + a failing scripts/test-*.sh fails the gate + a failed gate moves no ref + moved: exit 0, wanted 2 base-moved: pkg-demo rc=0 ℹ pass 1 ℹ fail 0 GATE_PASSED + base-moved keeps the base where it moved to + the gate ran each package suite but queue, and each scripts/test-*.sh +s18-base-moved-cas: killed (rc 1, 2 fail of 84) + moved: exit 0, wanted 2 base-moved: script-demo rc=0 ℹ pass 1 GATE_PASSED + base-moved keeps the base where it moved to +s19-dry-run: killed (rc 1, 3 fail of 84) + --dry-run writes no ref + --dry-run prints the commit with --subject and --attribution + its tree is the dry run's +s20-checkout-sync: killed (rc 1, 1 fail of 84) + the checked-out base has the reviewed paths and keeps the unrelated edit +s21-subject: killed (rc 1, 1 fail of 84) + the message has the option's subject, the citations and the attribution last +s22-attribution: killed (rc 1, 2 fail of 84) + --dry-run prints the commit with --subject and --attribution + the message has the option's subject, the citations and the attribution last +s23-cleanup-worktree: killed (rc 1, 6 fail of 84) + a refusal after the worktree is added leaves no worktree or scratch + patch-drift leaves no worktree or scratch + gate-failed leaves no worktree or scratch + a target without node_modules leaves no worktree or scratch + --dry-run leaves no worktree or scratch + the landing leaves no worktree or scratch +s24-cleanup-network: killed (rc 1, 1 fail of 84) + the worktree's Docker network is removed +s25-cleanup-scratch: killed (rc 1, 6 fail of 84) + a refusal after the worktree is added leaves no worktree or scratch + patch-drift leaves no worktree or scratch + gate-failed leaves no worktree or scratch + a target without node_modules leaves no worktree or scratch + --dry-run leaves no worktree or scratch + the landing leaves no worktree or scratch +s26-cleanup-link: SURVIVED (rc 0, 0 fail of 84) +s27-cleanup-follows-link: killed (rc 1, 1 fail of 84) + the target's node_modules is still there, with its contents +restored: True diff --git a/agents/darkwing/work/queue-116/r2/mutants.py b/agents/darkwing/work/queue-116/r2/mutants.py new file mode 100644 index 000000000..bc668ef35 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python3 +"""Row 116 mutants: one per check. Each edits land-work.sh or read.mjs, +runs scripts/test-land-work.sh, and restores the file from a .orig copy.""" +import hashlib, os, re, shutil, signal, subprocess, sys + +WT = os.path.expanduser('~/darkwing-scratch/r116/wt') +PKT = os.path.expanduser('~/darkwing-scratch/r116/pkt') +SH = 'scripts/land-work.sh' +RD = 'scripts/land-work/read.mjs' + +M = [ + # read.mjs + ('r01-schema-digest', RD, "if (digest !== expected) refuse(", "if (false) refuse("), + ('r02-schema-meta', RD, "if (meta('schema_version') !== SCHEMA_VERSION || meta('schema_digest') !== expected)", "if (false)"), + ('r03-read-only', RD, "{ readOnly: true, timeout", "{ readOnly: false, timeout"), + ('r04-business-scope', RD, "business = ?", "? IS NOT NULL", True), + ('r05-one-raise', RD, "if (!d || raises.length !== 1)", "if (!d)"), + ('r06-not-a-merge', RD, "if (d.action !== MERGE || raise.action !== MERGE)", "if (false)"), + ('r07-resolved-op', RD, "closes.length !== 1 || closes[0].op !== 'resolved'", "closes.length !== 1"), + ('r08-human-by', RD, "res.by !== business.human ||", ""), + ('r09-human-via', RD, "res.via !== 'cli' ||", ""), + ('r10-human-answer', RD, "const answer = answers.length === 1 ? answers[0] : null;", + "const answer = answers[0] ?? { actor_role: null, actor_run: null, body: JSON.stringify({ choice: res.choice }) };"), + ('r11-merge-option', RD, "if (res.choice !== raise.approvalChoice)", "if (false)"), + ('r12-one-work-ref', RD, "named.length === 1 ?", "named.length >= 1 ?"), + ('r13-work-ref-shape', RD, "WORK_REF.exec(named[0])", "/^work\\/[a-z]*-?([^-]*)-?(.*)$/.exec(named[0])"), + ('r14-task-ref-agrees', RD, "if (ref != null && ref !== task)", "if (false)"), + ('r15-target', RD, "if (raise.target !== 'refactor' || raise.target !== base)", "if (false)"), + ('r16-later-supersedes', RD, "(r) => r.supersedes === id ||", "(r) =>"), + ('r17-later-task', RD, "r.task_ref === task ||", ""), + ('r18-later-question', RD, " || (r.question.match(ANY_WORK_REF) ?? []).includes(workRef)", ""), + ('r19-no-verdict', RD, "if (!v) refuse('no-verdict'", "if (false) refuse('no-verdict'"), + ('r20-latest-verdict', RD, "ORDER BY seq DESC LIMIT 1", "ORDER BY seq LIMIT 1"), + ('r21-approve', RD, "vb.verdict !== 'approve' ||", ""), + ('r22-verdict-task', RD, "vb.task_ref !== task ||", ""), + ('r23-full-oid', RD, "!OID.test(vb.commit ?? '')", "false"), + # round 2, Filbert's C1 (f1 split into r24 and r25, f2 r26, f3 r27, f4 r28, f5 r29) + ('r24-answer-role', RD, "answer.actor_role !== null ||", ""), + ('r25-answer-run', RD, "answer.actor_run !== null ||", ""), + ('r26-answer-choice', RD, "json(answer.body)?.choice !== res.choice", "false"), + ('r27-one-answer', RD, "answers.length === 1 ? answers[0] : null", "answers.length >= 1 ? answers[0] : null"), + ('r28-raise-task-ref', RD, "for (const ref of [d.task_ref, raise.task_ref])", "for (const ref of [d.task_ref])"), + ('r29-later-only', RD, "(seq > ? AND action = ?)", "(seq <> ? AND action = ?)"), + # land-work.sh + ('s01-base-early', SH, '[ "$BASE" = "refactor" ] || refuse target-branch', 'true || refuse target-branch'), + ('s02-ref-moved', SH, '[ "$AT" = "$C" ] || refuse ref-moved', 'true || refuse ref-moved'), + ('s03-merge-base', SH, '|| refuse base-conflict "$C shares no history with $BASE"', '|| true'), + ('s04-empty-diff', SH, '[ -s "$SCRATCH/reviewed.patch" ] || refuse', 'true || refuse'), + ('s05-root-top-file', SH, '*) ROOT_HITS="$ROOT_HITS $f"; continue ;;', '*) continue ;;'), + ('s06-root-new-dir', SH, 'if [ "$known" = "no" ] || [ "$top" = "src" ]', 'if [ "$top" = "src" ]'), + ('s07-root-src-v1', SH, ' || [ "$top" = "src" ] || [ "$top" = "v1" ]; then', '; then'), + ('s08-dirty-changed', SH, 'lgit "$CHECKOUT" diff --quiet HEAD -- "${PATHS[@]}" || dirty="changed"', ':'), + ('s09-dirty-staged', SH, 'lgit "$CHECKOUT" diff --cached --quiet HEAD -- "${PATHS[@]}" || dirty="staged"', ':'), + ('s10-dirty-untracked', SH, '[ -e "$CHECKOUT/$f" ]; then dirty="untracked $f"; fi', 'false; then :; fi'), + ('s11-dirty-recheck', SH, '\ncheckout_clean\ngit -C "$WT" commit', '\ngit -C "$WT" commit'), + ('s12-apply-conflict', SH, '|| refuse base-conflict "$(tail -n1 "$SCRATCH/apply.err")"', '|| true'), + ('s13-patch-drift', SH, '[ "$APPLIED_ID" = "$REVIEWED_ID" ] || refuse', 'true || refuse'), + ('s14-gate-node-modules', SH, '[ -d "$TARGET/node_modules" ] || fail', 'true || fail'), + ('s15-gate-step-fails', SH, '[ "$rc" -eq 0 ] || refuse gate-failed', 'true || refuse gate-failed'), + ('s16-gate-skips-queue', SH, '[ "$p" = queue ] && continue', ':'), + ('s17-gate-scripts', SH, 'for s in "$WT"/scripts/test-*.sh; do', 'for s in; do'), + ('s18-base-moved-cas', SH, '"refs/heads/$BASE" "$NEW" "$OLD" 2>/dev/null', '"refs/heads/$BASE" "$NEW" 2>/dev/null'), + ('s19-dry-run', SH, 'if [ "$DRY_RUN" = "yes" ]; then', 'if false; then'), + ('s20-checkout-sync', SH, 'if [ -n "$CHECKOUT" ]; then\n # HEAD is now NEW', 'if false; then\n # HEAD is now NEW'), + ('s21-subject', SH, '[ -n "$SUBJECT" ] || SUBJECT="$(value subject)"', '[ -n "$SUBJECT" ] || SUBJECT="land work"'), + ('s22-attribution', SH, '${ATTRIBUTION:-Applied-under: scripts/land-work.sh (conductor)}\n', ''), + ('s23-cleanup-worktree', SH, 'git -C "$TARGET" worktree remove --force "$WT" >/dev/null 2>&1 || rm -rf "$WT"', ':'), + ('s24-cleanup-network', SH, 'docker network rm "${WT_NAME}_default" >/dev/null 2>&1 ||', 'false ||'), + ('s25-cleanup-scratch', SH, ' rm -rf "$SCRATCH"\n', '\n'), + ('s26-cleanup-link', SH, '[ -L "$WT/node_modules" ] && rm -f "$WT/node_modules"', ':'), + # round 2: cleanup that follows the link and empties the target's node_modules + ('s27-cleanup-follows-link', SH, '[ -L "$WT/node_modules" ] && rm -f "$WT/node_modules"', 'rm -rf "$WT/node_modules/"'), +] + +def sha(p): + return hashlib.sha256(open(p, 'rb').read()).hexdigest() + +only = set(sys.argv[1:]) +os.chdir(WT) +env = dict(os.environ, TMPDIR=os.path.join(os.path.dirname(WT), 'tmp'), NO_COLOR='1') +base = {f: sha(f) for f in (SH, RD)} +log = open(os.path.join(PKT, 'mutants-run.log'), 'a') +for name, f, old, new, *rest in M: + if only and name not in only: + continue + src = open(f).read() + n = src.count(old) + if n == 0 or (n > 1 and not rest): + print(f'{name}: pattern found {n} times, skipped', file=log, flush=True); print(name, 'BAD PATTERN', n); continue + shutil.copy2(f, f + '.orig') + try: + open(f, 'w').write(src.replace(old, new)) + p = subprocess.Popen(['bash', 'scripts/test-land-work.sh'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, + env=env, start_new_session=True, text=True) + try: + out, _ = p.communicate(timeout=600) + except subprocess.TimeoutExpired: + os.killpg(p.pid, signal.SIGKILL); out, _ = p.communicate(); out += '\nTIMEOUT\n' + open(os.path.join(PKT, 'mutants', f'mutant-{name}.log'), 'w').write(out) + fails = [l[5:] for l in out.splitlines() if l.startswith('FAIL')] + tally = (re.findall(r'selftests: (\d+) passed, (\d+) failed', out) or [('?', '?')])[-1] + verdict = 'killed' if p.returncode != 0 else 'SURVIVED' + print(f'{name}: {verdict} (rc {p.returncode}, {tally[1]} fail of {int(tally[0]) + int(tally[1]) if tally[0] != "?" else "?"})', file=log, flush=True) + for l in fails: + print(f' {l}', file=log, flush=True) + print(name, verdict, len(fails), flush=True) + finally: + shutil.move(f + '.orig', f) + assert sha(f) == base[f], f'{f} not restored' +print('restored:', all(sha(f) == base[f] for f in base), file=log, flush=True) diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r01-schema-digest.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r01-schema-digest.log new file mode 100644 index 000000000..6f7f40a2f --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r01-schema-digest.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +FAIL schema-table: exit 0, wanted 2 bus-schema: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r02-schema-meta.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r02-schema-meta.log new file mode 100644 index 000000000..71dc2717d --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r02-schema-meta.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +FAIL schema-meta: exit 0, wanted 2 bus-schema: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r03-read-only.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r03-read-only.log new file mode 100644 index 000000000..77fc54f01 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r03-read-only.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +FAIL openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +FAIL args: exit 2, wanted 2 decision-not-found: land-work: refused: bus-schema schema digest dbf2c5dbc4c3, the store expects 52514a1173be: bus-schema schema digest dbf2c5dbc4c3, the store expects 52514a1173be +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 82 passed, 2 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r04-business-scope.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r04-business-scope.log new file mode 100644 index 000000000..1b7d7f074 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r04-business-scope.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +FAIL other-business: exit 0, wanted 2 decision-not-found: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r05-one-raise.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r05-one-raise.log new file mode 100644 index 000000000..171e6995b --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r05-one-raise.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +FAIL no-raise: exit 1, wanted 2 decision-not-found: land-work: Cannot read properties of undefined (reading 'body') land-work: could not read the decision from the bus (exit 1) +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r06-not-a-merge.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r06-not-a-merge.log new file mode 100644 index 000000000..65fa8af28 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r06-not-a-merge.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +FAIL not-a-merge: exit 0, wanted 2 not-a-merge: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r07-resolved-op.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r07-resolved-op.log new file mode 100644 index 000000000..f9bcc983c --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r07-resolved-op.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +FAIL withdrawn: exit 2, wanted 2 not-resolved: land-work: refused: not-human resolved by pm via null, 0 human answer(s): not-human resolved by pm via null, 0 human answer(s) +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r08-human-by.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r08-human-by.log new file mode 100644 index 000000000..1f8aeb192 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r08-human-by.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +FAIL by-agent: exit 0, wanted 2 not-human: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r09-human-via.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r09-human-via.log new file mode 100644 index 000000000..f74c67967 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r09-human-via.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +FAIL via-webui: exit 0, wanted 2 not-human: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r10-human-answer.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r10-human-answer.log new file mode 100644 index 000000000..8c0cee112 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r10-human-answer.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +FAIL no-answer: exit 0, wanted 2 not-human: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +FAIL two-answers: exit 0, wanted 2 not-human: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 82 passed, 2 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r11-merge-option.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r11-merge-option.log new file mode 100644 index 000000000..58065a6e6 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r11-merge-option.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +FAIL chose-no: exit 0, wanted 2 not-merge-option: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r12-one-work-ref.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r12-one-work-ref.log new file mode 100644 index 000000000..239a06a3a --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r12-one-work-ref.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +FAIL two-refs: exit 0, wanted 2 work-ref: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r13-work-ref-shape.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r13-work-ref-shape.log new file mode 100644 index 000000000..e8ba49015 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r13-work-ref-shape.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +FAIL bad-ref: exit 2, wanted 2 work-ref: land-work: refused: no-verdict no review.verdict for vikunja:x/: no-verdict no review.verdict for vikunja:x/ +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r14-task-ref-agrees.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r14-task-ref-agrees.log new file mode 100644 index 000000000..0d3c3b304 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r14-task-ref-agrees.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +FAIL task-ref-disagrees: exit 0, wanted 2 work-ref: script-demo rc=0 ℹ pass 1 GATE_PASSED +FAIL raise-task-disagrees: exit 0, wanted 2 work-ref: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 82 passed, 2 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r15-target.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r15-target.log new file mode 100644 index 000000000..875ceb54a --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r15-target.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +FAIL target-main: exit 0, wanted 2 target-branch: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r16-later-supersedes.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r16-later-supersedes.log new file mode 100644 index 000000000..86589ec41 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r16-later-supersedes.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +FAIL superseded-by: exit 0, wanted 2 superseded: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r17-later-task.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r17-later-task.log new file mode 100644 index 000000000..ce1199a6c --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r17-later-task.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +FAIL superseded-task: exit 0, wanted 2 superseded: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r18-later-question.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r18-later-question.log new file mode 100644 index 000000000..d9735d585 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r18-later-question.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +FAIL superseded-question: exit 0, wanted 2 superseded: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r19-no-verdict.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r19-no-verdict.log new file mode 100644 index 000000000..c7ac77902 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r19-no-verdict.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +FAIL no-verdict: exit 1, wanted 2 no-verdict: land-work: Cannot read properties of undefined (reading 'body') land-work: could not read the decision from the bus (exit 1) +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r20-latest-verdict.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r20-latest-verdict.log new file mode 100644 index 000000000..cdc2e6370 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r20-latest-verdict.log @@ -0,0 +1,89 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +FAIL earlier-merge: exit 2, wanted 0: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 +FAIL ref-moved: exit 2, wanted 2 ref-moved: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 +FAIL root-top: exit 2, wanted 2 root-file: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 +FAIL root-newdir: exit 2, wanted 2 root-file: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 +FAIL root-src: exit 2, wanted 2 root-file: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 +FAIL unrelated: exit 2, wanted 2 base-conflict: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 +FAIL empty: exit 2, wanted 2 base-conflict: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 +FAIL an empty reviewed diff says so +FAIL dirty-changed: exit 2, wanted 2 checkout-dirty: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 +FAIL dirty-staged: exit 2, wanted 2 checkout-dirty: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 +FAIL dirty-untracked: exit 2, wanted 2 checkout-dirty: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 +FAIL conflict: exit 2, wanted 2 base-conflict: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +FAIL dirty-during: exit 2, wanted 2 checkout-dirty: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 +OK a reviewed path dirtied during the gate moves no ref +FAIL drift: exit 2, wanted 2 patch-drift: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 +OK patch-drift leaves no worktree or scratch +FAIL gate-pkg: exit 2, wanted 2 gate-failed: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 +FAIL gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +FAIL gate-script: exit 2, wanted 2 gate-failed: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 +FAIL a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +FAIL nomods: exit 2, wanted 4: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 +OK a target without node_modules leaves no worktree or scratch +FAIL moved: exit 2, wanted 2 base-moved: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 +FAIL base-moved keeps the base where it moved to +FAIL dry: exit 2, wanted 0: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 +OK --dry-run writes no ref +FAIL --dry-run prints the commit with --subject and --attribution +FAIL --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +FAIL land: exit 2, wanted 0: land-work: refused: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111: not-approved latest verdict e0000000-0000-4000-8000-000000000001 is changes on 1111111111111111111111111111111111111111 +FAIL the landing is one commit on the old base +fatal: bad object 26ec50bd4ebb57e9a7dbc4b9c28952391917fad6 +OK its diff is the reviewed diff by patch-id +FAIL its tree is the dry run's +fatal: bad object 26ec50bd4ebb57e9a7dbc4b9c28952391917fad6 +FAIL the message has the option's subject, the citations and the attribution last +FAIL it prints the line for the PM +FAIL the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +grep: /gate.log: No such file or directory +FAIL the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 53 passed, 31 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r21-approve.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r21-approve.log new file mode 100644 index 000000000..3d3d47164 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r21-approve.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +FAIL changes-later: exit 0, wanted 2 not-approved: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r22-verdict-task.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r22-verdict-task.log new file mode 100644 index 000000000..cd19b8d0c --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r22-verdict-task.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +FAIL wrong-task-body: exit 0, wanted 2 not-approved: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r23-full-oid.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r23-full-oid.log new file mode 100644 index 000000000..fd69b8788 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r23-full-oid.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +FAIL short-commit: exit 2, wanted 2 not-approved: land-work: refused: ref-moved: work/vikunja-7-42 is at 64c4ffecf45ad495bb90b008b6cc92705d0f9f39, the verdict approved 64c4ffecf45a +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r24-answer-role.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r24-answer-role.log new file mode 100644 index 000000000..6d39dc9cc --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r24-answer-role.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +FAIL answer-role: exit 0, wanted 2 not-human: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r25-answer-run.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r25-answer-run.log new file mode 100644 index 000000000..e52f77586 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r25-answer-run.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +FAIL answer-run: exit 0, wanted 2 not-human: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r26-answer-choice.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r26-answer-choice.log new file mode 100644 index 000000000..4bc5cf6b6 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r26-answer-choice.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +FAIL answer-choice: exit 0, wanted 2 not-human: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r27-one-answer.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r27-one-answer.log new file mode 100644 index 000000000..6370a6b4a --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r27-one-answer.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +FAIL two-answers: exit 0, wanted 2 not-human: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r28-raise-task-ref.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r28-raise-task-ref.log new file mode 100644 index 000000000..fd0493882 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r28-raise-task-ref.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +FAIL raise-task-disagrees: exit 0, wanted 2 work-ref: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-r29-later-only.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-r29-later-only.log new file mode 100644 index 000000000..4beb0a8c5 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-r29-later-only.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +FAIL earlier-merge: exit 2, wanted 0: land-work: refused: superseded later decision d0000000-0000-4000-8000-000000000008 on work/vikunja-7-42: superseded later decision d0000000-0000-4000-8000-000000000008 on work/vikunja-7-42 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s01-base-early.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s01-base-early.log new file mode 100644 index 000000000..1d400e37c --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s01-base-early.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +FAIL --base next refuses before the config is read (got 3) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s02-ref-moved.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s02-ref-moved.log new file mode 100644 index 000000000..06f0040d5 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s02-ref-moved.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +FAIL ref-moved: exit 1, wanted 2 ref-moved: land-work: the fetch did not bring 4c983a077de46a76a88a0ba2253bdb6cd99e2994 +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s03-merge-base.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s03-merge-base.log new file mode 100644 index 000000000..a5bc02934 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s03-merge-base.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +FAIL unrelated: exit 128, wanted 2 base-conflict: Use '--' to separate paths from revisions, like this: 'git [...] -- [...]' +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s04-empty-diff.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s04-empty-diff.log new file mode 100644 index 000000000..c7ff1dc07 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s04-empty-diff.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +FAIL an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s05-root-top-file.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s05-root-top-file.log new file mode 100644 index 000000000..c0b8673d9 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s05-root-top-file.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +FAIL root-top: exit 0, wanted 2 root-file: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s06-root-new-dir.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s06-root-new-dir.log new file mode 100644 index 000000000..ea2880a79 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s06-root-new-dir.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +FAIL root-newdir: exit 0, wanted 2 root-file: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s07-root-src-v1.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s07-root-src-v1.log new file mode 100644 index 000000000..e5b752edc --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s07-root-src-v1.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +FAIL root-src: exit 0, wanted 2 root-file: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s08-dirty-changed.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s08-dirty-changed.log new file mode 100644 index 000000000..976c16960 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s08-dirty-changed.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +FAIL dirty-changed: exit 0, wanted 2 checkout-dirty: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +FAIL dirty-during: exit 0, wanted 2 checkout-dirty: script-demo rc=0 ℹ pass 1 GATE_PASSED +FAIL a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 81 passed, 3 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s09-dirty-staged.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s09-dirty-staged.log new file mode 100644 index 000000000..526707980 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s09-dirty-staged.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +FAIL dirty-staged: exit 0, wanted 2 checkout-dirty: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s10-dirty-untracked.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s10-dirty-untracked.log new file mode 100644 index 000000000..cc3ed97b9 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s10-dirty-untracked.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +FAIL dirty-untracked: exit 0, wanted 2 checkout-dirty: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s11-dirty-recheck.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s11-dirty-recheck.log new file mode 100644 index 000000000..0995930e8 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s11-dirty-recheck.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +FAIL dirty-during: exit 0, wanted 2 checkout-dirty: script-demo rc=0 ℹ pass 1 GATE_PASSED +FAIL a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 82 passed, 2 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s12-apply-conflict.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s12-apply-conflict.log new file mode 100644 index 000000000..240e318f8 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s12-apply-conflict.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +FAIL conflict: exit 2, wanted 2 base-conflict: land-work: refused: patch-drift: applied none, reviewed 82ae6d6dd0f84b6010da197c32195805e4dd1c19 +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s13-patch-drift.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s13-patch-drift.log new file mode 100644 index 000000000..02340f8a1 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s13-patch-drift.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +FAIL drift: exit 0, wanted 2 patch-drift: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s14-gate-node-modules.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s14-gate-node-modules.log new file mode 100644 index 000000000..d288728d3 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s14-gate-node-modules.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +FAIL nomods: exit 0, wanted 4: script-demo rc=0 ℹ pass 1 GATE_PASSED +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s15-gate-step-fails.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s15-gate-step-fails.log new file mode 100644 index 000000000..b2d89661d --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s15-gate-step-fails.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +FAIL gate-pkg: exit 0, wanted 2 gate-failed: script-demo rc=0 ℹ pass 1 GATE_PASSED +FAIL gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +FAIL gate-script: exit 0, wanted 2 gate-failed: script-demo rc=1 GATE_PASSED +FAIL a failing scripts/test-*.sh fails the gate +FAIL a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 79 passed, 5 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s16-gate-skips-queue.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s16-gate-skips-queue.log new file mode 100644 index 000000000..589cb5451 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s16-gate-skips-queue.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +FAIL earlier-merge: exit 2, wanted 0: pkg-queue rc=1 ℹ pass 0 ℹ fail 1 land-work: refused: gate-failed: pkg-queue, see /home/jwoltje/darkwing-scratch/r116/tmp/tmp.lsncpSSYQh/c/earlier-merge/tmp/land-work-logs.d0b5hb/pkg-queue.log +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +FAIL dirty-during: exit 2, wanted 2 checkout-dirty: pkg-queue rc=1 ℹ pass 0 ℹ fail 1 land-work: refused: gate-failed: pkg-queue, see /home/jwoltje/darkwing-scratch/r116/tmp/tmp.lsncpSSYQh/c/dirty-during/tmp/land-work-logs.SteamJ/pkg-queue.log +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +FAIL a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +FAIL moved: exit 2, wanted 2 base-moved: pkg-queue rc=1 ℹ pass 0 ℹ fail 1 land-work: refused: gate-failed: pkg-queue, see /home/jwoltje/darkwing-scratch/r116/tmp/tmp.lsncpSSYQh/c/moved/tmp/land-work-logs.30S2yZ/pkg-queue.log +FAIL base-moved keeps the base where it moved to +FAIL dry: exit 2, wanted 0: pkg-queue rc=1 ℹ pass 0 ℹ fail 1 land-work: refused: gate-failed: pkg-queue, see /home/jwoltje/darkwing-scratch/r116/tmp/tmp.lsncpSSYQh/c/dry/tmp/land-work-logs.zNYKFz/pkg-queue.log +OK --dry-run writes no ref +FAIL --dry-run prints the commit with --subject and --attribution +FAIL --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +FAIL land: exit 2, wanted 0: pkg-queue rc=1 ℹ pass 0 ℹ fail 1 land-work: refused: gate-failed: pkg-queue, see /home/jwoltje/darkwing-scratch/r116/tmp/tmp.lsncpSSYQh/c/land/tmp/land-work-logs.5FJ6Ru/pkg-queue.log +FAIL the landing is one commit on the old base +FAIL its diff is the reviewed diff by patch-id +FAIL its tree is the dry run's +FAIL the message has the option's subject, the citations and the attribution last +FAIL it prints the line for the PM +FAIL the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +FAIL the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 68 passed, 16 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s17-gate-scripts.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s17-gate-scripts.log new file mode 100644 index 000000000..7f67c73dd --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s17-gate-scripts.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +FAIL dirty-during: exit 0, wanted 2 checkout-dirty: pkg-demo rc=0 ℹ pass 1 ℹ fail 0 GATE_PASSED +FAIL a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +FAIL gate-script: exit 0, wanted 2 gate-failed: pkg-demo rc=0 ℹ pass 1 ℹ fail 0 GATE_PASSED +FAIL a failing scripts/test-*.sh fails the gate +FAIL a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +FAIL moved: exit 0, wanted 2 base-moved: pkg-demo rc=0 ℹ pass 1 ℹ fail 0 GATE_PASSED +FAIL base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +FAIL the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 76 passed, 8 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s18-base-moved-cas.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s18-base-moved-cas.log new file mode 100644 index 000000000..becaafda2 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s18-base-moved-cas.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +FAIL moved: exit 0, wanted 2 base-moved: script-demo rc=0 ℹ pass 1 GATE_PASSED +FAIL base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 82 passed, 2 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s19-dry-run.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s19-dry-run.log new file mode 100644 index 000000000..06d299678 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s19-dry-run.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +FAIL --dry-run writes no ref +FAIL --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +FAIL its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 81 passed, 3 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s20-checkout-sync.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s20-checkout-sync.log new file mode 100644 index 000000000..4bfff31a6 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s20-checkout-sync.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +FAIL the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s21-subject.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s21-subject.log new file mode 100644 index 000000000..3e822d401 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s21-subject.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +FAIL the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s22-attribution.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s22-attribution.log new file mode 100644 index 000000000..d7f3f049d --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s22-attribution.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +FAIL --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +FAIL the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 82 passed, 2 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s23-cleanup-worktree.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s23-cleanup-worktree.log new file mode 100644 index 000000000..af04ec9ea --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s23-cleanup-worktree.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +FAIL a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +FAIL patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +FAIL gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +FAIL a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +FAIL --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +FAIL the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 78 passed, 6 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s24-cleanup-network.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s24-cleanup-network.log new file mode 100644 index 000000000..609972afd --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s24-cleanup-network.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +FAIL the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s25-cleanup-scratch.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s25-cleanup-scratch.log new file mode 100644 index 000000000..af04ec9ea --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s25-cleanup-scratch.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +FAIL a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +FAIL patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +FAIL gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +FAIL a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +FAIL --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +FAIL the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 78 passed, 6 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s26-cleanup-link.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s26-cleanup-link.log new file mode 100644 index 000000000..decdd8fbd --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s26-cleanup-link.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 84 passed, 0 failed diff --git a/agents/darkwing/work/queue-116/r2/mutants/mutant-s27-cleanup-follows-link.log b/agents/darkwing/work/queue-116/r2/mutants/mutant-s27-cleanup-follows-link.log new file mode 100644 index 000000000..b1a71d966 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/mutants/mutant-s27-cleanup-follows-link.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +FAIL the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 83 passed, 1 failed diff --git a/agents/darkwing/work/queue-116/r2/repro.sh b/agents/darkwing/work/queue-116/r2/repro.sh new file mode 100644 index 000000000..a759ee5b0 --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/repro.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# Apply build.patch to a fresh export of BASE and compare every manifest digest. +set -euo pipefail +P=~/darkwing-scratch/r116/pkt2 +X=~/darkwing-scratch/r116/repro2 +rm -rf "$X"; mkdir -p "$X" +git -C /mnt/storage/src/mosaic-stack archive 1223a0f37 | tar -x -C "$X" +(cd "$X" && git apply "$P/build.patch") +(cd "$X" && sha256sum -c --quiet "$P/candidate-manifest.sha256") && echo DIGESTS_OK diff --git a/agents/darkwing/work/queue-116/r2/test-land-work.log b/agents/darkwing/work/queue-116/r2/test-land-work.log new file mode 100644 index 000000000..decdd8fbd --- /dev/null +++ b/agents/darkwing/work/queue-116/r2/test-land-work.log @@ -0,0 +1,86 @@ +OK args: exit 2, target-branch +OK args: exit 2, target-branch +OK args: exit 4 +OK args: exit 4 +OK args: exit 4 +OK --base next refuses before the config is read (got 2) +OK a missing system config exits 3 (got 3) +OK nobus: exit 3 +OK schema-table: exit 2, bus-schema +OK schema-meta: exit 2, bus-schema +OK openBus opens the database read-only +OK other-business: exit 2, decision-not-found +OK no-raise: exit 2, decision-not-found +OK not-a-merge: exit 2, not-a-merge +OK open: exit 2, not-resolved +OK withdrawn: exit 2, not-resolved +OK by-agent: exit 2, not-human +OK via-webui: exit 2, not-human +OK no-answer: exit 2, not-human +OK answer-role: exit 2, not-human +OK answer-run: exit 2, not-human +OK answer-choice: exit 2, not-human +OK two-answers: exit 2, not-human +OK chose-no: exit 2, not-merge-option +OK two-refs: exit 2, work-ref +OK bad-ref: exit 2, work-ref +OK task-ref-disagrees: exit 2, work-ref +OK raise-task-disagrees: exit 2, work-ref +OK target-main: exit 2, target-branch +OK superseded-question: exit 2, superseded +OK superseded-task: exit 2, superseded +OK superseded-by: exit 2, superseded +OK no-verdict: exit 2, no-verdict +OK changes-later: exit 2, not-approved +OK short-commit: exit 2, not-approved +OK wrong-task-body: exit 2, not-approved +OK args: exit 2, decision-not-found +OK earlier-merge: exit 0 +OK ref-moved: exit 2, ref-moved +OK root-top: exit 2, root-file +OK root-newdir: exit 2, root-file +OK root-src: exit 2, root-file +OK unrelated: exit 2, base-conflict +OK empty: exit 2, base-conflict +OK an empty reviewed diff says so +OK dirty-changed: exit 2, checkout-dirty +OK dirty-staged: exit 2, checkout-dirty +OK dirty-untracked: exit 2, checkout-dirty +OK conflict: exit 2, base-conflict +OK a refusal after the worktree is added leaves no worktree or scratch +OK cleanup looks for the worktree's Docker network +OK dirty-during: exit 2, checkout-dirty +OK a reviewed path dirtied during the gate moves no ref +OK drift: exit 2, patch-drift +OK patch-drift leaves no worktree or scratch +OK gate-pkg: exit 2, gate-failed +OK gate-failed names the failing step's log, and it exists +OK gate-failed leaves no worktree or scratch +OK gate-script: exit 2, gate-failed +OK a failing scripts/test-*.sh fails the gate +OK a failed gate moves no ref +OK nomods: exit 4 +OK a target without node_modules leaves no worktree or scratch +OK moved: exit 2, base-moved +OK base-moved keeps the base where it moved to +OK dry: exit 0 +OK --dry-run writes no ref +OK --dry-run prints the commit with --subject and --attribution +OK --dry-run runs the gate +OK --dry-run leaves no worktree or scratch +OK land: exit 0 +OK the landing is one commit on the old base +OK its diff is the reviewed diff by patch-id +OK its tree is the dry run's +OK the message has the option's subject, the citations and the attribution last +OK it prints the line for the PM +OK the checked-out base has the reviewed paths and keeps the unrelated edit +OK only refs/heads/refactor exists in the target +OK the work ref is unchanged +OK the bus database is unchanged +OK the gate ran each package suite but queue, and each scripts/test-*.sh +OK the landing leaves no worktree or scratch +OK the target's node_modules is still there, with its contents +OK the worktree's Docker network is removed +--- +land-work selftests: 84 passed, 0 failed