← back to Unclaimed Property Platform
docs: ledger Cycle-10 record (reconciliation); TK-10097
d4ba8b0068e3fa08bcd15c333a5888aaa5c1d1fc · 2026-08-01 21:08:14 -0700 · Steve Abrams
Files touched
Diff
commit d4ba8b0068e3fa08bcd15c333a5888aaa5c1d1fc
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Sat Aug 1 21:08:14 2026 -0700
docs: ledger Cycle-10 record (reconciliation); TK-10097
---
docs/LOOP-LEDGER.md | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/docs/LOOP-LEDGER.md b/docs/LOOP-LEDGER.md
index 4ba7a36..21fd134 100644
--- a/docs/LOOP-LEDGER.md
+++ b/docs/LOOP-LEDGER.md
@@ -114,12 +114,18 @@ At-least-once delivery + bounded retry; transient fail -> pending(attempts++); e
loop). outbox_event gained attempts+last_error. `tests/test_cycle10_outbox_worker.py`.
Events are now WRITTEN (C8) *and* reliably DELIVERED (C9).
-## Cycle 10 — planned (DTD to select at next fire)
+## Cycle 10 — COMPLETE (commit edfce96; 11/11 suites green)
+**Landed:** feed-completeness reconciliation. FeedDefinition.expected_count (state control
+total); `_reconcile` compares parsed vs expected -> ok|short|over|unknown+delta; 'short' is the
+silent-truncation signal. Persisted on ingestion_batch (expected_count+reconciliation);
+`batch_reconciliation()` reads it. `tests/test_cycle11_reconciliation.py`.
+
+## Cycle 11 — planned (DTD to select at next fire)
- Double Metaphone phonetic upgrade (dedicated cycle: separate blocking key + feature, re-tune, re-verify).
-- Suppression feed adapter (batch state takedown file, format_name suppress_csv_v1) + latency metric.
-- Batch-retry for partial ingestion failure (resume from last-good offset).
+- Suppression feed adapter (batch state takedown file, format suppress_csv_v1) + latency metric.
- FastAPI reference: wire search_api.py to SearchService + OpenAPI (needs deps; verify in venv).
-- Reconciliation report: per-batch accepted vs state control-total (feed-completeness metric).
+- NOTE: cleanly-$0-verifiable veins thinning — remaining items increasingly need deps/infra
+ (FastAPI/Postgres) or a dedicated high-churn cycle (Double Metaphone).
- SQLite → Postgres persistence scaffold (thread-safe pool — enables the threaded server).
- Batch-retry for partial C1 failure (idempotent re-run from last-good offset).
- FastAPI reference: wire search_api.py to SearchService + OpenAPI (needs deps; verify in venv).
← edfce96 Cycle 10: feed-completeness reconciliation (catches silent t
·
back to Unclaimed Property Platform
·
Cycle 11 (DTD verdict C): packaging + consolidation, then wr 3532e9b →