The Loop
A Loop is the durable container and state machine for one growth objective: one target Metric, its guardrails, and everything learned while trying to move it. This page covers the mechanics — states, a complete turn, and what happens when evidence is missing. For the argument behind the model, read the Loop essay.
The cycle
Every growth motion runs the same ring:
Signals → Analyzers → Insights → Hypotheses → Changes (+ exposure)
↑ |
└──────────── new Signals ← Results ← Decisions ←────┘
Metric at the center
Each element is a first-class record: Signals are immutable observations, Insights carry confidence and supporting references, Hypotheses must cite evidence, and Changes declare how they will be measured. One target Metric and its guardrails sit at the center.
The state machine
A Loop advances through a fixed ring: listening → diagnosing → proposing → pending_approval → live → measuring → decided, then back to listening. The backend transition table is the single authority.
| State | What it means | Moves on when |
|---|---|---|
listening |
Signal subscriptions and Metric watches accumulate evidence. A paused Loop does not auto-advance. | A threshold or anomaly fires, cadence comes due, or a diagnosis is requested. |
diagnosing |
Attached Analyzers run and assemble Insights. Failed runs stay visible and can stall the turn. | An Insight qualifies or Hypothesis context is ready. |
proposing |
Hypotheses and Changes take shape. Evidence gaps cannot be bypassed. | A Change activation is requested. Proposals can be withdrawn. |
pending_approval |
Policy has held activation for a human decision. Rejection and expiry are explicit — nothing waits silently. | An approval grants execution. |
live |
The Change is active. Live does not mean measured. | First real exposure, or explicit acceptance of a weaker measurement path. |
measuring |
Readouts update under the pre-registered plan while guardrails run. | Evidence suffices, a guardrail breaks, or an operator records a Decision. |
decided |
A ship, kill, iterate, or extend Decision with rationale closes the turn. |
The Loop returns to listening with the turn preserved as history. |
Pause and archive are status controls layered on top; they never rewrite history (see Loops in practice).
A complete turn
- Listen. Connectors, SDK events, revenue outcomes, and Metric watches produce immutable Signals, routed to subscribed Loops in the same environment.
- Diagnose. Versioned Analyzers run: aggregate ones read through Metrics and Cohorts; LLM ones consume untrusted data behind fencing and record model and prompt versions.
- Form the claim. An Insight states what appears true, with confidence, supporting Signals, and freshness; a Hypothesis follows a forced grammar and cites evidence.
- Propose action. A Change declares kind, audience, artifacts, rollout, and exposure — or explicitly accepts the weaker, non-causal path.
- Govern. Policy evaluates the acting Principal, action kind, scope, risk, and spend, then allows, denies, or raises an Approval Request.
- Deliver. A product or page variation ships through a signed assignment bundle; provider actions run through governed journals; a brief hands work to a human or coding agent.
- Confirm exposure. Measurement starts at the first observed exposure, not at activation.
- Measure. Experiment readouts carry explicit evidence states —
insufficient_evidence,trending,significant_win,significant_loss,guardrail_breach— with bounds and data bases. Non-experimental Changes are labeled weaker evidence. - Decide. The operator records
ship,kill,iterate, orextend, with rationale and evidence and Metric snapshots. - Return. The Loop resumes listening, with the whole turn available to the next proposal.
Honest failure semantics
A successful turn: exposure observed, a readout valid for its evidence class, a Decision recorded, history intact. Everything else keeps an honest name:
- No data means the source produced no observations. It is never rendered as zero.
- Below k means privacy suppression hides the readout. No approximations, no subtraction leaks.
- Blocked activation shows which Approval Request or readiness check holds the Loop.
- A stalled Loop is flagged and notifications fire; it is never silently advanced.
- An unmeasurable Change may still ship, but causal language and Experiment contribution are excluded.
- A guardrail breach reports as a breach and can auto-pause the Loop; it is never an ordinary loss, or win.
The decision log and torno context
Decisions are append-only institutional memory: each entry records the deciding Principal, rationale, evidence and Metric snapshots, and the affected turn. Corrections are new records, not edits. The log is searchable and compounds.
The one-call briefing:
torno context <loop_id>
It returns state, target and guardrail trend, live Changes, top Insights, recent Decisions, pending approvals, and freshness and unknown markers. Proposals bind to the decision-log snapshot they were made against; proposing without the history is not possible, for humans or agents. The CLI, API, and MCP answer from the same backend composition — see the agent interface.