Candidate on base 94ece491f: 5 files, manifest 1910eb5a; only
decision-close.test.mjs changed since round 1. Mutants m1-m4 killed
(m4 is Filbert's f4); gate passed with no flakes.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
95 lines
7.4 KiB
Plaintext
95 lines
7.4 KiB
Plaintext
✔ a raw token file, with or without one trailing newline, reaches curl only through the config stream (112.596435ms)
|
||
✔ the raw path accepts nothing else, and refuses before curl runs (343.252935ms)
|
||
✔ the file checks still apply on the raw path: mode, symlink, missing, directory (265.365245ms)
|
||
✔ the raw path base URL has no override (53.251437ms)
|
||
✔ the JSON path is unchanged, and JSON never falls through to the raw path (236.204291ms)
|
||
✔ a file that changes between the two reads refuses before curl runs, with or without a body (713.370775ms)
|
||
✔ the token reaches no child environment, even with an inherited CFG or SHELLOPTS=allexport (644.923626ms)
|
||
✔ real helper GET HTTP 200 preserves exit 0 without credentials (13.985662ms)
|
||
✔ real helper POST HTTP 201 preserves exit 0 without credentials (9.974403ms)
|
||
✔ real helper GET HTTP 403 preserves exit 1 without credentials (8.215584ms)
|
||
✔ fixture git subjects only, follow-ups and three session kinds (155.731988ms)
|
||
✔ text and JSON carry same numbers, open and truncated title (208.249206ms)
|
||
✔ missing credentials exit 2, no-issues never calls API and shows unknown (170.99742ms)
|
||
✔ empty range gives no rows and zero totals (145.58954ms)
|
||
✔ inclusive UTC dates, first-line preamble only, role and seat boundaries (144.959642ms)
|
||
✔ close-only issue included, even median, missing metadata stays unknown (143.968858ms)
|
||
✔ unique commits but per-issue links count multiple tags once each (159.81512ms)
|
||
✔ issue pages of 50, 50 and 7 read 107 issues in 3 pages (316.464499ms)
|
||
✔ one short page reads 1 page; --no-issues reads none and says so (248.25564ms)
|
||
✔ a short page 10 is read; a full page 10 refuses at the ceiling (684.800819ms)
|
||
✔ an issue number on two pages refuses (149.094795ms)
|
||
✔ a failing page 2 refuses the whole read without its stderr (151.397967ms)
|
||
✔ page 2 with a malformed record refuses (155.022716ms)
|
||
✔ page 2 with more than 50 rows refuses (161.678724ms)
|
||
✔ bad API payload not JSON refuses (153.991244ms)
|
||
✔ bad API payload {} refuses (143.26862ms)
|
||
✔ bad API payload [{"number":1}] refuses (162.179964ms)
|
||
✔ partial or malformed session log refuses with location, not content (146.946281ms)
|
||
✔ a U+2028 or U+2029 inside a session string is one line, not a malformed record (138.667606ms)
|
||
✔ no sessions is an empty table; symlink source refuses (198.406022ms)
|
||
✔ reads only refactor even when another branch is checked out (166.926339ms)
|
||
✔ invalid dates, reverse dates and duplicate options refuse (116.464265ms)
|
||
✔ T3 agent assignments do not count as human in Table 2 (137.022158ms)
|
||
✔ preamble parsing and issue number boundaries (0.432345ms)
|
||
✔ T3 header: agent, or board from control-board; anything short of the full header is human (0.138894ms)
|
||
✔ no closed issues with human messages means undefined ratio, not invented zero (0.186017ms)
|
||
✔ T3: seat, archived, unmapped and Researcher threads count; imported, deleted and other-project threads do not (463.693586ms)
|
||
✔ T3: the default path is read from HOME and prints no path line; --no-t3 says so (672.883185ms)
|
||
✔ T3: a HOME with no database exits 1 and names --no-t3 (126.058453ms)
|
||
✔ T3: a file that is not a database exits 1 and names --no-t3 (140.861124ms)
|
||
✔ T3: a seat thread renamed to another seat exits 1 naming thread, title and roles (395.04346ms)
|
||
✔ T3: an unmapped thread addressed as a seat exits 1 (382.815261ms)
|
||
✔ T3: a header to another thread id is not cross-checked (397.981604ms)
|
||
✔ T3: no project, or two, for this root exits 1 (1039.538751ms)
|
||
✔ T3: a removed column exits 1 and names it (247.531731ms)
|
||
✔ T3: a missing table exits 1 and names it (242.276716ms)
|
||
✔ T3: a counted row with an unknown role exits 1 without its text (399.948767ms)
|
||
✔ T3: a counted row with role reasoning without the reasoning: id prefix exits 1 without its text (397.0135ms)
|
||
✔ T3: a counted row with non-text content exits 1 without its text (412.407281ms)
|
||
✔ T3: a counted row with an unparseable created_at exits 1 without its text (406.576103ms)
|
||
✔ T3: a reasoning summary is skipped before any check and counted as excluded (1061.389988ms)
|
||
✔ T3: a missing orchestration_events makes the diagnostic unknown and keeps the counts (699.28435ms)
|
||
✔ T3: a human message with no event counts in humanWithoutEvent (387.440149ms)
|
||
✔ T3: an unparseable event makes the diagnostic unknown and keeps the counts (703.252126ms)
|
||
✔ T3: an event with no string messageId makes the diagnostic unknown and keeps the counts (693.982101ms)
|
||
✔ T3: an error that is not from SQLite is rethrown, not reported as a database failure (349.874328ms)
|
||
✔ T3: a symlink at ~/.t3 exits 1 (133.549306ms)
|
||
✔ T3: a symlink at ~/.t3/userdata exits 1 (137.461189ms)
|
||
✔ T3: a symlink at ~/.t3/userdata/state.sqlite exits 1 (133.92017ms)
|
||
✔ T3: with --t3-db, a symlinked file or directory exits 1 (441.885872ms)
|
||
✔ T3 WAL: the newest message only in -wal, writer attached, is counted (387.496ms)
|
||
✔ T3 WAL: stopped cleanly, counts are correct and the main file is unchanged (429.478281ms)
|
||
✔ T3 WAL: -wal without -shm in a writable directory is read (480.761623ms)
|
||
✔ T3 WAL: -wal without -shm in a read-only directory exits 1 (406.343942ms)
|
||
✔ T3 WAL: stopped cleanly in a read-only directory exits 1 (398.546474ms)
|
||
✔ T3: a lock held past the 5 s busy timeout exits 1 and names --no-t3 (5394.748109ms)
|
||
✔ a done row whose closing issue is open is a violation; a row that is not done is not (1.752173ms)
|
||
✔ an issue several rows close is expected closed only once all of them are done (0.473996ms)
|
||
✔ closure needs positive evidence: unknown is undecided, and so is a skipped or short issue check (0.36392ms)
|
||
✔ each owner of an in-progress or in-review row gets one liveness class (7.337905ms)
|
||
✔ a required row not done after 14 days is a violation; a legacy row uses genesis as its lower bound (0.368144ms)
|
||
✔ an ISO requiredSince, as `set required` writes it, ages from its UTC day; one that does not parse is a violation (0.23185ms)
|
||
✔ the text section always ends in a count and a result, and never prints a full pass (0.303701ms)
|
||
✔ pidAlive: a running pid is present, an exited one is gone, and EPERM still means present (24.55336ms)
|
||
✔ issue states: open list first, then the metric page, then at most 10 lookups (261.826371ms)
|
||
✔ a full open list: lookups settle what it leaves out, and only an unsettled issue keeps it undecided (348.552563ms)
|
||
✔ the open list refuses on a failed call or a bad record, and never echoes the helper (153.454505ms)
|
||
✔ a helper call past the deadline is killed with its child, and the call reports it (2006.855521ms)
|
||
✔ readQueue loads queue.json through the queue validator and refuses anything else (124.008326ms)
|
||
✔ protected changes list every in-range entry that changes a required or parked row (417.671142ms)
|
||
✔ the CLI prints the queue section above the weekly table and under a queue key in --json (511.681912ms)
|
||
✔ a queue with nothing wrong prints 0 violations and a reduced pass, never a full pass (234.06589ms)
|
||
✔ --no-issues makes no call and leaves the issue checks undecided; --no-queue skips the section (288.041585ms)
|
||
✔ the CLI refuses a bad queue before any call, and a failed open list with exit 2 (286.160874ms)
|
||
✔ --unsupported-runtime repeats once per seat and takes a seat name (323.980299ms)
|
||
✔ an unreadable config makes every owner invalid instead of passing them (178.33289ms)
|
||
ℹ tests 86
|
||
ℹ suites 0
|
||
ℹ pass 86
|
||
ℹ fail 0
|
||
ℹ cancelled 0
|
||
ℹ skipped 0
|
||
ℹ todo 0
|
||
ℹ duration_ms 22378.997266
|