Source identity
| Field | Recorded value |
|---|---|
| Source type | GitHub source |
| Original record | Janady13/missionmatch / internal/modules/matching/intelligence/intelligence_test.go |
| Date | Not specified in source |
| Repository | Janady13/missionmatch |
| Revision | 720d47fae476b0d38477ae4401697d372b1ea2bc |
| Branch | feature/opportunity-to-outcome |
| Path or archive member | internal/modules/matching/intelligence/intelligence_test.go |
| Original SHA-256 | 47224b8c7256c6b9c22fea0413d593c062df463bf3b4bc351a706cce34b84089 |
| Git blob SHA | e934688c531a1f0254c4838aaaae9ad9c1cc200d |
| Reading-copy SHA-256 | 47224b8c7256c6b9c22fea0413d593c062df463bf3b4bc351a706cce34b84089 |
Every recorded occurrence
These 17 records contain identical original source bytes. Their paths and revisions remain part of the archive.
| Original record | Branch or archive | Revision / identifier | Original location |
|---|---|---|---|
| Janady13/missionmatch / internal/modules/matching/intelligence/intelligence_test.go | feature/opportunity-to-outcome | 720d47fae476b0d38477ae4401697d372b1ea2bc | Open original |
| Janady13/missionmatch / internal/modules/matching/intelligence/intelligence_test.go | collision-deconfliction | 4ee5a09972608ed89f8377c6665542d5f450f0a6 | Open original |
| Janady13/missionmatch / internal/modules/matching/intelligence/intelligence_test.go | ws6-retrieval | 6c56e29231ec05735927fa265c97d517499dfeaf | Open original |
| Janady13/missionmatch / internal/modules/matching/intelligence/intelligence_test.go | m5-price-to-win | 41000ad30fff4129fdaf5ec84e15ba14c27d4890 | Open original |
| Janady13/missionmatch / internal/modules/matching/intelligence/intelligence_test.go | master | 1e9249840a4302ec82e123b9c9cb6f75badea3e4 | Open original |
| Janady13/missionmatch / internal/modules/matching/intelligence/intelligence_test.go | ws8-teaching-loop | c823f0fb6bb2aba0f39001eb6de96f4000d9321f | Open original |
| Janady13/missionmatch / internal/modules/matching/intelligence/intelligence_test.go | mag-substrate | b82c7100a492dec67dfd1eda6b3f53def859be35 | Open original |
| Janady13/missionmatch / internal/modules/matching/intelligence/intelligence_test.go | phase2-eval-fairness | d361af254701975fe239927656ababb56374655e | Open original |
| Janady13/missionmatch / internal/modules/matching/intelligence/intelligence_test.go | time-to-fill-survival | b66e1e505863d4f17741a4b9ede73509e45bd6c6 | Open original |
| Janady13/missionmatch / internal/modules/matching/intelligence/intelligence_test.go | graphrag-foundation | b0ddeb9f633fd138d09309d1a17b7d13bc3a67f7 | Open original |
| Janady13/missionmatch / internal/modules/matching/intelligence/intelligence_test.go | ws9-bench-ingestion | f585a9ef32fa554663ce1fba9a414a54b6e49cf0 | Open original |
| Janady13/missionmatch / internal/modules/matching/intelligence/intelligence_test.go | presentation-readiness | eb574acaa29d71ce4d0f852572e87c275c79fdb7 | Open original |
| Janady13/missionmatch / internal/modules/matching/intelligence/intelligence_test.go | vendor-intelligence | fe9796a19c261951d3f2565206c0c1b5ac294465 | Open original |
| Janady13/missionmatch / internal/modules/matching/intelligence/intelligence_test.go | ws7-federal-signal | 6a9f6ce9cfb13345ffb47770d4960e7c2d9c17c2 | Open original |
| Janady13/missionmatch / internal/modules/matching/intelligence/intelligence_test.go | phase2-connectors | e038d4c687aec16f8bd9bc4d907eea14d91f8704 | Open original |
| Janady13/missionmatch / internal/modules/matching/intelligence/intelligence_test.go | feature/aioe-upgrade | 2178e7298d0e5d9af83afa12402fd587f0ba6ed8 | Open original |
| Janady13/missionmatch / internal/modules/matching/intelligence/intelligence_test.go | capture-readiness | bae6af7cb2997e819174a9e9cfff5e16067a1975 | Open original |
Recovered source transcript
Download complete source text ↓201 lines · 6.9 KB
package intelligence
import (
"context"
"testing"
"time"
"github.com/missionworkforce/missionmatch/internal/modules/matching/engine"
)
// perfect candidate vs a Secret/DISA/5yr requirement => total 100, green.
func perfect() (engine.Candidate, engine.Requirement, engine.MatchResult) {
c := engine.Candidate{
ID: "c1",
Clearance: engine.Clearance{Level: engine.ClearanceTSSCI, Poly: engine.PolyFullScope, Status: engine.StatusActive},
Certifications: []string{"Security+"},
CustomerExperience: []string{"DISA"},
YearsExperience: 10,
Available: true,
}
r := engine.Requirement{
ID: "r1", RequiredLevel: engine.ClearanceSecret, CustomerAgency: "DISA",
RequiredCerts: []string{"Security+"}, RequiredYears: 5, KeyPersonnel: true,
}
return c, r, engine.ScoreCandidate(context.Background(), c, r, nil)
}
func TestReadinessMapsToMissionLanguage(t *testing.T) {
_, _, res := perfect()
mr := Readiness(res)
if mr.Status != "Mission Ready" || mr.StatusCode != "ready" || mr.Band != "green" {
t.Fatalf("expected Mission Ready/green, got %+v", mr)
}
if mr.Score != "100.00" {
t.Fatalf("score = %s, want 100.00", mr.Score)
}
if len(mr.Categories) != 6 {
t.Fatalf("expected 6 readiness categories, got %d", len(mr.Categories))
}
want := map[string]bool{
"Clearance Readiness": true, "Skills Readiness": true, "Certification Readiness": true,
"Customer Readiness": true, "Experience Readiness": true, "Availability Readiness": true,
}
for _, cat := range mr.Categories {
if !want[cat.Name] {
t.Errorf("unexpected category name %q", cat.Name)
}
if cat.State != "ready" {
t.Errorf("category %s state = %s, want ready", cat.Name, cat.State)
}
}
}
func TestReadinessStatesAcrossBands(t *testing.T) {
// Confidential candidate vs a Secret requirement => clearance 0 (gap), total 75.
// v1.4.0: the clearance gap cap fires (required level Secret >= ClearanceConfidential, clearance score 0).
// Band is Red ("recruiting"), not Yellow ("review"). Total remains 75.00 (cap lowers band only).
c := engine.Candidate{ID: "c", Clearance: engine.Clearance{Level: engine.ClearanceConfidential, Status: engine.StatusActive}, Available: true}
r := engine.Requirement{ID: "r", RequiredLevel: engine.ClearanceSecret}
mr := Readiness(engine.ScoreCandidate(context.Background(), c, r, nil))
if mr.StatusCode != "recruiting" {
t.Fatalf("expected recruiting (v1.4.0 clearance gap cap), got %s (score %s)", mr.StatusCode, mr.Score)
}
for _, cat := range mr.Categories {
if cat.Name == "Clearance Readiness" && cat.State != "gap" {
t.Fatalf("clearance should be a gap, got %s", cat.State)
}
}
}
func TestNextStepsByBand(t *testing.T) {
_, _, green := perfect()
if NextSteps(green)[0].Action != "Move to Candidate Slate" {
t.Fatalf("green first step wrong: %+v", NextSteps(green))
}
red := engine.ScoreCandidate(context.Background(),
engine.Candidate{ID: "c"},
engine.Requirement{ID: "r", RequiredLevel: engine.ClearanceTSSCI}, nil)
if NextSteps(red)[0].Action != "Recruit Additional Candidates" {
t.Fatalf("red first step wrong: %+v", NextSteps(red))
}
}
func TestBattleCardStrengthsAndGaps(t *testing.T) {
c, r, res := perfect()
bc := BattleCardFor(c, r, res)
hasStrength := func(sub string) bool {
for _, s := range bc.Strengths {
if s == sub {
return true
}
}
return false
}
if !hasStrength("TS/SCI Active") {
t.Fatalf("expected 'TS/SCI Active' strength, got %v", bc.Strengths)
}
if !hasStrength("DISA experience") || !hasStrength("Security+") {
t.Fatalf("expected DISA + Security+ strengths, got %v", bc.Strengths)
}
if len(bc.Gaps) != 0 {
t.Fatalf("perfect candidate should have no gaps, got %v", bc.Gaps)
}
// A candidate missing a mandatory skill should surface it as a gap.
c2 := engine.Candidate{ID: "c2", Clearance: engine.Clearance{Level: engine.ClearanceSecret, Status: engine.StatusActive}, Available: true}
r2 := engine.Requirement{ID: "r2", RequiredLevel: engine.ClearanceSecret,
RequiredSkills: []engine.RequiredSkill{{SkillID: "go", Name: "Go", Mandatory: true}}}
res2 := engine.ScoreCandidate(context.Background(), c2, r2, nil)
bc2 := BattleCardFor(c2, r2, res2)
if len(bc2.Gaps) == 0 {
t.Fatalf("expected a gap for the missing mandatory skill")
}
}
func TestClearanceIntelligence(t *testing.T) {
asOf := time.Date(2026, 6, 23, 0, 0, 0, 0, time.UTC)
granted := asOf.AddDate(-3, 0, 0) // 36 months ago
expires := asOf.AddDate(0, 1, 0) // not expired
ci := Clearance(ClearanceFacts{
Level: engine.ClearanceTSSCI, Poly: engine.PolyFullScope, Status: engine.StatusActive,
GrantedAt: &granted, ExpiresAt: &expires, CustomerAgencies: []string{"DISA"},
}, asOf)
if ci.Current != "TS/SCI" || !ci.SCIEligible || !ci.FullScopePoly || !ci.CIPolyEligible {
t.Fatalf("clearance intel wrong: %+v", ci)
}
if ci.Expired {
t.Fatal("should not be expired")
}
if ci.InvestigationAgeMonths == nil || *ci.InvestigationAgeMonths != 36 {
t.Fatalf("investigation age should be 36 months, got %v", ci.InvestigationAgeMonths)
}
if !ci.RecentClassifiedSupport {
t.Fatal("should have recent classified support (has DISA)")
}
// expired clearance
exp := asOf.AddDate(0, 0, -1)
ci2 := Clearance(ClearanceFacts{Level: engine.ClearanceSecret, Status: engine.StatusActive, ExpiresAt: &exp}, asOf)
if !ci2.Expired || ci2.SCIEligible {
t.Fatalf("expected expired + not SCI eligible, got %+v", ci2)
}
}
func TestContractReadinessAreasAndRisks(t *testing.T) {
c, r, res := perfect()
asOf := time.Date(2026, 6, 23, 0, 0, 0, 0, time.UTC)
soon := asOf.AddDate(0, 0, 30) // expires in 30 days => risk
cr := Contract(c, r, res, ClearanceFacts{ExpiresAt: &soon, CustomerAgencies: []string{"DISA"}}, asOf)
if len(cr.Areas) != 5 {
t.Fatalf("expected 5 contract areas, got %d", len(cr.Areas))
}
for _, a := range cr.Areas {
if !a.Met {
t.Fatalf("perfect candidate should meet area %q", a.Area)
}
}
foundExpiry := false
for _, risk := range cr.Risks {
if risk.Severity == "warning" && contains(risk.Message, "expires in 30 days") {
foundExpiry = true
}
}
if !foundExpiry {
t.Fatalf("expected a clearance-expiry risk, got %+v", cr.Risks)
}
}
func TestWinImpact(t *testing.T) {
c, r, res := perfect()
wi := Win(c, r, res)
if wi.LevelCode != "high" || wi.Level != "High Impact" {
t.Fatalf("perfect+keypersonnel should be High Impact, got %+v", wi)
}
if wi.StaffingStrength != "100.00" {
t.Fatalf("staffing strength = %s, want 100.00", wi.StaffingStrength)
}
hasReason := func(sub string) bool {
for _, rsn := range wi.Reasons {
if rsn == sub {
return true
}
}
return false
}
if !hasReason("Active TS/SCI") || !hasReason("Matches Key Personnel requirements") {
t.Fatalf("expected TS/SCI + Key Personnel reasons, got %v", wi.Reasons)
}
}
func contains(s, sub string) bool {
return len(s) >= len(sub) && (func() bool {
for i := 0; i+len(sub) <= len(s); i++ {
if s[i:i+len(sub)] == sub {
return true
}
}
return false
})()
}