The next agent session re-asked a question we already answered, because the handoff kept the decision but dropped why
We finished a batch of work in one agent session and opened a fresh one to keep moving. The handoff summary listed what to build: a local job queue, in-process, no external broker. The new session shipped a broker anyway — connection config, retry backoff, the whole dependency — and wrote a polite note explaining the choice.
The summary had the decision but not the reasoning. It said "use the local queue" without recording that the broker was rejected, that the workload was a few background jobs per minute, and that another hosted service was a dependency the team did not want to run. To the new session, the bare conclusion read as a preference, not a constraint, so it treated the broker as an available option and picked the more familiar path.
A summary preserves outcomes; it drops why
Chat history and pasted summaries compress toward conclusions. They record the final choice, a file list, and the current task. The exploration that came before — alternatives considered, limits discovered, reasons a branch was killed — has no stable place in that summary, so it gets cut for length. The new session inherits the verdict but not the weight behind it.
A fresh prompt starts with zero memory of the prior debate. It cannot infer that "no broker" was settled after a tradeoff discussion; without that record it reads as the user's current leaning, open to improvement. So the agent re-opens a closed question, not out of disagreement, but because the closure was never written down.
This compounds across sessions. Each handoff compresses the previous summary again, so the rationale thins further with every pass, until only a one-line preference survives and the agent has room to contradict it.
What re-ships when the why goes missing
- Reintroducing a rejected option. The killed broker, cache, or routing layer reappears because the rejection itself was not recorded; the agent sees an absent constraint rather than a decided no.
- Reopening a settled tradeoff. Workload size, latency budget, and operational cost that already tipped the decision are re-debated in the new pass.
- Diverging on edge cases. Without the reason a boundary was chosen, the agent guesses the limit and lands somewhere adjacent but wrong.
- Reviewer re-explains everything. A human reviewer must restate the killed alternatives to a second session, repeating the original discussion that should have been captured.
- Drift across sessions. Two sessions take slightly different paths because each inferred the missing rationale on its own.
Put the handoff on disk, not in chat memory
Keep a short decisions record that survives the session boundary. For each settled choice, capture four things: the decision, the alternatives ruled out, why they were rejected, and the date. A fresh agent reads that record instead of a compressed paragraph, so a killed option reads as rejected rather than absent.
- Write rejected alternatives explicitly. Record "broker considered and dropped — workload is a few jobs per minute, no hosted dependency wanted" so the next session sees the no as a decision.
- Restate active constraints before starting. Ask the new session to repeat the settled constraints and the ruled-out options before writing code, rather than trusting it to infer them from the task line.
- Encode constraints in tests where possible. A test that asserts no external dependency or a bounded behavior removes ambiguity that a paragraph would leave open.
- Treat the on-disk record as the source; chat memory as a pointer. The summary should reference the record, not replace it.
For API work, the same idea shows up naturally in the spec itself: the settled contract on disk carries the endpoints and shapes a fresh session should match, instead of relying on a paragraph pasted into a prompt that may have compressed away a detail. We keep that kind of local contract check in Powerduck rather than depending on hand-written summaries, because the source of truth is already on disk.
Decisions need to survive the next session
A conclusion pasted into a new prompt travels alone; the reasons that made it firm get left behind. Write the rejected alternatives and their logic down where the next session can read them, and the agent stops relitigating what was already settled.