29 lines
1.4 KiB
Go
29 lines
1.4 KiB
Go
package domain
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"git.cin.su/m/Assistant/contracts/work"
|
|
)
|
|
|
|
func TestGovernedSelfDevelopmentRequiresIndependentVerifierBeforeCanary(t *testing.T) {
|
|
gate := work.DevelopmentGate{ID: "dev-1", Stage: work.DevelopmentEvidenceCollected, EvidenceRefs: []string{"obs-1"}, ProposalRef: "proposal-1", TaskPacketRef: "task-1", WorktreeRef: "worktree-1", ProducerRunRefs: []work.AgentRunID{"producer"}, VerifierRunRefs: []work.AgentRunID{"verifier"}, VerificationEvidence: "verify-1", CanaryEvidence: "canary-1", PromotionRef: "promotion-1"}
|
|
for _, stage := range []work.DevelopmentStage{work.DevelopmentProposalCreated, work.DevelopmentTaskAdmitted, work.DevelopmentIsolated, work.DevelopmentVerified, work.DevelopmentCanary, work.DevelopmentPromoted} {
|
|
var err error
|
|
gate, err = AdvanceDevelopmentGate(gate, stage)
|
|
if err != nil {
|
|
t.Fatalf("stage %s: %v", stage, err)
|
|
}
|
|
}
|
|
if _, err := AdvanceDevelopmentGate(gate, work.DevelopmentRolledBack); err == nil {
|
|
t.Fatal("promoted gate must be terminal")
|
|
}
|
|
}
|
|
|
|
func TestGovernedSelfDevelopmentRejectsSameProducerAndVerifier(t *testing.T) {
|
|
gate := work.DevelopmentGate{ID: "dev-1", Stage: work.DevelopmentIsolated, EvidenceRefs: []string{"obs-1"}, ProducerRunRefs: []work.AgentRunID{"same"}, VerifierRunRefs: []work.AgentRunID{"same"}, VerificationEvidence: "verify-1"}
|
|
if _, err := AdvanceDevelopmentGate(gate, work.DevelopmentVerified); err == nil {
|
|
t.Fatal("same run cannot verify its own output")
|
|
}
|
|
}
|