3.2 KiB
3.2 KiB
Ledger Projections
Module
Findings
Status
PARTIALLY_IMPLEMENTED
Description
Projection worker that materializes event streams into queryable read models.
Implementation Details
- Ledger Projection Worker:
src/Findings/StellaOps.Findings.Ledger/Infrastructure/Projection/LedgerProjectionWorker.cs-- background worker that consumes ledger event streams and materializes them into queryable projection read models. - Ledger Projection Reducer:
src/Findings/StellaOps.Findings.Ledger/Services/LedgerProjectionReducer.cs-- reduces event sequences into projection state, applying each event to build the current finding state from its event history. - Projection Models:
src/Findings/StellaOps.Findings.Ledger/Domain/ProjectionModels.cs-- read-side projection models materialized from events (finding state, VEX status, scoring state). - Projection Hashing:
src/Findings/StellaOps.Findings.Ledger/Hashing/ProjectionHashing.cs-- computes deterministic hashes of projection state for consistency verification between replays. - Finding Projection Repository Interface:
src/Findings/StellaOps.Findings.Ledger/Infrastructure/IFindingProjectionRepository.cs-- persistence contract for materialized projections. - Postgres Finding Projection Repository:
src/Findings/StellaOps.Findings.Ledger/Infrastructure/Postgres/PostgresFindingProjectionRepository.cs-- PostgreSQL persistence for projection read models. - Tests:
src/Findings/__Tests/StellaOps.Findings.Ledger.Tests/LedgerProjectionReducerTests.cs,src/Findings/StellaOps.Findings.Ledger.Tests/ProjectionHashingTests.cs
E2E Test Plan
- Submit a sequence of finding events (create, update VEX, add attestation) and verify the projection worker materializes the final finding state with correct VEX status and attestation references
- Verify projection consistency: replay the same event sequence twice and confirm the projection hashes match (deterministic projection)
- Verify projection catch-up: stop the projection worker, submit events, restart the worker, and confirm it processes all missed events and reaches the correct state
- Verify the projection reducer correctly handles out-of-order event delivery by ordering events by sequence number before applying
- Query the materialized projection via the finding query endpoints and verify the response matches the expected state from the event history
Verification
- Run:
docs/qa/feature-checks/runs/findings/ledger-projections/run-001/ - Date (UTC): 2026-02-11
- Verdict:
not_implemented
Missing / Mismatched Behavior
- The feature claim for out-of-order event handling is not satisfied in current runtime flow.
LedgerProjectionWorkerapplies events in received batch order without sequence reordering before reduction (src/Findings/StellaOps.Findings.Ledger/Infrastructure/Projection/LedgerProjectionWorker.cs).LedgerProjectionReducerreduces one event at a time and does not perform ordering itself (src/Findings/StellaOps.Findings.Ledger/Services/LedgerProjectionReducer.cs).- Existing determinism tests include an ordering-sensitive path, reinforcing that ordering is caller-controlled rather than runtime-enforced for projection catch-up/out-of-order handling.