The reader created its activation pipe outside any error handling, so it could not start while the pipe name was held by a reader that had not finished closing or by another program. It now starts without an inbox, and releases the pipe before the instance key so the next reader can create its own. A launch whose request the running reader does not take (no listener, a refusal, or a deadline) used to exit with code 1 and no window. It now opens its documents in its own process. An argument that cannot name a document is dropped and reported while the usable ones still open. The request, schema and inbox move to Core/Activation, inside the coverage gate and the core test run. Deadlines run on a TimeProvider: a sender waits two seconds for the pipe and each side ten seconds for one exchange, and the tests reach both without waiting. The listener's disconnect and Dispose share a lock instead of catching the race between them. ADR-0005, the threat model, the fuzzing guide and the GitHub shadow workflows follow the move. Closes #52 Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com> Signed-off-by: James Maes <james@kof22.com>