45 lines
2.8 KiB
Markdown
45 lines
2.8 KiB
Markdown
# Unknowns Grey Queue with Conflict Detection and Reanalysis Fingerprints
|
|
|
|
## Module
|
|
Policy
|
|
|
|
## Status
|
|
IMPLEMENTED
|
|
|
|
## Description
|
|
Deterministic reanalysis fingerprints, conflict detection routing (VEX/reachability contradiction, static/runtime contradiction, VEX status conflict), grey queue with Disputed state and manual adjudication gates, versioned signal event handling.
|
|
|
|
## Implementation Details
|
|
- **UnknownRanker**: `src/Policy/__Libraries/StellaOps.Policy.Unknowns/Services/UnknownRanker.cs`
|
|
- Reason codes for conflict detection: VexConflict (conflicting VEX claims), Reachability (unknown reachability), Identity (unknown identity), Provenance (unknown provenance)
|
|
- Uncertainty factor: Conflicting signals +0.20 to uncertainty score
|
|
- Stale evidence +0.10 to uncertainty score
|
|
- **K4Lattice conflict detection**: `src/Policy/__Libraries/StellaOps.Policy/TrustLattice/K4Lattice.cs`
|
|
- K4Value.Conflict (value=3) when True join False occurs
|
|
- Conflict detection in lattice evaluation routes to grey queue
|
|
- **TrustLatticeEngine**: `src/Policy/__Libraries/StellaOps.Policy/TrustLattice/TrustLatticeEngine.cs`
|
|
- Pipeline detects conflicts during VEX normalization and claim ingestion
|
|
- Conflicting claims flagged for manual adjudication
|
|
- **ClaimScoreMerger**: `src/Policy/__Libraries/StellaOps.Policy/TrustLattice/ClaimScoreMerger.cs`
|
|
- ConflictPenalizer applies 0.25 penalty to conflicting claims
|
|
- RequiresReplayProof flag set when conflicts detected
|
|
- Deterministic merge ordering ensures reproducible conflict resolution
|
|
- **DeterminizationGate**: `src/Policy/StellaOps.Policy.Engine/Gates/Determinization/DeterminizationGate.cs`
|
|
- Gates using DecayedConfidenceCalculator for stale signal detection
|
|
- Reanalysis triggering based on confidence decay below threshold
|
|
- **ObservationDecay**: `src/Policy/__Libraries/StellaOps.Policy.Determinization/Models/ObservationDecay.cs`
|
|
- Reanalysis fingerprint: ObservedAt + RefreshedAt + HalfLifeDays + DecayedMultiplier
|
|
- CheckIsStale(now) triggers reanalysis when decay below StalenessThreshold
|
|
|
|
## E2E Test Plan
|
|
- [ ] Ingest conflicting VEX claims (True + False for same subject); verify K4 Conflict state detected
|
|
- [ ] Verify conflicting claims route to grey queue with Disputed state
|
|
- [ ] Verify ConflictPenalizer applies 0.25 penalty to conflicting claims
|
|
- [ ] Verify RequiresReplayProof=true when conflicts detected
|
|
- [ ] Verify UnknownRanker adds +0.20 uncertainty for VexConflict reason code
|
|
- [ ] Detect stale reachability evidence; verify reanalysis triggered (ObservationDecay.CheckIsStale)
|
|
- [ ] Verify reanalysis fingerprint is deterministic: same inputs produce same fingerprint
|
|
- [ ] Verify versioned signal events: newer signal supersedes older signal
|
|
- [ ] Verify manual adjudication gate prevents automated resolution of Disputed unknowns
|
|
- [ ] Verify stale evidence adds +0.10 to uncertainty in UnknownRanker
|