diff --git a/persistent-memory.md b/persistent-memory.md index a1306ca..a30813e 100644 --- a/persistent-memory.md +++ b/persistent-memory.md @@ -65,8 +65,16 @@ cause is WORLDTREE-side ranking/hygiene (WT #364), NOT our wire. Full arc: `mark_superseded` wire shape; flagged bifrost-dev (dispatch doesn't hasattr-gate `mark_superseded`). **⚠️ live store BLOATED with ~9 "Name is Vuong" dup positives — GC after worldtree halts the retry.** - **NEW TASK (operator-sequenced): implement `mark_superseded` in the provider** so #364's retirement - lands durably (not just recency-evicts) + stops the 500/retry-storm. Un-defer in the contract + - advertise; confirm the exact wire shape with worldtree-dev first. + lands durably (not just recency-evicts). **Wire shape CONFIRMED (worldtree-dev, `bifrost_memory_store.py:293`):** + op `"mark_superseded"`, args `{"ids": [""], "superseded_by": ""}` — `ids` a LIST + (WT sends singletons, one call per retired chunk), NO `reason` field. It is the **SOLE** supersession + verb #364 uses (atomic_supersede = dream-lane, cap-gated separately; patch_many never for retirement) — + so build JUST `mark_superseded` + advertise it + live re-verify. Retry-storm ROOT-CAUSED WT-side (a + failed retirement-mark wrongly failed the whole promotion run → idle re-plan loop; WT's fix DEGRADES + mark-failures to an audited no-op → self-stops on the first post-deploy idle cycle, ETA ~20min from + 2026-07-16T20:30Z, no action our side). **GC the ~9 dup name-positives back to the pre-drive 10-chunk + state (via delete_many) AFTER the storm stops; then worldtree closes #364.** Once our `mark_superseded` + ships, a single name re-assertion self-heals retirement (incl. any residual dupes). - **R39 Phase-2 Arm-2 export** (brokkr-initiated): the 10-chunk contradiction specimen is frozen at `r39-frozen-specimen/sindra-10chunk-specimen.db` (gitignored, VACUUM INTO) — survives #364 reconciliation; export on brokkr's Phase-2 signal. Full R39/#364 arc: