From 5f93635689eb29273355ff9c3d3d55896dc41910 Mon Sep 17 00:00:00 2001 From: Jiri Puc Date: Mon, 20 Jul 2026 08:37:38 +0200 Subject: [PATCH] fix(templates): document that terminal control omits eval_refs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When the stock v3 contract retired sealed eval receipts (0.9.0, check_runner_roles: [outer], advisory eval_results.md), the outer and planner control examples stopped emitting eval_refs but never told the orchestrator why. Agents kept adding it back, citing eval_results.md or report paths — and the engine rejected the control ("eval receipt must be a current-session eval_receipts JSON file") because eval_refs only accepts eval_receipts/*.json, which this contract never produces. Observed live: one rejected terminal-control cycle per program in both the UGM and ultimate-memory-cloud runs. The prompts now state the field is omitted and eval verdicts are cited via evidence_refs -> eval_results.md. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01EPYwF6cRYs2mfsfHF1hibc --- .../inner_outer_eval/workflows/outer/prompt.txt | 5 +++++ .../pm_planner_dispatcher/workflows/planner/prompt.txt | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/loopy_loop/templates/inner_outer_eval/.loopy_loop/workflow_sets/inner_outer_eval/workflows/outer/prompt.txt b/src/loopy_loop/templates/inner_outer_eval/.loopy_loop/workflow_sets/inner_outer_eval/workflows/outer/prompt.txt index d1f8c57..ce391f4 100644 --- a/src/loopy_loop/templates/inner_outer_eval/.loopy_loop/workflow_sets/inner_outer_eval/workflows/outer/prompt.txt +++ b/src/loopy_loop/templates/inner_outer_eval/.loopy_loop/workflow_sets/inner_outer_eval/workflows/outer/prompt.txt @@ -67,6 +67,11 @@ Evidence refs must use the engine's logical-reference grammar `:/` with scopes repo, session, parent, root — e.g. `session:/project_state/evidence/audit.md`, `repo:/design/decisions.md`. Bare URLs, git SHAs, and absolute filesystem paths are rejected; put those inside a referenced file instead. +Do not include an `eval_refs` field: this stock contract runs eval as advisory +(no sealed eval receipts are produced), and `eval_refs` only accepts a +current-session `eval_receipts/*.json` file — citing anything else is rejected. +Cite eval verdicts through `evidence_refs` pointing at +`session:/project_state/eval_results.md` instead. Stopping short of the goal is only for a genuinely terminal blocker, after autonomous routes are exhausted. diff --git a/src/loopy_loop/templates/pm_planner_dispatcher/.loopy_loop/workflow_sets/pm_planner_dispatcher/workflows/planner/prompt.txt b/src/loopy_loop/templates/pm_planner_dispatcher/.loopy_loop/workflow_sets/pm_planner_dispatcher/workflows/planner/prompt.txt index 2f4b83f..924fd01 100644 --- a/src/loopy_loop/templates/pm_planner_dispatcher/.loopy_loop/workflow_sets/pm_planner_dispatcher/workflows/planner/prompt.txt +++ b/src/loopy_loop/templates/pm_planner_dispatcher/.loopy_loop/workflow_sets/pm_planner_dispatcher/workflows/planner/prompt.txt @@ -54,6 +54,11 @@ Evidence refs must use the engine's logical-reference grammar `:/` with scopes repo, session, parent, root — e.g. `session:/project_state/evidence/audit.md`, `repo:/design/decisions.md`. Bare URLs, git SHAs, and absolute filesystem paths are rejected; put those inside a referenced file instead. +Do not include an `eval_refs` field: this stock contract runs eval as advisory +(no sealed eval receipts are produced), and `eval_refs` only accepts a +current-session `eval_receipts/*.json` file — citing anything else is rejected. +Cite eval verdicts through `evidence_refs` pointing at +`session:/project_state/eval_results.md` instead. Evaluation, when you use it, is advisory: a failed or missing check is input to your judgment, not a veto. Stopping short of the goal is only for a genuinely