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 <[email protected]>
This commit is contained in:
@@ -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.
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||||
@@ -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
|
||||||
Executable
+21
@@ -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)"
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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 <new-branch-name>
|
||||||
|
|
||||||
|
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 <new-branch-name>
|
||||||
|
|
||||||
|
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
|
||||||
@@ -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
|
||||||
@@ -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 <command> [<revision>...] -- [<file>...]'
|
||||||
|
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
|
||||||
@@ -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)
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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 <command> [<revision>...] -- [<file>...]'
|
||||||
|
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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
Reference in New Issue
Block a user