Candidate manifest sha256 710d50866e77055b7231a53e3601bd2bab7686b722160f81ddda030875f67e9b, 30 files. Targeted gate green, 77 of 77 mutants killed, repro DIGESTS_OK. Co-Authored-By: Claude Opus 5.5 <[email protected]>
94 lines
6.7 KiB
Plaintext
94 lines
6.7 KiB
Plaintext
✔ endLaunch writes session.ended, releases the run claim and kills its capabilities (137.543464ms)
|
||
✔ endLaunch refuses an unknown run, a second end and a rebind of the ended run (120.021986ms)
|
||
✔ a restarted broker refuses to rebind an ended run; a refused rebind leaves the run unbound (132.064669ms)
|
||
✔ endLaunch leaves a claim another run took alone (149.734298ms)
|
||
✔ refuse records action.refused against the caller with the code only (114.156207ms)
|
||
✔ launches off refuses role.launch with launch-revoked until launches on (168.024242ms)
|
||
✔ broker process: launch ops authorize role.launch, record refusals and end runs (276.070988ms)
|
||
✔ the assistant sends to the user and to the chief of staff only (298.053177ms)
|
||
✔ an assistant send to any other role, or to the tester, is refused and logged (323.194154ms)
|
||
✔ only the user and the chief of staff may send to the assistant; the tester is refused by default (331.466225ms)
|
||
✔ REQ-ASSIST-2 REQ-THREAD-1 thread.send to an instance that does not hear from the user is refused and stores nothing (263.555445ms)
|
||
✔ a sender-side list alone refuses a send to a role that has no list (273.697771ms)
|
||
✔ a target-side list alone refuses a send from a role that has no list (260.0868ms)
|
||
✔ the sender list is checked before the target list (233.488961ms)
|
||
✔ roles without the field behave exactly as before (337.103087ms)
|
||
✔ a business with no role definitions at all is unlimited (257.194553ms)
|
||
✔ a malformed messaging field refuses at boot (72.51818ms)
|
||
✔ the assistant's review.request to a reviewer is refused and logged, even with an approved decision (272.815077ms)
|
||
✔ a review.verdict to the assistant from a role outside its receiveFrom is refused and logged (314.644543ms)
|
||
✔ review requests and verdicts between roles without the field are unchanged (254.089198ms)
|
||
✔ broker process binds trusted launches, offers reader capabilities, refuses human mutation, closes cleanly (191.190101ms)
|
||
✔ startup token refusal returns safe code without value or partial listening broker (44.149945ms)
|
||
✔ loaded fixture token is absent from socket replies and SQLite, including refusal evidence (183.344282ms)
|
||
✔ killed broker leaves an explicit stale lock; another process cannot silently reclaim it (183.817244ms)
|
||
✔ trusted host registers later launches; socket clients never have a registration verb (179.835692ms)
|
||
✔ runtime excludes declared project roots even when host supplies no repoRoots (45.374223ms)
|
||
✔ a refused launch binding leaves the broker and existing capabilities alive; bad protocol stops it (175.407528ms)
|
||
✔ v3b prototype refusals, views and append-only mutations (1334.201835ms)
|
||
✔ creates private WAL store and excludes a second writer until explicit close (123.339327ms)
|
||
✔ rollback is atomic and schema metadata is checked against trusted DDL, not just itself (154.425884ms)
|
||
✔ existing empty database and symlink runtime directory refuse, never initialize over damage (163.025591ms)
|
||
✔ crash during a transaction recovers no partial event after explicit fixture-only lock removal (157.316868ms)
|
||
✔ writer refuses mixed at/read_at forms atomically, even through trusted SQL helpers (96.02537ms)
|
||
✔ async transactions refuse before invoking their function (84.013085ms)
|
||
✔ REQ-ROLE-2 REQ-THREAD-1: one holder per thread, through the broker and the trigger (302.687573ms)
|
||
✔ REQ-ROLE-2 REQ-THREAD-1: the 3e triggers refuse writes that skip the broker (1027.154215ms)
|
||
✔ REQ-MSG-1: a message to or from the assistant names its thread, or is refused (263.303041ms)
|
||
✔ REQ-MSG-1: the chief of staff's reply comes back to the thread that sent the work (3369.40474ms)
|
||
✔ REQ-MSG-1: a reply can't carry one thread instance's thread to another thread instance (99.388113ms)
|
||
✔ REQ-THREAD-1 REQ-USER-2: one thread's messages never reach another thread's holder (151.976851ms)
|
||
✔ REQ-LAUNCH-1: a message to a thread with no holder waits, and the next holder gets it (147.334952ms)
|
||
✔ REQ-THREAD-2 REQ-LAUNCH-1: threadIdle releases only a thread with nothing waiting, and only for its holder (176.886747ms)
|
||
✔ REQ-THREAD-2 REQ-LAUNCH-1: a message delivered to a run that ended unread doesn't hold up the next holder (150.443584ms)
|
||
✔ REQ-ROLE-2 REQ-THREAD-1: an approved role.revoke never reaches a thread run, and the thread stays held (131.384531ms)
|
||
✔ REQ-USER-2: the human verbs refuse another owner's thread (146.34654ms)
|
||
✖ REQ-THREAD-1: thread.create refuses when the business has no thread instance or more than one (48.868209ms)
|
||
✔ REQ-ORG-2: projects and threads are named once, and the repo names a business project (139.267115ms)
|
||
✔ REQ-THREAD-2: thread.messages returns the thread's history in pages and writes nothing (460.451661ms)
|
||
ℹ tests 48
|
||
ℹ suites 0
|
||
ℹ pass 47
|
||
ℹ fail 1
|
||
ℹ cancelled 0
|
||
ℹ skipped 0
|
||
ℹ todo 0
|
||
ℹ duration_ms 6684.568044
|
||
|
||
✖ failing tests:
|
||
|
||
test at tests/threads.test.mjs:448:1
|
||
✖ REQ-THREAD-1: thread.create refuses when the business has no thread instance or more than one (48.868209ms)
|
||
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
|
||
+ actual - expected
|
||
|
||
Comparison {
|
||
+ code: 'storage-refused'
|
||
- code: 'thread-instance-missing'
|
||
}
|
||
|
||
at TestContext.<anonymous> (file:///home/jwoltje/darkwing-scratch/r121/r2wt/packages/bus/tests/threads.test.mjs:452:10)
|
||
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||
at Test.run (node:internal/test_runner/test:1402:25)
|
||
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
|
||
at Test.postRun (node:internal/test_runner/test:1542:19)
|
||
at Test.run (node:internal/test_runner/test:1467:12)
|
||
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
|
||
generatedMessage: true,
|
||
code: 'ERR_ASSERTION',
|
||
actual: Error: storage-refused
|
||
at #refused (file:///home/jwoltje/darkwing-scratch/r121/r2wt/packages/bus/src/broker.mjs:825:47)
|
||
at Broker.request (file:///home/jwoltje/darkwing-scratch/r121/r2wt/packages/bus/src/broker.mjs:896:26)
|
||
at Object.call (file:///home/jwoltje/darkwing-scratch/r121/r2wt/packages/bus/tests/threads.test.mjs:50:44)
|
||
at assert.throws.code (file:///home/jwoltje/darkwing-scratch/r121/r2wt/packages/bus/tests/threads.test.mjs:452:25)
|
||
at getActual (node:assert:580:5)
|
||
at strict.throws (node:assert:728:24)
|
||
at TestContext.<anonymous> (file:///home/jwoltje/darkwing-scratch/r121/r2wt/packages/bus/tests/threads.test.mjs:452:10)
|
||
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||
at Test.run (node:internal/test_runner/test:1402:25)
|
||
at Test.processPendingSubtests (node:internal/test_runner/test:974:18),
|
||
expected: { code: 'thread-instance-missing' },
|
||
operator: 'throws',
|
||
diff: 'simple'
|
||
}
|