✔ sessionModel: the route is the instance's own vars, and a missing one refuses no-route by name (13.220721ms)
✔ a pi bundle: prompt, policy, tools and manifest, 0600 in a 0700 directory (3.158866ms)
✔ a chief-of-staff bundle lists launch among the bus tools and the manifest's typed tools (1.615558ms)
✔ a chief-of-staff bundle lists end_run, change_organization and set_name as typed and nothing untyped, for either harness (3.458688ms)
✔ the stop line names end_run for a role.end holder, and every other role keeps today's text (3.597839ms)
✔ a claude-code bundle adds the wrapped gate hook and the MCP config (1.349549ms)
✔ the prompt's built-in tools line is the harness's own names, as the manifest lists them (5.366602ms)
✔ the prompt names the project clones in the workspace, and none when there are none (4.297295ms)
✔ the prompt explains the review loop to a role with push_working, and reviews to one with fetch_review (4.354248ms)
✔ the prompt explains landing to a role with land_work, and to no other (2.278293ms)
✔ the prompt tells the pm to ask the chief of staff for sessions, and no other role (4.620718ms)
✔ a bundle is written once: an existing file refuses (1.023492ms)
✔ a path with a single quote can't go into the hook command (1.097699ms)
✔ web grant on pi: the bundle has web_search and web_fetch, and no built-in web tool (1.469741ms)
✔ no web grant on pi: no web tool in the bundle, and the gate blocks a web call (1.442135ms)
✔ web grant on claude-code: the bundle has web_search and web_fetch, and no built-in web tool (1.260818ms)
✔ no web grant on claude-code: no web tool in the bundle, and the gate blocks a web call (1.228995ms)
✔ a granted session's gate lets the typed web tools through and still blocks the built-ins (1.21318ms)
✔ search-source searxng-url: a granted role gets the typed broker tools and no harness web tool; an ungranted role gets nothing (3.562225ms)
✔ search-source searxng-bundled: a granted role gets the typed broker tools and no harness web tool; an ungranted role gets nothing (2.987106ms)
✔ search-source harness-builtin: claude-code gets WebSearch and WebFetch and no typed web tool, only when granted (4.513877ms)
✔ search-source harness-builtin is refused for a granted pi role, which has no built-in web tool (1.516905ms)
ℹ tests 22
ℹ suites 0
ℹ pass 22
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 142.64894
