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

ADR-0022: Measurement sessions — one warm engine, many observations

Status: proposed | Date: 2026-08-14

References: ADR-0005, ADR-0006, ADR-0008, ADR-0017, ADR-0020

Context

Every brokered measure call boots the engine from cold, measures, and dies. GLM-5.2 NVFP4 revalidation measured ~25 min per rung, of which ~9 min is actual measurement. Four GPU jobs per iteration pay that cold-boot toll four times.

Decision

A measurement session is a broker-owned engine process serving ordered measurement points against one candidate digest. Independence contract: declared resets between points, declared residue (accepted drift), bounded drift (max point count per session), fixed order, failed reset is not a measurement. Sessions are state (never a durable step), but points remain durable steps (identity includes reset-protocol digest and ordinal). A/B legs driven by import-time toggles stay one-shot jobs. Domains that declare nothing keep today's behavior.

Consequences

Comparability breaks at the switch (session-era numbers are not comparable to pre-session). Mechanism rung becomes a point inside the session. Expected saving: ~50 min per iteration. A new way to be wrong: dirty sessions (mitigated by reset record in each point's result).

Alternatives Considered

Broker-owned measurement session serving ordered points against one candidate digest (accepted)

Fat single job: combine all measurement points into one large job (rejected)

  • Rejected because: Loses per-point isolation, retry, and memo. Accepted as a prototype to validate the independence contract, but rejected as the end state.

Standing server outside the run: long-lived measurement process shared across runs (rejected)

  • Rejected because: ADR-0008's frozen world requires the candidate's own build; a standing server outside the run cannot serve a candidate-specific engine.