Files
git.stella-ops.org/docs/features/checked/policy/unknowns-grey-queue-with-conflict-detection-and-reanalysis-fingerprints.md
2026-02-14 09:11:48 +02:00

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