Skip to content
Exploratoryproject

control-loop / reconciler

Reference instantiation of the two-plane loop on a single repository. Repository repair per blueprint §6, blast radius L1 (Gated).

Maintained by Tim
  • python
  • claude-code
  • autonomic-swe
  • agent-systems
  • runtime-infra

A reference instantiation of the two-plane loop on a single repository, demonstrating the Repository Repair pattern from the blueprint. The reconciler is the smallest system that satisfies all four conditions of the closure test.

What it does

The reconciler takes a small repository and a held-out corpus of historical issues that were each closed by a passing test. For each issue:

  1. The Applier creates a scratch branch from the pre-fix state.
  2. The Proposer (a no-op stub in v0; will be replaced in v1) reads the issue text and emits a patch.
  3. The Scorer runs the historical tests against the patch and produces a Verdict (PASS, HARDEN, STALL, PIVOT, or KILL).
  4. The Ledger appends the run.
  5. On PASS, the patch is offered as a change request for human review (blast radius L1 — Gated). The human samples; they do not review every one.

What it proves

  • Condition 1 (closed loop) is satisfied. The Scorer observes the consequence of the patch; the Ledger records both.
  • Condition 2 (declarative target) is satisfied. The patch is the intent; git diff shows it.
  • Condition 3 (unattended) is satisfied at L1 with the named exception “the human samples”. Not unattended in the strict sense; the human is named.
  • Condition 4 (ground truth) is satisfied. The Verdict plane is the Scorer, not the Proposer. The corpus is monotone: 40 historical issues, no removals. KILL outranks aggregate — the reconciler does not promote a patch that breaks a previously-passing case, even if the aggregate improves.

What it does not prove

  • L2 (Unattended). The reconciler still requires a human in the loop; this is by design for the reference instantiation.
  • L3 (Self-modifying). The Verdict plane and the Subject (the repository) are distinct; the reconciler does not modify itself.
  • A real Proposer. The current Proposer is a stub (intentional, per blueprint §9 — Proposer is built last).

Status

The reconciler reached “all four conditions satisfied at L1” on 2026-08-01 with a 40-case corpus. The blast radius is L1 (Gated); L2 deployment requires a separate path and a separate reviewer, per the blueprint.

Keep exploring

Connect the proof to your own workflow