57 lines
1.9 KiB
Go
57 lines
1.9 KiB
Go
package capability
|
|
|
|
type IntelligencePath string
|
|
|
|
const (
|
|
PathRule IntelligencePath = "RULE"
|
|
PathReflex IntelligencePath = "REFLEX"
|
|
PathSkill IntelligencePath = "SKILL"
|
|
PathSmallLocal IntelligencePath = "SMALL_LOCAL"
|
|
PathStrongLocal IntelligencePath = "STRONG_LOCAL"
|
|
PathExternal IntelligencePath = "EXTERNAL"
|
|
PathResearch IntelligencePath = "RESEARCH"
|
|
PathTeam IntelligencePath = "TEAM"
|
|
)
|
|
|
|
type StrategyRequest struct {
|
|
RequiredQuality int64
|
|
PreferLowLatency bool
|
|
CostBudgetMicros int64
|
|
RiskClass string
|
|
FreshnessRequired bool
|
|
CostOfError int64
|
|
}
|
|
type StrategyDecision struct {
|
|
Path IntelligencePath
|
|
Reason string
|
|
Escalate bool
|
|
}
|
|
|
|
// StrategyEligibility is supplied by Capability lifecycle resolution. It keeps
|
|
// a requested cheap route from becoming an entitlement to use stale evidence.
|
|
type StrategyEligibility struct {
|
|
RuleEligible bool
|
|
ReflexEligible bool
|
|
SkillEligible bool
|
|
}
|
|
|
|
func (r StrategyRequest) Select() StrategyDecision {
|
|
return r.SelectEligible(StrategyEligibility{RuleEligible: true, ReflexEligible: true, SkillEligible: true})
|
|
}
|
|
|
|
func (r StrategyRequest) SelectEligible(eligible StrategyEligibility) StrategyDecision {
|
|
if r.RiskClass == "HIGH" || r.CostOfError >= 800 {
|
|
return StrategyDecision{Path: PathStrongLocal, Reason: "high consequence requires deeper reasoning", Escalate: true}
|
|
}
|
|
if eligible.RuleEligible && r.RequiredQuality <= 500 && r.CostBudgetMicros > 0 {
|
|
return StrategyDecision{Path: PathRule, Reason: "bounded low-risk path"}
|
|
}
|
|
if eligible.ReflexEligible && r.PreferLowLatency {
|
|
return StrategyDecision{Path: PathReflex, Reason: "latency preference with later escalation"}
|
|
}
|
|
if eligible.SkillEligible {
|
|
return StrategyDecision{Path: PathSkill, Reason: "validated reusable strategy"}
|
|
}
|
|
return StrategyDecision{Path: PathSmallLocal, Reason: "no eligible reflex or skill; escalate to reasoning", Escalate: true}
|
|
}
|