September 17, 2026 at 12:00:00 AM UTC
atperson — deterministic e2e lifecycle harness
atpersontestingc23cpp23
Added tests/e2e_harness.cpp (issue #28): a deterministic end-to-end
scenario harness that exercises the real durable pipeline — ledger files,
graph snapshots, ingestion state — without network access. The only
fixture is the page fetcher; everything else is the production code path.
Scenarios:
- Multi-run catch-up — three scripted pages, one page per run, two restarts from disk; asserts resumed cursors, accumulated checkpoints, and the final snapshot.
- Crash recovery — a run dies between ledger commits and the snapshot save; the ledger is authoritative, and a replay rebuild recovers the full learned state.
- Transient failure — a transport throw leaves the persisted cursor and snapshot untouched; retry resumes from the checkpoint.
- Duplicate suppression — a replayed timeline is fully deduplicated by the ledger across restarts.
- Withdrawal flows — deleted-post and blocked-author withdrawals, rebuild, and a pinned invariant: WITHDRAWN is a committed outcome, so a withdrawn observation reappearing in the feed stays a duplicate and is never re-learned.
- Planning abstention — empty and unknown contexts abstain with the documented reasons on recovered state; learned contexts decide deterministically.
- Cross-run determinism — equivalent scenario runs produce byte-identical final learned state.
Both build configurations (network off/on) pass 33/33 tests. Commit
1eecf4e.
all entries