control-tools: exit 0; ℹ tests 16 ℹ pass 16 ℹ fail 0 
control-bundle: exit 0; ℹ tests 11 ℹ pass 11 ℹ fail 0 
control-runner: exit 0; ℹ tests 23 ℹ pass 23 ℹ fail 0 
m1-end-run-always: exit 1; ℹ tests 16 ℹ pass 9 ℹ fail 7 
  failed: ✖ a coder gets no launch, no resolve_decision, and no task tools without a tracker
  failed: ✖ a coder with a tracker gets its own task tools and no task_reassign
  failed: ✖ an action outside the instance's authority has no tool
  failed: ✖ a role without role.end or organization.change gets neither tool, and each tool follows its own grant
  failed: ✖ failing tests:
  failed: ✖ the assistant gets send_message and the reads, no launch
  failed: ✖ the PM gets its task verbs and the reads, and no launch
  failed: ✖ the review loop: push_working and request_review for the coder, fetch_review and review_verdict for the reviewer, none for the PM
m2-change-organization-always: exit 1; ℹ tests 16 ℹ pass 9 ℹ fail 7 
  failed: ✖ a coder gets no launch, no resolve_decision, and no task tools without a tracker
  failed: ✖ a coder with a tracker gets its own task tools and no task_reassign
  failed: ✖ an action outside the instance's authority has no tool
  failed: ✖ a role without role.end or organization.change gets neither tool, and each tool follows its own grant
  failed: ✖ failing tests:
  failed: ✖ the assistant gets send_message and the reads, no launch
  failed: ✖ the PM gets its task verbs and the reads, and no launch
  failed: ✖ the review loop: push_working and request_review for the coder, fetch_review and review_verdict for the reviewer, none for the PM
m3-end-run-never: exit 1; ℹ tests 16 ℹ pass 13 ℹ fail 3 
  failed: ✖ a role without role.end or organization.change gets neither tool, and each tool follows its own grant
  failed: ✖ end_run sends role and reason, no decision; change_organization sends revision and the organization keys
  failed: ✖ failing tests:
  failed: ✖ the chief of staff gets launch, send_message, end_run and change_organization, and no task verbs
m3b-end-run-never-bundle: exit 1; ℹ tests 11 ℹ pass 8 ℹ fail 3 
  failed: ✖ a chief-of-staff bundle lists end_run and change_organization as typed and nothing untyped, for either harness
  failed: ✖ a chief-of-staff bundle lists launch among the bus tools and the manifest's typed tools
  failed: ✖ failing tests:
  failed: ✖ the stop line names end_run for a role.end holder, and every other role keeps today's text
m4-change-organization-never: exit 1; ℹ tests 16 ℹ pass 13 ℹ fail 3 
  failed: ✖ a role without role.end or organization.change gets neither tool, and each tool follows its own grant
  failed: ✖ end_run sends role and reason, no decision; change_organization sends revision and the organization keys
  failed: ✖ failing tests:
  failed: ✖ the chief of staff gets launch, send_message, end_run and change_organization, and no task verbs
m4b-change-organization-never-bundle: exit 1; ℹ tests 11 ℹ pass 9 ℹ fail 2 
  failed: ✖ a chief-of-staff bundle lists end_run and change_organization as typed and nothing untyped, for either harness
  failed: ✖ a chief-of-staff bundle lists launch among the bus tools and the manifest's typed tools
  failed: ✖ failing tests:
m5-end-run-verb: exit 1; ℹ tests 16 ℹ pass 15 ℹ fail 1 
  failed: ✖ end_run sends role and reason, no decision; change_organization sends revision and the organization keys
  failed: ✖ failing tests:
m5b-end-run-verb-runner: exit 1; ℹ tests 23 ℹ pass 22 ℹ fail 1 
  failed: ✖ end_run and change_organization reach the broker with the tool's arguments, and refusals keep their codes
  failed: ✖ failing tests:
m6-end-run-action: exit 1; ℹ tests 16 ℹ pass 14 ℹ fail 2 
  failed: ✖ end_run sends role and reason, no decision; change_organization sends revision and the organization keys
  failed: ✖ failing tests:
  failed: ✖ the chief of staff gets launch, send_message, end_run and change_organization, and no task verbs
m7-change-organization-verb: exit 1; ℹ tests 16 ℹ pass 15 ℹ fail 1 
  failed: ✖ end_run sends role and reason, no decision; change_organization sends revision and the organization keys
  failed: ✖ failing tests:
m7b-change-organization-verb-runner: exit 1; ℹ tests 23 ℹ pass 22 ℹ fail 1 
  failed: ✖ end_run and change_organization reach the broker with the tool's arguments, and refusals keep their codes
  failed: ✖ failing tests:
m8-change-organization-action: exit 1; ℹ tests 16 ℹ pass 14 ℹ fail 2 
  failed: ✖ end_run sends role and reason, no decision; change_organization sends revision and the organization keys
  failed: ✖ failing tests:
  failed: ✖ the chief of staff gets launch, send_message, end_run and change_organization, and no task verbs
m9-reason-optional: exit 1; ℹ tests 16 ℹ pass 15 ℹ fail 1 
  failed: ✖ end_run sends role and reason, no decision; change_organization sends revision and the organization keys
  failed: ✖ failing tests:
m10-end-run-decision: exit 1; ℹ tests 16 ℹ pass 15 ℹ fail 1 
  failed: ✖ end_run sends role and reason, no decision; change_organization sends revision and the organization keys
  failed: ✖ failing tests:
m11-reason-unbounded: exit 1; ℹ tests 16 ℹ pass 15 ℹ fail 1 
  failed: ✖ end_run sends role and reason, no decision; change_organization sends revision and the organization keys
  failed: ✖ failing tests:
m12-revision-optional: exit 1; ℹ tests 16 ℹ pass 15 ℹ fail 1 
  failed: ✖ end_run sends role and reason, no decision; change_organization sends revision and the organization keys
  failed: ✖ failing tests:
m13-revision-pattern: exit 1; ℹ tests 16 ℹ pass 15 ℹ fail 1 
  failed: ✖ end_run sends role and reason, no decision; change_organization sends revision and the organization keys
  failed: ✖ failing tests:
m14-description-limits: exit 1; ℹ tests 16 ℹ pass 15 ℹ fail 1 
  failed: ✖ end_run sends role and reason, no decision; change_organization sends revision and the organization keys
  failed: ✖ failing tests:
m15-harness-key-dropped: exit 1; ℹ tests 16 ℹ pass 14 ℹ fail 2 
  failed: ✖ end_run sends role and reason, no decision; change_organization sends revision and the organization keys
  failed: ✖ failing tests:
  failed: ✖ the organization keys change_organization takes are the broker's ORGANIZATION_KEYS
m16-broker-key-added: exit 1; ℹ tests 16 ℹ pass 15 ℹ fail 1 
  failed: ✖ failing tests:
  failed: ✖ the organization keys change_organization takes are the broker's ORGANIZATION_KEYS
m17-bundle-text-unchanged: exit 1; ℹ tests 11 ℹ pass 10 ℹ fail 1 
  failed: ✖ failing tests:
  failed: ✖ the stop line names end_run for a role.end holder, and every other role keeps today's text
m18-bundle-text-for-all: exit 1; ℹ tests 11 ℹ pass 9 ℹ fail 2 
  failed: ✖ a pi bundle: prompt, policy, tools and manifest, 0600 in a 0700 directory
  failed: ✖ failing tests:
  failed: ✖ the stop line names end_run for a role.end holder, and every other role keeps today's text
m19-text-reason: exit 1; ℹ tests 11 ℹ pass 10 ℹ fail 1 
  failed: ✖ failing tests:
  failed: ✖ the stop line names end_run for a role.end holder, and every other role keeps today's text
m20-text-limits: exit 1; ℹ tests 11 ℹ pass 10 ℹ fail 1 
  failed: ✖ failing tests:
  failed: ✖ the stop line names end_run for a role.end holder, and every other role keeps today's text
m21-text-fallback: exit 1; ℹ tests 11 ℹ pass 10 ℹ fail 1 
  failed: ✖ failing tests:
  failed: ✖ the stop line names end_run for a role.end holder, and every other role keeps today's text
m22-runner-drops-args: exit 1; ℹ tests 23 ℹ pass 21 ℹ fail 2 
  failed: ✖ end_run and change_organization reach the broker with the tool's arguments, and refusals keep their codes
  failed: ✖ failing tests:
  failed: ✖ typed tools carry the runner's capability; launch goes to the host's launch socket
m23-runner-name-as-verb: exit 1; ℹ tests 23 ℹ pass 21 ℹ fail 2 
  failed: ✖ end_run and change_organization reach the broker with the tool's arguments, and refusals keep their codes
  failed: ✖ failing tests:
  failed: ✖ typed tools carry the runner's capability; launch goes to the host's launch socket
m24-runner-hides-code: exit 1; ℹ tests 23 ℹ pass 21 ℹ fail 2 
  failed: ✖ end_run and change_organization reach the broker with the tool's arguments, and refusals keep their codes
  failed: ✖ failing tests:
  failed: ✖ typed tools carry the runner's capability; launch goes to the host's launch socket
done
exit=0
