fix: guarantee refined validation output

This commit is contained in:
Hermes Agent
2026-08-29 21:17:02 +10:00
parent a781e3d4de
commit 2c731f4982
5 changed files with 88 additions and 3 deletions
+36
View File
@@ -142,6 +142,42 @@ class ValidationHarnessTests(unittest.TestCase):
self.assertIn("VALIDATOR 1", compiler_prompt)
self.assertIn("VALIDATOR 2", compiler_prompt)
self.assertNotIn("validator-a found no material issue\n\nvalidator-b found no material issue", final)
def test_validation_report_is_retried_and_never_returned_as_final_answer(self):
body = api.ChatRequest(primary_model="primary", validator_models=["validator"], harness=True, message="Write the requested result")
calls = []
def fake_stream(payload, request_id, cancel_event=None, parent_id=None):
model = payload["model"]
prompt = payload["messages"][-1]["content"]
calls.append((model, prompt))
if model == "validator":
content = "The draft needs a stronger ending."
elif "IMPORTANT FINALIZATION RETRY" in prompt:
content = "refined final answer"
elif "VALIDATION REPORTS:" in prompt:
content = "# Story Validation Report\n## Narrative Structure\nRating: 8/10"
else:
content = "primary draft"
return {"message": {"role": "assistant", "content": content}, "done": True}
def fake_metric(conversation_id, request_id, model, state, status=None, error=""):
return {"request_id": request_id, "model": model, "status": status}
with patch.object(api, "_require_installed_model", side_effect=lambda name: name), patch.object(
api, "_stream_chat_request", side_effect=fake_stream
), patch.object(api, "_persist_metric", side_effect=fake_metric), patch.object(
api, "_persist_chat_stage"
), patch.object(api, "_persist_chat_event"), patch.object(api, "_chat_state"):
final, metrics, reports = api._run_validation_harness(
body, "root-request", "conversation", "primary", ["validator"], threading.Event(), []
)
self.assertEqual(final, "refined final answer")
self.assertNotIn("Validation Report", final)
self.assertEqual(len(reports), 1)
self.assertEqual(len(metrics), 4)
self.assertTrue(any("IMPORTANT FINALIZATION RETRY" in prompt for _, prompt in calls))
def test_status_omits_full_catalog_by_default(self):
with patch.object(api, "_local_tags", return_value=[]), patch.object(api, "_local_ps", return_value=[]), patch.object(
api, "_ensure_catalog", return_value={"models": [], "families": {}, "source": "test"}