diff --git a/src/aituner/cli.py b/src/aituner/cli.py index 0ed09b1..2c1d4a0 100644 --- a/src/aituner/cli.py +++ b/src/aituner/cli.py @@ -376,6 +376,8 @@ def cmd_study_tune(args: argparse.Namespace) -> int: "stop_authorized_by": ( "validator" if (is_harness_stop or authorized) + else "file_proposal" + if proposal_source is not None else "llm_after_veto_budget" ), "diagnosis": proposal.diagnosis, diff --git a/src/aituner/lca.py b/src/aituner/lca.py index 399fc89..5ca2f15 100644 --- a/src/aituner/lca.py +++ b/src/aituner/lca.py @@ -373,12 +373,13 @@ def _prefix_profile( length_mode: str, ) -> WorkloadProfile: prefix = requests[:index] + start = float(prefix[0].arrival_s) if prefix else float(window.window_start) end = float(prefix[-1].arrival_s) if prefix else float(window.window_start) prefix_window = WindowRecord( window_id=window.window_id, trace_path=window.trace_path, trace_type=window.trace_type, - window_start=window.window_start, + window_start=start, window_end=end, source_payload=window.source_payload, ) diff --git a/src/aituner/spec.py b/src/aituner/spec.py index 85ce37e..dfe6e41 100644 --- a/src/aituner/spec.py +++ b/src/aituner/spec.py @@ -364,6 +364,11 @@ class AdaptiveStopSpec: raise SpecError( "trace.adaptive_stop.stable_checks and max_checks must be > 0." ) + if stable_checks > max_checks: + raise SpecError( + "trace.adaptive_stop.stable_checks must be <= max_checks, " + "otherwise convergence can never be detected." + ) return cls( enabled=enabled, tau=tau,