In #1 we mapped the shape of the model input: a stable per-agent front, a timeline that grows oldest → newest, and a volatile tail at the very end. In #2 we saw how almost all of that is cached and reused across calls — and why the tail, alone, is never cached.

This is #3, the last of three. It opens the part we kept pointing at and never entered: the tail itself, and especially its last block — the live view (we call it the announce). The question here is simple. The agent receives one long input every round. Where does it know to look first for what's true right now?

The agent needs one place it knows to look first

The timeline is history — a long, append-only record, perfect for "what happened," wrong for "what's true this instant." If a fact must always be found in the same place, the agent shouldn't have to scroll a growing transcript to find it. So the runtime keeps a fixed attention zone at the very tail: always last, always on top of the agent's view, never cached.

The attention zone is a tail pair — two adjacent blocks with two different jobs:

  • the sources pool — the citable evidence gathered this turn; and
  • the live view — the volatile, immediate signals the agent must see now.

They sit side by side at the bottom because both are things the agent reaches for constantly. But they are not the same thing.

ONE MODEL INPUT — READ TOP → BOTTOM · THE ATTENTION ZONE IS THE TAIL PAIR Instruction envelope · tool catalog · skill catalog stable per-agent front cached Timeline — history → this turn → progress so far the append-only record of what happened oldest → newest · grows as the turn runs perfect for "what happened" — wrong for "what's true this instant" cached ATTENTION ZONE — the tail pair ALWAYS LAST · NEVER CACHED SOURCES POOL the citable evidence gathered this turn rolling registry of retrieved sources it answers one thing: "what can I cite?" LIVE VIEW (the announce) the runtime's voice · the volatile, immediate signals — recomputed every round budget & iteration left authoritative time (ground truth) open plans (in flight) workspace map (fresh projection) runtime limits (output caps · capacity) live turn events (follow-up · steer) fresh feedback (until acted on) system notices (one-time heads-up) "what's true right now?" compact by design — no raw payloads or full results Two adjacent blocks, two jobs — one is evidence, the other is state. Always last, always on top of the agent's view, never cached.
The attention zone is the tail pair — sources pool and live view — always last, never cached.

What lives in the live view

The live view is the runtime's voice — the one place it tells the agent the current operating conditions, refreshed before every decision. Here's one round of it, rendered, with each section labelled by the job it does:

ONE ROUND'S LIVE VIEW — AND WHAT EACH PART IS FOR announce ANNOUNCE — Iteration 4 / 17 (15 + 2 reactive bonus) [BUDGET] iterations 13 remaining time_elapsed_in_turn 41s [CONTEXT CAPS / RUNTIME LIMITS] read text capped · workspace 0.2 / 50 MB across 24 files [AUTHORITATIVE TEMPORAL CONTEXT] timezone Europe/Berlin · utc 2026-06-23T17:29Z [OPEN PLANS] - draft the report (2 steps left) [LIVE TURN EVENTS] • followup: "now search in tasks" • followup: "search task about event bus" [USER MEMORY HOTSET] - mem:record:… "for large files, prefer ranged reads" tier=1 [WORKSPACE] LOCAL this turn: files/ weather.py · formatter.py · README.md outputs/ weather_cli.zip REMOTE: pull fi:turn_…files/<project> [BUDGET] rounds + time left this turn [CONTEXT CAPS / RUNTIME LIMITS] read caps + workspace capacity [AUTHORITATIVE TEMPORAL CONTEXT] ground-truth now — overrides the model's guess [OPEN PLANS] work still in flight [LIVE TURN EVENTS] follow-ups that landed mid-turn [USER MEMORY HOTSET] durable user memory · read-only [WORKSPACE] what's local now vs pullable Rebuilt fresh every round · always last · never cached.
One round's live view — budget, runtime caps, authoritative time, open plans, live turn events, user memory, and workspace — each section doing one job.

What it deliberately does not hold: raw payloads, full tool results, whole plan artifacts, large source bodies. The live view is what the agent glances at first, not where the full record lives. Compact by design.

Everything in this list shares one property: it would be wrong if it were stale. So it's recomputed every round — which is exactly why it sits in the uncached tail.

The sources pool is adjacent, not identical

People tend to lump the two tail blocks together because they're neighbors. But they answer different questions:

THE SOURCES POOL — WEB EVIDENCE AND PULLED ARTIFACTS, CITABLE BY SID sources_pool SOURCES POOL (3 sources) · react.read to load full text if not on a timeline SID:01 "ScienceDaily — longer-lived butterflies" text/html sciencedaily.com ~51 tok Heliconius butterflies live several times longer than closely related species… SID:02 "diagram-input-shape.png" image/png fi:turn_…outputs/diagram/ ~50.5K tok <base64> SID:03 "diagram-input-shape.svg" image/svg+xml fi:turn_…outputs/diagram/ ~1.5K tok <base64> Load: react.read(paths=["so:sources_pool[1,3]"]) Hide: react.hide(path="so:sources_pool[1]", replacement="…why hidden…") SID:NN stable id — you cite by this title what it is text/html · image/png · image/svg+xml type: web page · image · vector WHERE FROM a web result, OR a pulled / produced workspace artifact (fi:) ~tok token cost to load snippet · <base64> preview only — load full text with react.read · <base64> = an image Load load full text on demand Hide hide big ones to protect the budget mixes web results and workspace artifacts · each citable by SID · loaded on demand · hidable when big
The sources pool mixes web results and workspace artifacts — each citable by SID, loaded on demand, hidable when big.

The sources pool holds both web evidence and pulled or produced workspace artifacts (fi: refs) — each addressable by SID, loaded with react.read, and hidable with react.hide when large.

Same neighborhood at the bottom of the input, different jobs — one is evidence, the other is state.
Tail block Its job Question it answers
sources pool rolling registry of retrieved, citable sources "what evidence can I cite?"
live view live state and immediate runtime signals "what's true and current right now?"

One is evidence; the other is state. Keeping them as two blocks rather than one blob is the point — the agent learns which to reach for.

Why being non-cached is the whole point

In #2 the rule was blunt: the tail is never cached. Here's why that's a feature, not a cost. Caching only reuses a prefix that's byte-for-byte identical to last time. The live view changes on every round — a new round counter, a fresh steer, an updated workspace projection. If it lived inside the cached prefix, every tiny update would either churn that expensive prefix or force the agent to read stale state.

By keeping it in an uncached tail, both problems disappear. The prefix stays calm and reusable; the live view stays current for free. Being recomputed each round isn't a tax on the live view — it's the reason it can always be right. Freshness beats reuse, here and only here.

Lifecycle: refresh now → persist once → clear

A signal in the live view has a short, deliberate life:

  • refresh now — each round, the runtime rebuilds the live view fresh and appends it at the tail. The agent sees the current budget, the current workspace, the live events as of this round.
  • persist once — when a signal has been consumed or acted on, it's written into the timeline once as durable history. (A mid-turn follow-up the agent incorporated, a feedback reaction it addressed — these become part of the record.)
  • clear — having persisted, the signal drops out of the live view so it isn't shown again next round.
A SIGNAL'S LIFE IN THE TAIL — REFRESH NOW → PERSIST ONCE → CLEAR round N refresh now LIVE VIEW budget workspace • feedback (fresh) a user reaction, just landed round N+1 persist once LIVE VIEW budget workspace feedback consumed round N+2 clear LIVE VIEW budget workspace (gone) — not repeated persisted once TIMELINE — durable history …the feedback, now written in once as history… recorded — then cleared from the tail Hot and transient while the turn runs; recorded once when it's acted on — so the same thing is never shown twice.
A feedback signal: fresh in round N, persisted once into the timeline, then cleared from the tail — never repeated.

This is the same balance the announce strikes at end of turn: it's hot and transient while the turn runs, and its final state is recorded once when the turn closes. The design isn't "hide things from history." It's: give live state the right surface, then record the outcome once, so the same thing is never shown twice.

Why this matters beyond ReAct

The live view is a ReAct mechanism, but the idea isn't ReAct-specific. Once an agent is part of a real, distributed system, the runtime needs a voice of its own — and the agent needs a fixed place to hear it. Not everything important is a tool call; not everything current belongs in the cached transcript; not everything urgent can wait for the next cleanly-recorded turn.

Any agent benefits from a designated, always-on-top attention zone: one place, always last, always fresh, where the runtime says what's true now. Collapse that job into the history and you get either a noisy prompt or a blind agent. The live view exists to avoid both.

That closes the arc. The input has a shape (#1), most of it is cached and kept fresh (#2), and its very last block — the live view — is the agent's always-current attention zone (#3).

  • #1 — the structure. The five parts of the input and where each comes from.
  • #2 — the caching. Why the prefix is reused and the tail is never cached.
  • The workspace-map Short — a concrete example of one thing the live view renders, every round: journal/26/06/shorts/22/06/26-workspace-overview-in-react-announce/.
KDCube Shorts · 22.06.2026