40 lines
2.8 KiB
Markdown
40 lines
2.8 KiB
Markdown
# Property-Based Tests (FsCheck)
|
|
|
|
## Module
|
|
Policy
|
|
|
|
## Status
|
|
IMPLEMENTED
|
|
|
|
## Description
|
|
Property-based tests using FsCheck for canonical JSON determinism, SBOM/VEX ordering invariants, floating-point stability, digest computation determinism, smart-diff properties, and VEX lattice merge commutativity.
|
|
|
|
## Implementation Details
|
|
- **DecayPropertyTests**: `src/Policy/__Tests/StellaOps.Policy.Determinization.Tests/PropertyTests/DecayPropertyTests.cs`
|
|
- FsCheck properties for DecayedConfidenceCalculator: monotonicity, bounds, floor enforcement, half-life correctness
|
|
- Verifies: decay factor always in [0, 1], result always >= floor, older observations have lower scores
|
|
- **DeterminismPropertyTests**: `src/Policy/__Tests/StellaOps.Policy.Determinization.Tests/PropertyTests/DeterminismPropertyTests.cs`
|
|
- FsCheck properties for deterministic evaluation: same inputs produce same outputs
|
|
- Verifies: ObservationDecay CalculateDecay is deterministic, content-addressed ID generation is stable
|
|
- **ObservationDecayTests**: `src/Policy/__Tests/StellaOps.Policy.Determinization.Tests/Models/ObservationDecayTests.cs`
|
|
- Unit tests for ObservationDecay model: Create, Fresh, WithSettings, CalculateDecay, CheckIsStale
|
|
- **DeterminizationResultTests**: `src/Policy/__Tests/StellaOps.Policy.Determinization.Tests/Models/DeterminizationResultTests.cs`
|
|
- Unit tests for DeterminizationResult model
|
|
- **DecayedConfidenceCalculatorTests**: `src/Policy/__Tests/StellaOps.Policy.Determinization.Tests/DecayedConfidenceCalculatorTests.cs`
|
|
- Unit tests for DecayedConfidenceCalculator: boundary values, half-life verification, floor enforcement
|
|
- **DeterminizationGateTests**: `src/Policy/__Tests/StellaOps.Policy.Engine.Tests/Gates/Determinization/DeterminizationGateTests.cs`
|
|
- Integration tests for DeterminizationGate in gate pipeline
|
|
- **DeterminizationPolicyTests**: `src/Policy/__Tests/StellaOps.Policy.Engine.Tests/Policies/DeterminizationPolicyTests.cs`
|
|
- Policy-level tests for determinization enforcement
|
|
|
|
## E2E Test Plan
|
|
- [ ] Run DecayPropertyTests; verify all FsCheck properties pass (monotonicity, bounds, floor, half-life)
|
|
- [ ] Run DeterminismPropertyTests; verify deterministic evaluation property holds for 1000+ random inputs
|
|
- [ ] Verify DecayedConfidenceCalculator boundary: baseConfidence=0.0 always returns floor
|
|
- [ ] Verify DecayedConfidenceCalculator boundary: ageDays=0 always returns baseConfidence
|
|
- [ ] Verify ObservationDecay.Fresh(now).CheckIsStale(now) == false
|
|
- [ ] Verify decay monotonicity: older age always produces lower or equal score
|
|
- [ ] Verify content-addressed ID generation produces same ID for identical inputs (1000 iterations)
|
|
- [ ] Verify DeterminizationGate integration with DecayedConfidenceCalculator in gate pipeline
|
|
- [ ] Verify all test suites pass in CI with frozen test clock (no time-dependent flakiness)
|