# 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.
