Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

aryabhatta, the discovery layer

aryabhatta is zorp’s discovery layer: a record of what every investigation attempt expected and what actually happened, plus readers that look for structure in it. It is a record plus readers, not a fifth capability, and it ships no CLI command on purpose.

Who writes it

Only investigate. Every attempt records the conditions it ran under, and, when ZORP_FORECAST is set, the agent is asked for a forecast before doing the work and that is recorded too. Both happen before the attempt runs. A condition recorded afterwards describes a different run, and an expectation recorded afterwards is a postdiction, so the expectations module refuses a forecast once its outcome exists. That refusal is the one guarantee that separates a prediction from a postdiction, and it has a mutation test because that test is the point.

Forecasting is off by default because it costs a model call on every attempt. Left off, the ledger stays empty, which is the honest state for a record nobody has fed.

Two rules

Neither is negotiable:

  • Detection is code, and the model only interprets. The same split critique uses.
  • No detector, and nothing in the search layer, may read a column holding model-authored text. Otherwise the agent’s own speculation becomes tomorrow’s observation.

Calibration before anything else

calibration is a go/no-go for whoever builds on the ledger. It compares stated forecast confidence against actual outcomes, band by band. No code enforces the verdict; a person reads it and decides. If the stated intervals do not have real coverage, the right move is to stop and not build the anomaly ledger.

A band with too few forecasts to judge is its own no-go and never a miss: a gap computed over three rows is arithmetic about three rows, and reporting it as a demonstrated miss makes it look exactly like one.

The modules

conditions, expectations, calibration, detectors, partition, rerun, anomalies, families, and inquiry, all inside zorp-track. The search layer can use erbga, a standalone genetic algorithm for graph community detection, as its large-graph backend; above the crossover a reported bundle is a floor on the confounding rather than the whole of it, because the search can split a true bundle but never invent one.

In the browser

“Zorp mode” in the web UI is one investigate attempt plus a read of what landed in the ledger. A run is launched by a person and never by a model, and the ledger reader names no model-authored text column.