Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
26207d93ef | ||
|
|
42871f2e47 |
@@ -0,0 +1,41 @@
|
|||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r StrategyRequest) Select() StrategyDecision {
|
||||||
|
if r.RiskClass == "HIGH" || r.CostOfError >= 800 {
|
||||||
|
return StrategyDecision{Path: PathStrongLocal, Reason: "high consequence requires deeper reasoning", Escalate: true}
|
||||||
|
}
|
||||||
|
if r.RequiredQuality <= 500 && r.CostBudgetMicros > 0 {
|
||||||
|
return StrategyDecision{Path: PathRule, Reason: "bounded low-risk path"}
|
||||||
|
}
|
||||||
|
if r.PreferLowLatency {
|
||||||
|
return StrategyDecision{Path: PathReflex, Reason: "latency preference with later escalation"}
|
||||||
|
}
|
||||||
|
return StrategyDecision{Path: PathSkill, Reason: "validated reusable strategy"}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package self
|
||||||
|
|
||||||
|
type BenchmarkCaseRef string
|
||||||
|
type PersonalBenchmark struct {
|
||||||
|
ID string
|
||||||
|
PrincipalID string
|
||||||
|
ApprovedCaseRefs []BenchmarkCaseRef
|
||||||
|
GoalProfile []string
|
||||||
|
PreferenceEvidenceRefs []SemanticReference
|
||||||
|
RecordedAt int64
|
||||||
|
}
|
||||||
|
type BenchmarkEvaluation struct {
|
||||||
|
CaseRef BenchmarkCaseRef
|
||||||
|
Path string
|
||||||
|
QualityMillis int64
|
||||||
|
ReliabilityMillis int64
|
||||||
|
LatencyMillis int64
|
||||||
|
CostMicros int64
|
||||||
|
CorrectionCount int64
|
||||||
|
EvidenceRefs []SemanticReference
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e BenchmarkEvaluation) Valid() bool {
|
||||||
|
return e.CaseRef != "" && len(e.EvidenceRefs) > 0 && e.QualityMillis >= 0 && e.ReliabilityMillis >= 0 && e.CorrectionCount >= 0
|
||||||
|
}
|
||||||
@@ -0,0 +1,92 @@
|
|||||||
|
package self
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
type AssessmentID string
|
||||||
|
type LearningLedgerEntryID string
|
||||||
|
type AssessmentState string
|
||||||
|
|
||||||
|
const (
|
||||||
|
AssessmentCandidate AssessmentState = "CANDIDATE"
|
||||||
|
AssessmentConfirmed AssessmentState = "CONFIRMED"
|
||||||
|
AssessmentMonitoring AssessmentState = "MONITORING"
|
||||||
|
AssessmentResolved AssessmentState = "RESOLVED"
|
||||||
|
)
|
||||||
|
|
||||||
|
type CompetenceAssessment struct {
|
||||||
|
ID AssessmentID
|
||||||
|
PrincipalID string
|
||||||
|
SubjectRef SemanticReference
|
||||||
|
Revision uint64
|
||||||
|
ContextMatcher []string
|
||||||
|
QualityMillis int64
|
||||||
|
ReliabilityMillis int64
|
||||||
|
ConfidenceMillis int64
|
||||||
|
EvidenceRefs []SemanticReference
|
||||||
|
LastValidatedAt int64
|
||||||
|
AssessedAt int64
|
||||||
|
SupersedesRef *SemanticReference
|
||||||
|
}
|
||||||
|
type WeaknessPattern struct {
|
||||||
|
ID AssessmentID
|
||||||
|
PrincipalID string
|
||||||
|
Revision uint64
|
||||||
|
PatternKey string
|
||||||
|
ContextMatcher []string
|
||||||
|
FailureMode string
|
||||||
|
DetectionEvidenceRefs []SemanticReference
|
||||||
|
State AssessmentState
|
||||||
|
RecordedAt int64
|
||||||
|
}
|
||||||
|
type DependencyAssessment struct {
|
||||||
|
ID AssessmentID
|
||||||
|
SubjectRef SemanticReference
|
||||||
|
DependencyRef SemanticReference
|
||||||
|
ImpactClass string
|
||||||
|
CurrentEffect string
|
||||||
|
EvidenceRefs []SemanticReference
|
||||||
|
AssessedAt int64
|
||||||
|
}
|
||||||
|
type ImprovementNeed struct {
|
||||||
|
ID AssessmentID
|
||||||
|
PrincipalID string
|
||||||
|
SubjectRef SemanticReference
|
||||||
|
ProblemSummary string
|
||||||
|
EvidenceRefs []SemanticReference
|
||||||
|
ExpectedBenefit string
|
||||||
|
Priority int
|
||||||
|
State string
|
||||||
|
CreatedAt int64
|
||||||
|
}
|
||||||
|
type LearningLedgerEntry struct {
|
||||||
|
ID LearningLedgerEntryID
|
||||||
|
PrincipalID string
|
||||||
|
ImprovementNeedRef *SemanticReference
|
||||||
|
ObservedProblem string
|
||||||
|
EvidenceRefs []SemanticReference
|
||||||
|
Diagnosis string
|
||||||
|
Hypothesis string
|
||||||
|
ProposedChangeRef SemanticReference
|
||||||
|
ExpectedImprovement string
|
||||||
|
ActualEvaluationRefs []SemanticReference
|
||||||
|
DevelopmentGateRef *SemanticReference
|
||||||
|
BeforeVersionRefs []SemanticReference
|
||||||
|
AfterVersionRefs []SemanticReference
|
||||||
|
Decision string
|
||||||
|
SideEffects []string
|
||||||
|
RollbackRef *SemanticReference
|
||||||
|
RecordedAt int64
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a CompetenceAssessment) Validate() error {
|
||||||
|
if a.ID == "" || a.PrincipalID == "" || !a.SubjectRef.Valid() || a.Revision < 1 || a.ConfidenceMillis < 0 || a.ConfidenceMillis > 1000 || len(a.EvidenceRefs) == 0 || a.AssessedAt < 1 {
|
||||||
|
return fmt.Errorf("competence requires evidence")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
func (l LearningLedgerEntry) Validate() error {
|
||||||
|
if l.ID == "" || l.PrincipalID == "" || l.ObservedProblem == "" || len(l.EvidenceRefs) == 0 || l.Decision == "" || l.RecordedAt < 1 {
|
||||||
|
return fmt.Errorf("learning ledger entry is incomplete")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
BEGIN;
|
||||||
|
SET ROLE self_role;
|
||||||
|
CREATE TABLE IF NOT EXISTS self.competence_assessments (assessment_id TEXT PRIMARY KEY, principal_id TEXT NOT NULL, subject_ref JSONB NOT NULL, revision BIGINT NOT NULL CHECK(revision>0), context_matcher JSONB NOT NULL, confidence_millis BIGINT NOT NULL, evidence_refs JSONB NOT NULL, assessed_at_unix_millis BIGINT NOT NULL);
|
||||||
|
CREATE TABLE IF NOT EXISTS self.learning_ledger (entry_id TEXT PRIMARY KEY, principal_id TEXT NOT NULL, observed_problem TEXT NOT NULL, evidence_refs JSONB NOT NULL, diagnosis TEXT NOT NULL, hypothesis TEXT NOT NULL, decision TEXT NOT NULL, recorded_at_unix_millis BIGINT NOT NULL);
|
||||||
|
GRANT SELECT, INSERT, UPDATE ON self.competence_assessments, self.learning_ledger TO self_role;
|
||||||
|
RESET ROLE;
|
||||||
|
COMMIT;
|
||||||
@@ -1 +1 @@
|
|||||||
{"task_file":"dev/tasks/GEN2-014-add-explicit-reflex-lifecycle-shadow-reasoning-and-revalidation.json","task_id":"GEN2-014","task_revision":1}
|
{"task_file":"dev/tasks/GEN2-016-intelligence-strategy-resource-cost-policy-and-personal-benchmark.json","task_id":"GEN2-016","task_revision":1}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package domain_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.cin.su/m/Assistant/contracts/capability"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestStrategyUsesRiskAndCostSignals(t *testing.T) {
|
||||||
|
if got := (capability.StrategyRequest{RequiredQuality: 400, CostBudgetMicros: 10}).Select().Path; got != capability.PathRule {
|
||||||
|
t.Fatal(got)
|
||||||
|
}
|
||||||
|
if got := (capability.StrategyRequest{RiskClass: "HIGH", CostOfError: 900}).Select(); got.Path != capability.PathStrongLocal || !got.Escalate {
|
||||||
|
t.Fatalf("%#v", got)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package domain_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
selfcontract "git.cin.su/m/Assistant/contracts/self"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestBenchmarkRequiresEvidenceAndDoesNotPromoteAlone(t *testing.T) {
|
||||||
|
e := selfcontract.BenchmarkEvaluation{CaseRef: "case", QualityMillis: 900}
|
||||||
|
if e.Valid() {
|
||||||
|
t.Fatal("benchmark without evidence accepted")
|
||||||
|
}
|
||||||
|
e.EvidenceRefs = []selfcontract.SemanticReference{{OwnerNamespace: "epistemics", SemanticKind: "evaluation", StableID: "e"}}
|
||||||
|
if !e.Valid() {
|
||||||
|
t.Fatal("evidence-backed evaluation rejected")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package domain
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.cin.su/m/Assistant/contracts/self"
|
||||||
|
)
|
||||||
|
|
||||||
|
func ValidateCompetence(v self.CompetenceAssessment) error { return v.Validate() }
|
||||||
|
func ValidateLearning(v self.LearningLedgerEntry) error { return v.Validate() }
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package domain_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
selfcontract "git.cin.su/m/Assistant/contracts/self"
|
||||||
|
"git.cin.su/m/Assistant/modules/self/domain"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestCompetenceCannotBeSelfDeclaredWithoutEvidence(t *testing.T) {
|
||||||
|
v := selfcontract.CompetenceAssessment{ID: "a", PrincipalID: "p", SubjectRef: selfcontract.SemanticReference{OwnerNamespace: "capability", SemanticKind: "skill", StableID: "s"}, Revision: 1, ConfidenceMillis: 1000, AssessedAt: 1}
|
||||||
|
if domain.ValidateCompetence(v) == nil {
|
||||||
|
t.Fatal("unsupported competence accepted")
|
||||||
|
}
|
||||||
|
v.EvidenceRefs = []selfcontract.SemanticReference{{OwnerNamespace: "epistemics", SemanticKind: "evaluation", StableID: "e"}}
|
||||||
|
if err := domain.ValidateCompetence(v); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user