From c68de849dabad5eddd3fcd6b7ccd73801d88c1a9 Mon Sep 17 00:00:00 2001 From: iomgaa Date: Thu, 16 Jul 2026 05:38:05 -0400 Subject: [PATCH] fix: slow-update R2 dual_metric uses slow_candidate kind (not final) --- app/harness/runner.py | 4 +++- tests/unit/test_harness_observation.py | 31 ++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/app/harness/runner.py b/app/harness/runner.py index f468e12..068601d 100644 --- a/app/harness/runner.py +++ b/app/harness/runner.py @@ -1443,11 +1443,13 @@ class Runner: r2_skills_version = self._current_version("skills") new_prompts_version = self._current_version("prompts") eval_r2 = await self._eval_full_val(epoch, pools, run_suffix="_p2") + # R2 是可能被 revert 的慢更新候选,用 slow_candidate 口径,不占 final + # (epoch 终值唯一由 Phase 2 的 final 承载) write_dual_metric( str(self._paths.db_path), run_id=self._config.run_id, epoch=epoch, - version_kind="final", + version_kind="slow_candidate", skills_version=r2_skills_version, prompts_version=new_prompts_version, pool="val", diff --git a/tests/unit/test_harness_observation.py b/tests/unit/test_harness_observation.py index d37cc40..c6b7fd2 100644 --- a/tests/unit/test_harness_observation.py +++ b/tests/unit/test_harness_observation.py @@ -71,6 +71,37 @@ def test_write_read_dual_metric(db_path: str, run_id: str) -> None: assert row["run_id"] == run_id +def test_dual_metric_kinds_distinguishable(db_path: str, run_id: str) -> None: + """observation 层接受任意 version_kind:final 与 slow_candidate 可区分共存。""" + write_dual_metric( + db_path, + run_id=run_id, + epoch=1, + version_kind="final", + skills_version="v1", + prompts_version="v1", + pool="val", + hard_acc=0.7, + soft_score=None, + mixed_score=None, + ) + write_dual_metric( + db_path, + run_id=run_id, + epoch=1, + version_kind="slow_candidate", + skills_version="v2", + prompts_version="v2", + pool="val", + hard_acc=0.6, + soft_score=None, + mixed_score=None, + ) + rows = read_dual_metric(db_path, run_id=run_id) + kinds = {row["version_kind"] for row in rows if row["epoch"] == 1} + assert kinds == {"final", "slow_candidate"} + + # --------------------------------------------------------------------------- # shadow_gate # ---------------------------------------------------------------------------