Views
How a Kestrel pod sees. A View decides what an agent perceives when the runtime wakes it; each seat reads a different screen because each seat does a different job at a different speed. This section documents the seat Views and the market variants they cover.
A View decides what an agent sees when the runtime wakes it; the agent decides what to do with it. A Kestrel pod is not one agent but a small organization of seats — roles distinguished by the deliberation budget they can afford — and each seat reads a different screen because each seat does a different job at a different speed.
This section is the library of those screens. It is organized on two axes, the same two the engine's own template-cell key turns on:
- By seat / role — one page per View, each explaining its layout in terms of the seat's task and timescale: the Strategist View, the Watcher View, the Scanner View, and the PM View.
- By market variant — instrument class, timescale, and strategy archetype. The Views you see today are the equity-index options variant; the same View grammar carries the other instrument classes, described under The variant axis below.
What a View is
A seat's screen is not a monolith. It is assembled through four layers, each answering a different question, each authored on its own:
- Seat — who is this? A role in the pod org, fixed by its affordable deliberation budget: a PM and a Strategist are slow, deliberate, frontier-class judgment (dollars, a few times a day); a Watcher is the fast reflex (pennies, seconds); a Trigger is a non-LLM reflex below even the Watcher. Seats' latency envelopes differ by orders of magnitude, which is why no single model fills them all well.
- Tasks — what must it decide? The seat's job: allocate an envelope, author a leaf, manage held inventory, summon a bigger brain. The tasks fix what information is decision-relevant.
- View config — what does it see? The role-keyed View — the panes, in order, at the band the wake zooms to. This is the layer this section is about. Perception is tuned here.
- Persona / Brief — how does it lean? The soft, directional English the seat reasons from (a "disciplined risk manager," a "momentum chaser"). Personas tune policy; Views tune perception — different channels, both role-attachable, and the Brief never enters admission (it directs, it never authorizes).
The seat and its persona are policy; the View is perception. This section fixes layer 3 and leaves layers 1, 2, and 4 to their own documents.
The pod
┌─────────────────────────────────────────────┐
humans sit │ humans — above the root, always │
above the root └───────────────────────┬─────────────────────┘
│
╔══════════════════════════════════════════╪══════════════════════════════════════════╗
║ L0 · RISK (a LAYER, not a seat) │ clamps / vetoes · may never open risk ║
║ outranks every node including the PM │ rendered surface: the kernel safety block ║
╚══════════════════════════════════════════╪══════════════════════════════════════════╝
│
┌──────────────────────┴──────────────────────┐
│ PM node (runs a Pod: allocates + discovers)│
│ · Allocator — envelope allocation │ slow · $$ · aggregate
│ · Scanner — scan-fire read-why │ minutes · single-name
└──────────────────────┬──────────────────────┘
│ arms / assigns Coverage / authors leaves
┌──────────────────────┴──────────────────────┐
│ Trader node (runs a Book: manages a leaf) │
│ · Strategist — frames + authors plans │ a few/day · $$ · frontier
│ · Watcher — manages · escalates │ seconds · ¢ · fast reflex
│ └─ Trigger — summons the Watcher │ sub-second · non-LLM
└──────────────────────┬──────────────────────┘
│
off-tape ······························┴······ Historian — reads Blotters after close,
(no live seat's latency budget) curates lineage + evolves the BriefReading the stack: Risk is the L0 layer, not a seat — strictly subtractive, above everyone. The PM runs a Pod (allocates children's envelopes, arms and de-arms, assigns Coverage, watches aggregates) and splits into an Allocator half and a Scanner half. The Trader runs a Book (a leaf, the only place positions live) and splits into a Strategist and a Watcher. The Trigger is the pod's third live tier below the Watcher — a non-LLM reflex that summons, never decides, and so reads the frozen Frame's features directly rather than a screen. The Historian works off-tape after the close, reading Blotters and Grades rather than a live Frame; it curates the pod's memory and evolves the Brief. Trigger and Historian have no View by construction, for opposite reasons — one reads below language, the other reads after the session.
The pod-seat roster is closed — pm, strategist, watcher — and it is the role axis of
the engine's evidence cell key. A seat is admitted only where its sub-job genuinely diverges:
by latency of at least an order of magnitude, by a typed boundary a document crosses, and by
being independently measurable. That filter is why Risk stays a mechanism, the Grader stays an
engine, and the Trigger stays a tier — none of them a seat.
How a View is chosen
Every wake resolves to exactly one View through a strict precedence:
explicit authored View > seat founder View > phase default- An explicit
view— one an agent authored, scheduled, or a Wake forced — always wins. A seat never overrides an authored lens. - Otherwise, when the driver knows the acting seat, that seat's founder View for the frame kind is used (the Strategist's at the open, the Watcher's and the Scanner's on a wake).
- Otherwise the frame kind's phase default panes render — byte-identical to a run with no seat at all.
Seat Views are opt-in. By default a Session runs the phase-default panes and consults no
seat; set seatViews: "founder" on the AgentConfig to have each acting seat read its View.
The two settings are distinct experimental subjects and fold into the run's ConfigId
automatically, so a founder run and a phase-default run are always separable in the record.
Where a seat has no View for a frame kind — a Strategist at a wake, a Watcher at the open, the
PM's allocation half — resolution falls through to the phase default; absence is a first-class
value, never a silently fabricated screen.
Every rendered screen in this section is byte-real — generated from the live renderer, never hand-typed, so a renderer change re-pins the screens or CI goes red. Every View block is written in real Kestrel syntax and round-trips byte-stable against its golden corpus.
The seat axis
| View | Seat | Task | Timescale | Frame |
|---|---|---|---|---|
| Strategist View | Strategist | Frame the session, author the plans, price the exits | A few times a day, at dollars a call | OPEN |
| Watcher View | Watcher | Manage held inventory inside its plans; escalate at the edge of certainty | Seconds, at pennies a call | WAKE |
| Scanner View | PM (discovery half) | Read one name deeply when a universe-wide scan fires | Minutes, single-name | WAKE |
| PM View | PM (allocation half) | Allocate children's envelopes; watch aggregate exposure | Slow, aggregate | — |
The Strategist and the Watcher are the two halves of the Trader that runs a Book; the Scanner and the PM's allocation cockpit are the two halves of the PM that runs a Pod. Each half is a distinct layout because each does a distinct job at a distinct speed — which is exactly the "different layout by task and timescale" this section is organized around.
The variant axis
A View is composed once and rendered against whatever market the instrument declares. The market a screen speaks is set by the instrument's SessionScheme — the registry attribute that declares an instrument's boundary stream (its opens, closes, and session splits). Four schemes ship today:
| Variant | SessionScheme | Status |
|---|---|---|
| US equity & index options (0DTE) | equity-rth | Shipped — the Views in this section |
| CME futures | cme-rth-overnight | On the same View grammar |
| Crypto perpetuals | perp-utc-day | On the same View grammar |
| Spot FX | fx-week | On the same View grammar |
The founder Views documented here are the equity-index options variant, and their panes are
options-native: the chain pane with its intrinsic-floored fair, the pin, the expiry-relative
session ordinals, the theta the Watcher pays to hold. They render against equity-rth, the
default scheme every equity and index instrument resolves to.
The other three schemes ride the same View grammar and the same seats. A perpetual's rolling
UTC day has no daily close, so its prior-context pane names that absence instead of inventing a
midnight bar; a CME instrument splits its RTH session from the overnight; spot FX runs a
Wellington-open-to-NY-Friday-close week. As each variant's panes land, its layouts join this
section as those Views — futures, perpetuals, and FX pages slot onto the variant axis without
disturbing the seat axis, because a variant changes the market a View speaks, not the seat that
reads it.