Unify harness L-C-A on the canonical lca.WorkloadProfile
Phase 0 of the two-stop work. The prompt block labeled `workload_lca_profile` previously re-derived L-C-A from summarize_window's ad-hoc percentiles, diverging from the paper's 10-dim RobustScaler vector implemented in lca.py. Make that block authoritative: build_harness_context now accepts an optional workload_profile and renders the canonical 10-dim vector + per-family stats when present, falling back to the legacy rendering only when no profile is supplied (direct unit-test calls). Real call sites (study prompt/llm-propose/tune, run_baseline_then_llm) build the profile via lca.build_study_workload_profile and pass it through build_prompt. The heuristic regime classifiers keep reading window_summary; that is the heuristic layer, distinct from the similarity metric. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -28,6 +28,7 @@ from aituner.harness import (
|
||||
build_harness_stop_proposal,
|
||||
)
|
||||
from aituner.lca import (
|
||||
build_study_workload_profile,
|
||||
build_workload_profile,
|
||||
profile_similarity,
|
||||
resolve_length_mode,
|
||||
@@ -298,6 +299,34 @@ class CoreFlowTests(unittest.TestCase):
|
||||
self.assertAlmostEqual(profile.stats["arrival"]["fano_1s"], 0.5)
|
||||
self.assertEqual(resolve_length_mode(request_mode="decode_only"), "output")
|
||||
|
||||
def test_harness_context_uses_canonical_lca_vector(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
tmp_path = Path(tmp)
|
||||
study_path = _write_study_assets(tmp_path)
|
||||
study = load_study_spec(study_path)
|
||||
window, requests = load_trace_requests(study, study_spec_path=study_path)
|
||||
profile = build_study_workload_profile(study, requests, window)
|
||||
state = StudyState(study_id=study.study_id, trials=[])
|
||||
summary = summarize_window(requests, window)
|
||||
context = build_harness_context(
|
||||
study=study,
|
||||
window_summary=summary,
|
||||
state=state,
|
||||
workload_profile=profile,
|
||||
)
|
||||
block = context["workload_lca_profile"]
|
||||
# The labeled L-C-A block is the canonical 10-dim metric, not ad-hoc.
|
||||
self.assertEqual(block["vector"], profile.vector)
|
||||
self.assertEqual(len(block["vector"]), 10)
|
||||
self.assertIn("RobustScaler", block["metric"])
|
||||
# Without a profile it falls back to the legacy ad-hoc rendering.
|
||||
legacy = build_harness_context(
|
||||
study=study,
|
||||
window_summary=summary,
|
||||
state=state,
|
||||
)["workload_lca_profile"]
|
||||
self.assertNotIn("vector", legacy)
|
||||
|
||||
def test_lca_similarity_matrix_separates_different_profiles(self) -> None:
|
||||
window = WindowRecord(
|
||||
window_id="base",
|
||||
|
||||
Reference in New Issue
Block a user