Research / Agents and LLMs

P61 · full · draft

Promotion No Measurement Can Buy: Shadow Routing, an Authority Barrier and Verified Canary for Models and Components

partial full Agents and LLMs

State of the work. Python tier and the promotion decision procedure ship on main with constructed-evidence tests and mutant runs; five tiers are unwired and no live shadow run has been done.

This is a draft, not peer reviewed. Repository references link to revl at commit 45bec431f.

Planned to be combined with P59 (A System May Evolve Behaviour, Never the Rules Governing Its Authority: The Admission Kernel as a Capability, and Honest Rollback of Evolved Layers), P60 (Self-Extending Runtime: A Component Proposes a Component, the Embedded Compiler Decides, Failed Health Reverts Residue-Free) into a single paper.

Pitch

A model or component is promoted by replaying captured worlds against the incumbent and the promotion function is built so that no latency or accuracy number can appear in the same expression as a non-empty authority diff.

Abstract

Progressive-delivery systems promote a new version when metrics such as error rate or latency stay inside a threshold. For a model that can act, a small sample measures the paths traffic happened to take, while capability reach and taint edges are static properties of the program; the rare path that widens authority is the one the sample does not exhibit. We describe a promotion procedure for model and component replacement in which the verdict is split in two phases by a control-flow barrier. Before the barrier are properties of the declaration and of whether the evidence is evidence: the action's route names both roles, every sealed decision entry verifies, the policy and placement digests are pinned, the authority diff is present on every axis and empty on all of them, and every layer of accumulated state is either revertible or carries a tested compensation. Only after the barrier is agreement accumulated, per action class, from replay comparisons of captured worlds. The barrier is also a data barrier: the metric block is not copied across it, and a counter in the verdict reports how often a metric was read (asserted zero on the paths the tests cover). A declared fraction of crossings is served in shadow through a deterministic, order-independent draw; a live promotion reverts on the first attributed divergence, named as an exact (component, realm) and step; zero evidence refuses rather than promotes. We show the rule is shared by four promotion paths in the tree through a registry and a sweep that flags unregistered ones, show a promotion path (the existing canary) that lacked the barrier and recommended promote for a candidate with wider reach, and report non-vacuity runs against mutants. We do not report a live shadow run: every input in the tests is constructed.

Problem and claim

Canary and shadow tooling (Argo Rollouts, Flagger, Kayenta, traffic mirroring) judges a candidate by metrics. For model-backed actions that is the wrong judge twice. The metrics are samples, and the property that matters, whether the candidate can reach more than the incumbent, is static. And a gate that weighs a latency win against an authority widening can be tuned, by accident or by an optimiser, to approve the widening.

The claim: a promotion gate can be written so that the comparison "latency versus authority" cannot be expressed in it. The design note states the target as "there is no expression in this function in which both values appear" (src/revl/shadow_promotion.py:1487-1510, the decide docstring). Agreement is accumulated over comparisons of captured worlds, not over a counter, so that a divergence is a name, not a number.

Second claim: the property is checkable and has been checked. The syntax-tree tests assert there is one call to accumulate, after the precondition loop; that Pair has no slo field; and that no precondition names an agreement member (docs/design/540-shadow-promotion.md:125-200). A separate registry and sweep keep a third promotion path from escaping the rule (docs/design/548-authority-precondition.md:80-197).

Third claim, the empirical hook: the pre-existing canary path recommended promote whenever two captured worlds matched, and a candidate with strictly wider capability reach produced an identical timeline and got promote (docs/design/548-authority-precondition.md:27-79). After the barrier, the same pair is refused and the divergence comparison is never computed (divergenceRead: false, src/revl/mcp/canary.py:602-655).

Contributions

  1. A two-phase promotion verdict with a control-flow and data barrier: preconditions (route, evidence, policy, authority, state) return before any tally exists; the metric is not carried into Pair; a measured slo_reads counter is reported in the verdict (src/revl/shadow_promotion.py:1140-1160,1487-1588; docs/design/540-shadow-promotion.md:125-200).
  2. Shadow serving of a declared share, a rational such as 1/20, selected by a keyed hash of the crossing, so a replay shadows what the run shadowed; the incumbent's answer is served and both worlds are captured; the share is not a verdict input (src/revl/shadow_routing.py:189-320; docs/design/558-shadow-scheduling.md:86-140).
  3. Two rules on two sides of promotion: before promotion, threshold over a ratio plus a minimum sample; after promotion, revert on the first attributed divergence regardless of ratio; zero evidence refuses (docs/design/540-shadow-promotion.md:202-224; docs/design/558-shadow-scheduling.md:639-654).
  4. Restore versus compensate: revert reports restored and compensated layers as separate lists and the phrase "rolled back" is not used in the rendered output (docs/design/540-shadow-promotion.md:225-256).
  5. A shared barrier rule (AUTHORITY_AXES, alias table, fail-closed authority_moved, REGISTRY, discover) that binds the four registered promotion paths and flags any unregistered one (none beyond the two exempt modules on d41ee937), plus its application to the canary path that lacked it (src/revl/promotion_barrier.py:112,135-168,452,472,558; tests/test_promotion_barrier_543.py).
  6. Canary as a realm slice: G2 forces the candidate into a separate realm and the revert is the derived LIFO teardown with survivors pinned by a test (docs/verified-canary.md:14-30,57-82; tests/test_canary.py::test_exit_one_of_n_diverges_and_reverts_clean).

Evidence on main

claimpath:line or teststatusnote
barrier is control flow: one accumulate call after the precondition loopsrc/revl/shadow_promotion.py:1487-1588; tests/test_shadow_promotion_518.py::test_the_authority_barrier_survives_a_window_that_would_have_promoted (line 558)shippedAST assertions are described in docs/design/540-shadow-promotion.md:140-165
metric not carried across: Pair has no slo member; counter is incremented in one functiontests/test_shadow_promotion_518.py:609,620,642shippedslo_reads is a measurement of the module's behaviour
agreement compares chosen_digest and outcome, not model digest, fallback depth or samplingdocs/design/540-shadow-promotion.md:71-124shippeddesign rationale
suppressed prompt binding refuses the windowsame, section 2.1 (binding-suppressed)shippedthe confidentiality-fail-open argument
scheduler: share is a rational, draw is a keyed hash, share not a verdict inputsrc/revl/shadow_routing.py:189-320; tests/test_shadow_routing_518.py (43 test functions)shippedobserved 52/1000, 250/1000, 517/1000, 1000/1000 for 1/20, 1/4, 1/2, 1/1 (docs/design/558-shadow-scheduling.md:107-128); "not a claim" of uniformity
action correlation: window for summarize offered as classify evidence refused as action-mismatcheddocs/design/558-shadow-scheduling.md:283-310 (non-vacuity table)shipped, stamp trusted then derivedsections 3.1 and 12 of that note; derived from a static walk whose premise can refuse
register: promotion lands, induced divergence reverts that same promotion, zero evidence shows no 0% or 100%src/revl/shadow_register.py:252; tests/test_shadow_register_518.py (23 test functions)shippeddocs/design/558-shadow-scheduling.md:555-684
python tier changes which model answers after promotiontests/test_shadow_cutover_1192.py (12 test functions); backends/python/runtime.py:1132 (_revl_serve_shadow)shipped for python onlyother five tiers discard the observer's return (docs/design/558-shadow-scheduling.md:664-675)
revl promote decides from artifacts, exits 0/1/1 for PROMOTE/REFUSE/REVERTtests/test_promote_cli_1192.py:247; docs/design/558-shadow-scheduling.md:686-854shippedit decides, it does not land
shared barrier rule and registrysrc/revl/promotion_barrier.py; tests/test_promotion_barrier_543.py (25 test functions)shippeddetector is syntactic and "errs wide"; limit stated
canary lacked barrier; wider-reach candidate promoteddocs/design/548-authority-precondition.md:27-79; tests/test_promotion_barrier_543.py:500,513shipped fixmeasured at 6c291ac3 (historical); the two tests pin the verdict on this tree
canary as realm slice, derived LIFO revert, survivorsdocs/verified-canary.md; tests/test_canary.py (15 test functions)shipped, stateless onlystateful canary is not landed
signed execution receiptsCHANGELOG.md:216-219 lists "decided from signed execution receipts"partialsealed decision entries are verified by _verified (src/revl/shadow_promotion.py:718); the receipts path was not traced beyond this and the changelog sentence

Numbers that exist

Paper outline

  1. Introduction: why metrics cannot gate an agent; the canary that promoted a wider candidate.
  2. Model: roles, route table, sealed decision entries, captured worlds.
  3. The two-phase verdict and the barrier; the shapes of fail-closed refusals (table of 14 links).
  4. Shadow serving and action correlation: share, stamp, derivation.
  5. Authority diff on five canonical axes; the registry and sweep; canary retrofit.
  6. Restore versus compensate and the promotion register; zero-evidence rule.
  7. Evaluation: non-vacuity, mutation, injected-divergence study, metric-gate baseline.
  8. Related work. 9. Limits and future work (stateful canary, five tiers, activation identity).

Threats to validity and limits

Quoted from the docs:

Fact-check

Claims in this draft were checked against revl main at commit 45bec431f: 34 checked, 6 corrected.

Cite this draft

@misc{revlp61,
  author       = {Thomas Moussajee},
  title        = {Promotion No Measurement Can Buy: Shadow Routing, an Authority Barrier and Verified Canary for Models and Components},
  year         = {2026},
  howpublished = {\url{https://inso1337.github.io/revl/research/P61.html}},
  note         = {Research draft, not peer reviewed. Written against revl commit 45bec431f. Licensed CC BY 4.0.}
}

Text licensed CC BY 4.0, author Thomas Moussajee.

← All research drafts