prose-dev Atlas OpenProse docs bound to the contracts they describe
144 documents

Understand the runtime: compile smart, run dumb

The two-phase split is the whole architecture: intelligent compile (Forme wiring, canonicalizers, validators) and a dumb run-phase reconciler that only compares fingerprints.

The canonical loop

Each event is a reason to reconcile the modeled world state. An event may be a timer tick, webhook, queue message, file change, source change, manual request, an upstream node's new receipt, or a freshness lapse.

event (a receipt arrives)
  -> the reconciler compares (contract_fingerprint, input_fingerprints, freshness_epoch)
  -> unmoved: write a cheap `skipped` receipt, render nothing
  -> moved (an input changed, the contract changed, or a freshness window lapsed):
       spawn one bounded render session -> gateCommit -> sign a receipt
  -> propagate: a moved fingerprint wakes the downstream subscribers

The harness is conforming when that reconcile decision is deterministic, replayable, and identical on every host: the intelligence that decides what counts as a change is frozen ahead of time, at compile, into the per-node canonicalizer, and the run-phase decision is a dumb fingerprint comparison — no judge re-deciding at wake time. The model renders inside bounded activations; continuity lives in the durable receipt trail, never in a long-running session.

The distinction from a normal agent loop is the whole point.

A normal agent loop asks:

What should I do next?

A conforming harness asks:

Given this responsibility and the receipt that just woke it, did any fingerprint
it depends on actually move — and if so, what is the smallest render that makes
its truth current again?

That turns agent behavior from a running conversation into an inspectable state transition.