Source identity
| Field | Recorded value |
|---|---|
| Source type | GitHub source |
| Original record | Janady13/missionmatch / internal/modules/staffing/types.go |
| Date | Not specified in source |
| Repository | Janady13/missionmatch |
| Revision | 720d47fae476b0d38477ae4401697d372b1ea2bc |
| Branch | feature/opportunity-to-outcome |
| Path or archive member | internal/modules/staffing/types.go |
| Original SHA-256 | 5c10dd86f90d6c35988a9f6f9e562b36219b4bc010813d3242d1e4d5cbc57eab |
| Git blob SHA | eda71b08238a9fe3c8e1f050dd0a0831eb2632aa |
| Reading-copy SHA-256 | 5c10dd86f90d6c35988a9f6f9e562b36219b4bc010813d3242d1e4d5cbc57eab |
Every recorded occurrence
These 24 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/staffing/types.go | feature/opportunity-to-outcome | 720d47fae476b0d38477ae4401697d372b1ea2bc | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | per-tenant-routing | 9bde0f9a74b89d01980fa658e5253acda7528d0c | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | collision-deconfliction | 4ee5a09972608ed89f8377c6665542d5f450f0a6 | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | ws6-retrieval | 6c56e29231ec05735927fa265c97d517499dfeaf | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | m5-price-to-win | 41000ad30fff4129fdaf5ec84e15ba14c27d4890 | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | ws1-ontology-sync | b596f449a32a1016fbd403c36505cc00a1ac9ee6 | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | master | 1e9249840a4302ec82e123b9c9cb6f75badea3e4 | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | ws8-teaching-loop | c823f0fb6bb2aba0f39001eb6de96f4000d9321f | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | w3-ai-staffing-recommendations | 43d56387270ef4da4cabd794d97ca6a49909bc7d | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | mag-substrate | b82c7100a492dec67dfd1eda6b3f53def859be35 | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | ws3-clearance | 4b8e7ce594c068621867f9c9deed0ec64ae6c553 | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | phase2-eval-fairness | d361af254701975fe239927656ababb56374655e | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | time-to-fill-survival | b66e1e505863d4f17741a4b9ede73509e45bd6c6 | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | graphrag-foundation | b0ddeb9f633fd138d09309d1a17b7d13bc3a67f7 | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | deploy-and-ops | bdacd9d0b4d5998d25fc74bf4007f4c3ec538c7a | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | ws9-bench-ingestion | f585a9ef32fa554663ce1fba9a414a54b6e49cf0 | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | ws2-alias-relationship | e4dada4601c6eb101830f9d223a9655dfa120616 | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | presentation-readiness | eb574acaa29d71ce4d0f852572e87c275c79fdb7 | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | vendor-intelligence | fe9796a19c261951d3f2565206c0c1b5ac294465 | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | ws7-federal-signal | 6a9f6ce9cfb13345ffb47770d4960e7c2d9c17c2 | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | ai-brain-live | aac32fc49c878cc5bca099459307611562d0bac1 | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | phase2-connectors | e038d4c687aec16f8bd9bc4d907eea14d91f8704 | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | feature/aioe-upgrade | 2178e7298d0e5d9af83afa12402fd587f0ba6ed8 | Open original |
| Janady13/missionmatch / internal/modules/staffing/types.go | capture-readiness | bae6af7cb2997e819174a9e9cfff5e16067a1975 | Open original |
Recovered source transcript
Download complete source text ↓121 lines · 5.5 KB
package staffing
import (
"github.com/shopspring/decimal"
"github.com/missionworkforce/missionmatch/internal/modules/matching/engine"
)
// Action is the recommended staffing action. team is reserved for a future GraphRAG teaming build and is
// never produced in v1.
type Action string
const (
ActionAssign Action = "assign"
ActionReassign Action = "reassign"
ActionReskill Action = "reskill"
ActionSource Action = "source"
ActionTeam Action = "team" // reserved, not implemented in v1
)
// RationaleSource records whether the rationale prose was confirmed by the faithfulness gate (ai_faithful)
// or fell back to the deterministic template (deterministic).
type RationaleSource string
const (
RationaleAIFaithful RationaleSource = "ai_faithful"
RationaleDeterministic RationaleSource = "deterministic"
)
// View is the kind of recommendation run.
type View string
const (
ViewGap View = "gap"
ViewPortfolio View = "portfolio"
ViewProactive View = "proactive"
)
// ReskillFact is the adjacency evidence for a reskill recommendation: the candidate holds HeldSkill, the
// requirement needs MissingSkill, and the two are adjacent at cosine distance Distance.
type ReskillFact struct {
HeldSkill string `json:"held_skill"`
MissingSkill string `json:"missing_skill"`
Distance decimal.Decimal `json:"distance"`
}
// ReassignEvidence is the evidence for a reassign recommendation: the candidate is currently committed to
// FromRequirementID and the target gap is higher priority by PriorityDelta.
type ReassignEvidence struct {
FromRequirementID string `json:"from_requirement_id"`
PriorityDelta decimal.Decimal `json:"priority_delta"`
}
// Counterfactual is the per assignment explanation for a portfolio allocation, computed from the optimal
// matching without exposing solver internals: why this candidate landed here and what the next best uses
// were. The deltas are reported in the scaled integer objective units.
type Counterfactual struct {
AssignedTotal string `json:"assigned_total"` // the assigned candidate engine total for this requirement
CandidateNextRequirement string `json:"candidate_next_requirement,omitempty"` // the candidate's next best requirement
CandidateValueDelta *int64 `json:"candidate_value_delta,omitempty"` // scaled value lost by not placing them on their next best requirement
RequirementNextCandidate string `json:"requirement_next_candidate,omitempty"` // the requirement's next best candidate if this one were removed
RequirementValueDelta *int64 `json:"requirement_value_delta,omitempty"` // scaled value drop to that next best candidate
}
// TriggerChange records what changed to raise a proactive watch alert.
type TriggerChange struct {
Kind string `json:"kind"` // availability, certification, clearance, new_opportunity
DetectedAt string `json:"detected_at,omitempty"` // RFC3339, the change observation time
}
// Evidence is the structured justification stored on a recommendation (jsonb). Only the fields relevant to
// the action are populated; the rest are omitted.
type Evidence struct {
EngineTotal string `json:"engine_total,omitempty"`
Band string `json:"band,omitempty"`
Reskill *ReskillFact `json:"reskill,omitempty"`
Reassign *ReassignEvidence `json:"reassign,omitempty"`
Counterfactual *Counterfactual `json:"counterfactual,omitempty"`
OpenSlots *int `json:"open_slots,omitempty"`
Trigger *TriggerChange `json:"trigger,omitempty"`
// FaithFallbackReason records WHY the faithfulness gate did not confirm the prose (could_not_confirm,
// plane_timeout, circuit_open, generation_disabled). It is for narration tuning and is NEVER placed in
// an audit payload.
FaithFallbackReason string `json:"faith_fallback_reason,omitempty"`
}
// ScoredCandidate is one candidate already scored against a requirement, with the precomputed inputs the
// pure classifier needs. The service builds these from the frozen engine result and the database
// (commitment, provenance, completeness, adjacency); the classifier is pure.
type ScoredCandidate struct {
CandidateID string
Available bool
Total decimal.Decimal
Band engine.Band
ClearanceSatisfied bool // the engine clearance sub score is full, the clearance gate is met
Provenance string // clearance provenance code, drives confidence
Completeness decimal.Decimal // profile completeness in [0,1], drives confidence
CommittedRequirementID string // "" when uncommitted; else the requirement the candidate is committed to
CommittedPriority decimal.Decimal // the priority of the committed requirement, for the reassign delta
Reskill *ReskillFact // non nil when a reskill path exists (an adjacent held skill for a missing one)
}
// GapContext is the gap being filled: the requirement, how many slots are open, and its priority.
type GapContext struct {
RequirementID string
OpenSlots int
Priority decimal.Decimal
}
// Recommendation is one classified, ranked, confidence scored recommended action (pure, no DB identity
// yet). The service persists it as a staffing_recommendations row.
type Recommendation struct {
RequirementID string
CandidateID string // "" for a source recommendation
Action Action
Rank int
Confidence decimal.Decimal
ValueScore *int64 // portfolio only
Evidence Evidence
}