Sentinel had episodic memory — it could recall what tools ran, what files changed, what the user asked for. But there was a gap in what it remembered about plans. When a task required replanning — the first approach hit an error, or the planner changed strategy mid-execution — none of that structural information survived. The next time a similar task came in, the planner had no memory of what it had tried before or why it changed course.
Plan-outcome memory fills that gap. During execution, the orchestrator now captures plan phases — each replan cycle becomes a distinct phase with its own step sequence, timing, and results. When the task completes, the full plan structure gets stored as structured JSON alongside the existing episodic record.
The rendering has two tiers. Tier 1 is a compact one-liner: file_read($page):OK -> llm_task($widget):OK -> file_patch(BLOCKED). Enough to see at a glance what happened and where things went wrong. Tier 2 is the full breakdown — step timings, intermediate results, replan context, and the reasoning behind strategy changes.
The interesting part is what happens when this feeds back into the planner. The build_learning_context() function now integrates plan history into the planner’s episodic context. When a similar task arrives, the planner can see: “Last time I tried approach X, it resulted in a replan at step 3 because the file didn’t exist yet. The successful path was Y.” It’s not just remembering facts — it’s remembering strategies and their outcomes.
A small fix came along with this: the SSE log stream had a CRLF rendering bug where logs showed raw \r\n in the browser. Normalising line endings in the stream handler fixed it. The kind of thing you don’t notice until you’re actually reading plan outcomes in the log viewer and the formatting makes them unreadable.
This is still early. The planner doesn’t explicitly reason about plan history yet — it receives the context and it influences generation, but there’s no structured “compare this plan to previous attempts” step. That’s a future refinement. For now, the data is captured, stored, and surfaced. The foundation for plan-level learning is in place.