fix(harness): JSON-safe SLO state, unscored AI errors, mark recorded-only proposals executed

This commit is contained in:
seon committed 2026-09-24 02:22:29 +09:00
1 parent 5daf13b669
commit de076a79e4
4 files changed
+45 -36

No files matched your search

+13 -10
View File
@@ -32,16 +32,16 @@ type activeRun struct {
}
type RunRequest struct {
Campaign string `json:"campaign"`
ScenarioIDs []string `json:"scenario_ids"`
BaselineS *int `json:"baseline_s"` // default 300 (design 8)
CooldownS *int `json:"cooldown_s"` // default 300
ObserveTimeoutS *int `json:"observe_timeout_s"` // default 1800
MinObserveS *int `json:"min_observe_s"` // default 180: earliest t_recover (12 probe successes after inject)
DriftBefore *int `json:"drift_before"`
GitSHA string `json:"git_sha"`
Notes string `json:"notes"`
SkipRevert bool `json:"skip_revert"`
Campaign string `json:"campaign"`
ScenarioIDs []string `json:"scenario_ids"`
BaselineS *int `json:"baseline_s"` // default 300 (design 8)
CooldownS *int `json:"cooldown_s"` // default 300
ObserveTimeoutS *int `json:"observe_timeout_s"` // default 1800
MinObserveS *int `json:"min_observe_s"` // default 180: earliest t_recover (12 probe successes after inject)
DriftBefore *int `json:"drift_before"`
GitSHA string `json:"git_sha"`
Notes string `json:"notes"`
SkipRevert bool `json:"skip_revert"`
}
func NewRunManager(a *App) *RunManager { return &RunManager{app: a} }
@@ -311,6 +311,9 @@ func (a *App) buildVerdict(ctx context.Context, runID string, sc *Scenario, tInj
tAlert = &t
}
case "diagnosis":
if e, _ := p["error"].(string); e != "" { // AI VM unreachable / malformed: not a diagnosis, not a misjudge
continue
}
if layer < 2 {
layer = 2
}