Ma-late-signals-cli.txt: pass 79 fail 1
    a host that died hard leaves its sessions to the next host, which finds one already exited (23) and ends their runs so the role can be launched again
    a host that died hard leaves its sessions to the next host, which kills them and ends their runs so the role can be launched again
    bus start --pm: the PM runs under its own PID namespace, registered, with a manifest
    the PM launches a coder through its launch tool; the coder answers; refusals name their code
Ma-late-signals-harness.txt: pass 50 fail 3
    a message becomes a turn, the answer goes back as a RESULT, SIGTERM releases and exits 0
    a SIGTERM before the claim stops the runner with exit 0 and no claim
    SIGTERM during a turn kills the turn's process group and still exits 0
MA-pi-only-harness.txt: pass 52 fail 1
    read is checked under every spelling pi's read would open, in both harnesses
MB-no-real-base-harness.txt: pass 52 fail 1
    other spellings cover directories, dangling links and pi's cwd
Mb-runs-set-early-bus.txt: pass 73 fail 1
    a restarted broker refuses to rebind an ended run; a refused rebind leaves the run unbound
Mb-runs-set-early-cli.txt: pass 83 fail 0
MC-no-nfd-curly-harness.txt: pass 51 fail 2
    pi: a read is refused when pi would open another spelling outside
    read is checked under every spelling pi's read would open, in both harnesses
Mc-no-run-ended-bus.txt: pass 73 fail 1
    a restarted broker refuses to rebind an ended run; a refused rebind leaves the run unbound
Mc-no-run-ended-cli.txt: pass 81 fail 2
    a host that died hard leaves its sessions to the next host, which finds one already exited (23) and ends their runs so the role can be launched again
    a host that died hard leaves its sessions to the next host, which kills them and ends their runs so the role can be launched again
Md-no-instance-running-cli.txt: pass 81 fail 2
    bus start --pm: the PM runs under its own PID namespace, registered, with a manifest
    the PM launches a coder through its launch tool; the coder answers; refusals name their code
Me-no-authorize-cli.txt: pass 82 fail 1
    the PM launches a coder through its launch tool; the coder answers; refusals name their code
Mf-no-exit2-wrapper-harness.txt: pass 52 fail 1
    a claude-code bundle adds the wrapped gate hook and the MCP config
Mg-no-founder-check-cli.txt: pass 83 fail 0
Mg-no-founder-check-harness.txt: pass 51 fail 2
    founderCheck: founder variables, then a needed service without a usable token
    founder credentials stop before the claim (20)
Mh-no-close-sigkill-cli.txt: pass 82 fail 1
    a runner that ignores SIGTERM is killed when the host closes
Mi-recover-no-kill-cli.txt: pass 82 fail 1
    a host that died hard leaves its sessions to the next host, which kills them and ends their runs so the role can be launched again
Mj-no-stdin-cap-harness.txt: pass 52 fail 1
    no capability, or a malformed one, on stdin exits 2
Mk-launch-line-max-cli.txt: pass 82 fail 1
    an over-long launch request is refused at once, not at the 10 s idle timeout
Ml-gate-pattern-harness.txt: pass 52 fail 1
    glob patterns stay inside the workspace
Mm-no-revoke-bus.txt: pass 73 fail 1
    launches off refuses role.launch with launch-revoked until launches on
Mm-no-revoke-cli.txt: pass 83 fail 0
Mn-recover-no-end-cli.txt: pass 81 fail 2
    a host that died hard leaves its sessions to the next host, which finds one already exited (23) and ends their runs so the role can be launched again
    a host that died hard leaves its sessions to the next host, which kills them and ends their runs so the role can be launched again
Mo-policy-outside-try-harness.txt: pass 52 fail 1
    a missing or malformed policy exits 2 before the claim
Mp-any-reply-cli.txt: pass 82 fail 1
    a broker reply with another request's id, or none, breaks the channel and the host exits 1
Mq-no-timer-cli.txt: pass 82 fail 0
Mr-ignore-unsolicited-cli.txt: pass 82 fail 1
    a broker reply with no request waiting breaks the channel and the host exits 1
Ms-follow-walk-harness.txt: pass 50 fail 3
    a dangling symlink is refused at any depth, in both harnesses
    other spellings cover directories, dangling links and pi's cwd
    pi: a write through a dangling symlink is blocked, and nothing appears outside
Mt-no-socket-destroy-cli.txt: pass 82 fail 1
    a launch client that never closes its side doesn't hold the host's close
Mu-no-restricted-harness.txt: pass 51 fail 2
    claude adapter: --restricted is always passed
    claude: CLAUDE.md files and auto-memory don't reach the model; without --restricted they do
Mv-no-tag-bus.txt: pass 73 fail 1
    broker process: launch ops authorize role.launch, record refusals and end runs
Mv-no-tag-cli.txt: pass 70 fail 11
    a broker reply that misses the wait breaks the channel: the late reply answers nothing, later requests refuse, the host exits 1
    a broker reply with another request's id, or none, breaks the channel and the host exits 1
    a broker reply with no request waiting breaks the channel and the host exits 1
    a host that died hard leaves its sessions to the next host, which finds one already exited (23) and ends their runs so the role can be launched again
    a host that died hard leaves its sessions to the next host, which kills them and ends their runs so the role can be launched again
    a launch client that never closes its side doesn't hold the host's close
    an over-long launch request is refused at once, not at the 10 s idle timeout
    a runner that ignores SIGTERM is killed when the host closes
    a runner that stops at once ends its launch with the runner's reason
    bootConfig trackers reach the S3 adapter in the real broker child, which goes ready against a fake Vikunja
    bus start --pm: the PM runs under its own PID namespace, registered, with a manifest
    the host boots the broker, binds a launch in process, and the notifier DMs a blocking decision exactly once
    the PM launches a coder through its launch tool; the coder answers; refusals name their code
Mw-ampm-case-harness.txt: pass 53 fail 0
Mx-curly-once-harness.txt: pass 53 fail 0
My-lstat-error-skips-harness.txt: pass 53 fail 0
Mz-spell-no-normalise-harness.txt: pass 53 fail 0
