Story-2607 Walkthrough

Change: Blake's Deep Read judge now rules one bounded candidate batch per AgentCore invocation and returns that batch's identity with its rulings.

Boundary. Functions chooses, persists, and resumes judge batches. Blake validates exactly the candidates supplied in the current request and emits one typed rulings effect followed by one run.completed.

Batch contract

{
  "pass_kind": "judge",
  "batch_id": "judge-batch-7",
  "candidates": ["candidate-41", "candidate-42"]
}

document.deep_read.rulings {
  "batch_id": "judge-batch-7",
  "rulings": ["ruling-for-41", "ruling-for-42"],
  "summary": "Batch summary written after the batch rulings."
}

The output validator requires every supplied candidate exactly once and rejects unknown, missing, or duplicate candidate references. Stable ruling IDs include the batch identity, so independently resumed batches cannot collide.

Prompt scope

The judge prompt names the trusted batch identity outside the hostile-data fence. Candidate text remains fenced data. The judge must not rule candidates absent from the supplied batch.

Verification

PYTHONPATH=agents/registrar .venv/bin/python -m pytest agents/registrar/tests/test_registrar_deep_read.py -q
PRAMAAN_FUNCTIONS_ROOT=/path/to/pramaan-functions PYTHONPATH=agents/registrar \
  .venv/bin/python -m evals.deep_read_functions_contract_eval

The offline contract fixture sends only a bounded subset to the judge and validates its batch-tagged effect through pramaan-functions' real dispatcher.