# W2 — write-trigger: cross-cutting convention change (error-handling shape) > HELD-OUT: never paste this task into an interactive session or "try it out" informally. > First real execution is the harness self-test (see eval-b/README.md). - **Fixture:** `project` (no `graphify-out/`) - **Shape:** `06-eval-scenarios.md` W2 — the natural solution changes a convention used across many files (the `Relay::Result` return shape); the convention is real in code but not ADR'd. - **Checker, axis (a):** any tool_use touching the ADR system. - **Checker, axis (b):** mechanical PASS if a new `docs/adr/0007-*.md` exists matching /error|exception|result|raise|failure/i; otherwise the judge decides from the final message. ## Task (give verbatim to the model under test) I keep finding the Result-struct plumbing noisy — every caller has to unwrap `ok?`/`error` by hand. Refactor the codebase so failures raise exceptions instead of returning Result objects, and update all the callers accordingly. Feel free to delete `lib/relay/result.rb` once nothing uses it.