fix: slow-update R2 dual_metric uses slow_candidate kind (not final)

This commit is contained in:
2026-07-16 05:38:05 -04:00
parent 1468a53b7a
commit c68de849da
2 changed files with 34 additions and 1 deletions
+3 -1
View File
@@ -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",
+31
View File
@@ -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_kindfinal 与 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
# ---------------------------------------------------------------------------