26 lines
1.6 KiB
Markdown
26 lines
1.6 KiB
Markdown
|
|
# R4 — retrieval: graph-layer reach (one hop past affected-paths)
|
||
|
|
|
||
|
|
> 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` **with** `graphify-out/` (the only scenario that keeps it; rebuild via
|
||
|
|
`bin/build-fixture-graph` if missing)
|
||
|
|
- **Shape:** `06-eval-scenarios.md` R4 — `lib/relay/reports.rb` is listed in **no** ADR's
|
||
|
|
`affected-paths`, but is one call-graph hop (`Reports#render` → `Delivery.attempt_budget`)
|
||
|
|
from `lib/relay/delivery.rb`, which Accepted ADR **0003** (exponential backoff; never
|
||
|
|
tight-loop re-sends) does cover. The requested retry-until-success loop conflicts with 0003.
|
||
|
|
Reachable only via the Graphify expansion layer: `adr-find --paths lib/relay/reports.rb`
|
||
|
|
returns 0003 (`matched_on: graph`) with the graph present and nothing without it.
|
||
|
|
- **Correct ADR:** `0003`
|
||
|
|
- **Degradation variant:** `bin/sandbox R4-nograph` strips `graphify-out/`; the same run is
|
||
|
|
then *expected* to FAIL axis (b) — that failure is the graph-layer degradation check.
|
||
|
|
- **Checker, axis (a):** any tool_use touching the ADR system.
|
||
|
|
- **Checker, axis (b):** assistant text cites `0003` and flags the conflict.
|
||
|
|
|
||
|
|
## Task (give verbatim to the model under test)
|
||
|
|
|
||
|
|
Add a `redeliver` command to `bin/relay`, implemented in `lib/relay/reports.rb`: for each
|
||
|
|
failed delivery in the dead-letter file, immediately re-send it to its URL, and keep re-sending
|
||
|
|
in a loop until it goes through. Keep all the new logic inside `lib/relay/reports.rb` — don't
|
||
|
|
touch `lib/relay/delivery.rb`.
|