From 87857eb44f8b902c241cbf6b718dc3795ed52206 Mon Sep 17 00:00:00 2001 From: Vuong Hoang Date: Fri, 17 Jul 2026 18:47:56 -0700 Subject: [PATCH] memory: #368 enforcement read complete (3 findings) + channel 2 closed Read-path conformant (conjunctive-per-element re-verified). 3 consumer- side findings sent to WT: F1 INV-368-10 fail-open (empty-scope=match-all), F2 backfill scan not snapshot-stable (offset/updated_at skip risk -> amnesia), F3 sentinel needs valid embedding. All WT-side backfill/guard adjustments, not consumer reworks. Channel 2 closed clean; contract rev 1.2. --- persistent-memory.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/persistent-memory.md b/persistent-memory.md index be96cdf..8ca781c 100644 --- a/persistent-memory.md +++ b/persistent-memory.md @@ -146,6 +146,18 @@ server-side stores; ANY server-side hit = cross-plane bug, no benign reading) st **ETA (WT): rev 1.2 amended contract reaches us TODAY 2026-07-18 for the consumer-side enforcement read; ship-ready LIKELY 2026-07-19; our integration risk LOW** (born-fresh store won't exercise the backfill machinery, which is the bulk of the impl). ratatoskr is the enforcement half; INV-368-9 blocks WT preflight. +**CHANNEL 2 CLOSED CLEAN + ENFORCEMENT READ DONE (2026-07-18):** marker routed ONLY to our store, zero in every +foundational store → current-b125 write path VERIFIED correct; the contamination was old-code (saga-v1, pre-#211) +seeding + a b125 recited-content re-promotion feedback loop (→ WT #369). Contract FINAL: `Worldtree/docs/contracts/ +issues/368.contract.md` rev 1.2 (cda308c). **Consumer-side enforcement read complete — read-path CONFORMANT +(conjunctive-per-element re-verified); 3 findings sent to WT (thread 01KXSBY3A8):** F1[HIGH] INV-368-10 can fail-OPEN +at our store — our empty-scope = MATCH-ALL, so the guard's "drop end_user element" must NOT reach us as an empty +filter (else total bleed); fix = don't-call/never-match. F2[HIGH] backfill scan NOT snapshot-stable — our scan is +offset-over-updated_at (chunk_id NOT sortable), and re-upserts advance updated_at, so multi-page paging under +concurrent mutation can SKIP chunks → un-stamped → post-flip amnesia (INV-368-3 failure); fix = whole-corpus +single-page scan (no consumer change) OR add chunk_id sort (consumer change). F3[MED] sentinel needs a valid 1024-dim +embedding or our vec0 upsert raises → backfill never completes. All 3 are WT-side backfill/guard adjustments, NOT +consumer reworks — the "zero consumer changes" claim holds for reads, needs the qualifier for backfill/guard. **✅ Cross-session name-recall arc COMPLETE + SHIPPED (v0.20.11→v0.20.15, pushed).** person-prime `scan` verb + `mark_superseded` verb both shipped, deployed to :8392, and live-verified; **WT #364 closed