Story-2494 Walkthrough

Change: Blake now accepts mode="deep_read" and executes one functions-orchestrated Map, Evidence, Analyse, or Judge pass on AgentCore.

Boundary. This brain emits candidates and rulings. It does not sequence the job, synthesize across models, write document truth, or persist attention/session fields. Functions owns deterministic assembly; persistence of the two additive fields is tracked by pramaan-spec#2559.

Locked production panel

SeatBehaviorConfiguration
Three proposersEach independently runs Map → Evidence → Analyse over its own stable Model-view prefix.Three runtime environment handles in model-catalog.yaml; the fastest seat reuses REGISTRAR_GLANCE_MODEL, while the configured paid-write seat carries an explicit 5-minute breakpoint.
JudgeRules every candidate accept/reject/modify with reason, may add missed grounded rows, then writes summary last.Independent runtime environment handle; fail-closed and distinct from every proposer.
ChallengersEvaluation only.Two separate catalog handles excluded from the production seats.

Authorized payload extension

{
  "row_type": "attention",
  "section_id": "section-1",
  "grade": "critical",
  "reason": "Express admission affects liability.",
  "confidence": 0.95,
  "order": 1,
  "estimated_seconds": 75,
  "suppressed": false
}
{
  "agent_key": "deep_read.proposer.grok",
  "model_id": "<runtime-catalog value>",
  "cached_prefix_id": "document-read-<opaque sha256>",
  "provider_session_id": "document-read-<opaque sha256>"
}

I-12 is a code gate: confidence below 0.6 emits suppressed=true and grade=null. A low-confidence model can never publish a false skip. Analyse requires exactly one attention row per mapped section for each proposer.

Grounding and hostile-data fence

Document bytes and prior candidates are fenced as DATA before each pass suffix. The document delimiter includes a content-derived nonce, so planted closing markers cannot escape the data channel. Prompt text says the document cannot alter the confidence floor. Code rejects invented pages, anchors, offsets, and quotes before an assertion or finding reaches the event stream.

Session continuity

Both continuity identifiers are deterministically keyed by (document_id, extraction_version, model). Glance and its fastest Deep Read proposer therefore send the same opaque x-session-id while model ids remain entirely config-resolved.

Event sequence

run.started
model.usage                 # one per provider generation
document.deep_read.candidates | document.deep_read.rulings
run.completed

The two effects extend the shared agent_event_stream.v1 type set; no new envelope or transport exists.

Verification

uv run ruff check agents/registrar agent_contracts tests
uv run --package registrar pytest agents/registrar/tests/test_registrar_deep_read.py -q
cd agents/registrar && uv run python -m evals.deep_read_panel_evals
uv run pytest tests/test_agent_event_stream_contract.py tests/test_contract_schema_custody.py -q

Focused contract tests, shared-event custody, and deterministic panel evals are green.

Live sample: production model calls require deployed runtime catalog handles and OpenRouter credentials. This walkthrough does not represent a local offline run as live model evidence.