From 62bcd7d640c3003a28b19fed58fa03240e12bb48 Mon Sep 17 00:00:00 2001 From: Jiri Puc Date: Thu, 23 Jul 2026 11:07:32 +0200 Subject: [PATCH] release: loopy-loop 0.12.0 (handoff currency + eval provenance + reconciliation) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps to 0.12.0 for the D13–D15 landing in #88 and requires eval-banana>=0.5.0. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01EPYwF6cRYs2mfsfHF1hibc --- CHANGELOG.md | 21 +++++++++++++++++++++ pyproject.toml | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 53d6e58..92d6752 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## 0.12.0 + +- **Deterministic handoff currency, located+fresh advisory eval, orchestrator + reconciliation (#88, D13–D15).** Fixes an `inner_outer_eval` non-convergence + where the orchestrator stalls after the work is done because it is misled by + its own durable state. Opt-in via a typed, validated `currency_outputs` + contract field (a contract without it is inert; backward compatibility waived): + - **D13 handoff currency.** A terminal `goal_met` that rests on a handoff the + completing attempt did not re-stamp is rejected via the existing control- + repair path — independent of whether `handoff_ref` is cited. A non-completion + owner finish that leaves the handoff un-re-stamped emits a pure `handoff_stale` + diagnostic (no failure, no cap). A same-revision re-stamp is accepted only by + an exact field-level provenance compare, preserving tamper detection. + - **D14 advisory eval.** The engine never reads the eval result; it emits at + most an `eval_missing` presence diagnostic and never gates (D11). Requires + `eval-banana>=0.5.0`, whose `--result-out` writes the provenance-stamped + `project_state/eval_results.md` directly instead of the runner hand-copying it. + - **D15 reconciliation.** The orchestration role receives the session raw-trace + root in `paths.json`; the stock `outer` prompt gains reconcile-against-live- + state and anti-over-polish guidance and drops the mandatory-final-eval line. + ## 0.11.0 - **Engine-emitted contract descriptors (#86).** The engine emits a diff --git a/pyproject.toml b/pyproject.toml index 9f977e4..2a98642 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "loopy-loop" -version = "0.11.0" +version = "0.12.0" description = "Run long-running AI agent workflows inside your repository." readme = "README.md" requires-python = ">=3.12"