JuliusBrussee/caveman · error
session-value action %s lacks promotion evidence
Error message
session-value action %s lacks promotion evidence
What it means
ValidateSessionValuePromotionEvidence found an action in the shadow-mode policy artifact whose promotion evidence is missing or below the calibrated floors (minimum effective samples, max calibration error, max Brier score). Structurally valid artifacts may run in shadow; promoting an action to live traffic additionally requires this statistical evidence, and the action fails it.
Source
Thrown at proxy/routing/session_value.go:36
SessionValueRouterVersion = "session-value-v1"
SessionValuePromotionMinEffectiveSamples = 100
SessionValuePromotionMaxCalibrationError = 0.10
SessionValuePromotionMaxBrierScore = 0.25
)
// ValidateSessionValuePromotionEvidence applies evidence floors beyond
// structural artifact validity. Runtime may evaluate a structurally valid
// shadow artifact; traffic promotion requires calibrated sample floors.
func ValidateSessionValuePromotionEvidence(artifact SessionValuePolicyArtifact) error {
if len(artifact.Actions) == 0 {
return errors.New("session-value promotion artifact has no actions")
}
for _, action := range artifact.Actions {
if action.RewardEffectiveSampleSize < SessionValuePromotionMinEffectiveSamples ||
action.CostEffectiveSampleSize < SessionValuePromotionMinEffectiveSamples ||
action.QualityCalibrationError > SessionValuePromotionMaxCalibrationError ||
action.RewardBrierScore > SessionValuePromotionMaxBrierScore {
return fmt.Errorf("session-value action %s lacks promotion evidence", action.ActionID)
}
}
return nil
}
var sessionValueFeatureVocabulary = map[string]struct{}{
"turn_index": {}, "user_turns": {}, "subagent_turns": {}, "tool_calls": {},
"corrective_turns": {}, "input_tokens_estimate": {}, "tools_count": {},
"stream": {}, "json_mode": {}, "vision": {}, "audio": {},
"cache_read_tokens": {}, "cache_write_tokens": {}, "uncached_tokens": {},
"cache_age_ms": {}, "spent_session_usd": {}, "budget_remaining_usd": {},
"output_token_prior": {}, "recent_error_count": {}, "interrupted_recently": {},
"complexity_ordinal": {},
}
type SessionValueFeatureSpec struct {
Name string `json:"name"`
Mean float64 `json:"mean"`View on GitHub (pinned to 766dce6b13)
Solutions
- Keep the action in shadow mode until it accrues at least the minimum effective samples with acceptable calibration error and Brier score
- Regenerate the artifact after more data collection so the action's evidence meets the promotion floors
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at proxy/routing/session_value.go:36 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of JuliusBrussee/caveman@766dce6b13 (2026-08-18).
Data as JSON: /api/errors/e6a0a8553343957c.
Report an issue: GitHub.