Commit c669e6d
authored
docs(adr): ADR-179, a dropped forced source is recorded on the run (#828)
The decision behind #809, before any code. No behaviour changes here.
**The problem:** a run queued with a forced snippet or skill loses it if
someone switches that record off before the run starts. The run proceeds
without it and says nothing. The only way to notice is to compare the
queued request against the transcript.
ADR-175 made this uniform rather than lopsided — before it, a snippet
disappeared and a skill survived — which is what turns it into one
question with one answer.
## Three decisions
**Recorded on the run, not only logged.** A log answers "did it happen",
which serves support. The operator asks "why did this run differ from
the one I queued", and that is asked at the run. It travels on
`RunAugmentation` from the rehydration that drops it and is written
through `RunTrace` — ADR-151's channel, whose steps
`Backend/AgentRun/Show.html` already renders. No new surface is
invented.
**The run is not refused.** Refusing a queued run is defensible on cost
— nothing has been sent, so it costs only a message. Rejected on *who
pays*: switching off a snippet is routine operator maintenance, and
making it fail other people's queued work turns a safe action into one
nobody dares take. A run that proceeds and says so is recoverable; a
refused run is somebody else's incident.
**"Deleted" and "switched off" read differently.** Both resolve to
nothing today and a single "dropped" would flatten them. They are
different actions with different remedies — one is reversible, the other
is not — and a reader who cannot tell them apart has to go looking.
## Deliberately out
- **The resume path.** ADR-166 and ADR-175 keep a deactivated source
resolving there on purpose, because its text is already in the
transcript. Nothing is dropped, so a report would imply otherwise.
- **Notifications.** The record is readable at the run; it does not
push. Whether a dropped source deserves a notification is the same open
question as every other pending decision here, and answering it for one
case would settle it for all of them by accident.
## One correction I made while writing this
I had told the user the anchor was step metadata, citing `droppedTurns`
in `ToolLoopService`. That line is a **log** call, not a step. Its own
comment names the real one — the context step ADR-151 records through
`RunTrace`. The decision above uses that channel; the sentence I said
out loud first was wrong.
## Why this is its own PR
The implementation is roughly the size of #823: a field on
`RunAugmentation`, the codec computing the difference, the trace write,
the template, and tests. Splitting the decision out means it can be
argued before that exists, and it gives an early checkpoint rather than
a long silent stretch — which is the pattern that went wrong earlier
today.
68 ADR-suite tests pass; the three repo checks pass. No PHP is touched.
Refs #8093 files changed
Lines changed: 105 additions & 0 deletions
File tree
- Documentation/Adr
Lines changed: 2 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
| 13 | + | |
12 | 14 | | |
13 | 15 | | |
14 | 16 | | |
| |||
Lines changed: 102 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
529 | 529 | | |
530 | 530 | | |
531 | 531 | | |
| 532 | + | |
0 commit comments