✔ REQ-ROLE-2 REQ-THREAD-1: one holder per thread, through the broker and the trigger (30.566185ms) ✔ REQ-ROLE-2 REQ-THREAD-1: the 3e triggers refuse writes that skip the broker (48.915635ms) ✔ REQ-MSG-1: a message to or from the assistant names its thread, or is refused (25.590135ms) ✔ REQ-MSG-1: the chief of staff's reply comes back to the thread that sent the work (508.530047ms) ✔ REQ-MSG-1: a reply can't carry one thread instance's thread to another thread instance (17.028391ms) ✔ REQ-THREAD-1 REQ-USER-2: one thread's messages never reach another thread's holder (23.044508ms) ✔ REQ-LAUNCH-1: a message to a thread with no holder waits, and the next holder gets it (24.695534ms) ✔ REQ-THREAD-2 REQ-LAUNCH-1: threadIdle releases only a thread with nothing waiting, and only for its holder (26.160233ms) ✔ REQ-THREAD-2 REQ-LAUNCH-1: a message delivered to a run that ended unread doesn't hold up the next holder (22.488663ms) ✔ REQ-ROLE-2 REQ-THREAD-1 Q169: a role.revoke the human approved ends every thread run of the assistant (20.719402ms) ✔ Q169 REQ-USER-2: assistant.stop ends the human's own assistant thread runs, and only the human's (29.06268ms) ✔ REQ-USER-2: the human verbs refuse another owner's thread (22.943174ms) ✔ REQ-THREAD-1: thread.create refuses when the business has no thread instance or more than one (15.88256ms) ✔ REQ-ORG-2: projects and threads are named once, and the repo names a business project (20.464236ms) ✔ REQ-THREAD-2: thread.messages returns the thread's history in pages and writes nothing (73.382565ms) ✔ project.create refuses a repository name without its matching repo before any write (11.155347ms) ✔ project.create keeps unrelated names with and without a repository (7.802938ms) ℹ tests 17 ℹ suites 0 ℹ pass 17 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 993.105827