- condenser.rs: add recently_freed tombstone set (FREED_RECENCY_NS=5s).
unregister() stamps freed addresses; scan_and_compress() prunes stale
tombstones and skips any address within the recency window. Closes the
secondary address-reuse race: free(X) processed β malloc(X) re-registers
X β scan now skips X for 5s before treating it as a fresh allocation.
- membrane.rs: flip PIPELINE from test_mode:true β test_mode:false.
72h VPS stability check passed (no SIGBUS/SIGSEGV). Three-layer guard:
(1) 64K ring + deferred scan (#260) minimises unprocessed-free window;
(2) 60s burst gate blocks scan during startup coldload (original crash
window); (3) recently_freed tombstone closes the reuse race.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Condensate v2: Full Rust conversion β 12 modules, 105 tests, zero Python inflationβ
All four Condensate layers now in Rust:
Membrane β intercepts malloc/free system-wide (LD_PRELOAD)
Graph β learns causal access topology
Predictor β predicts next access from learned patterns
Condenser β compresses idle regions, pre-promotes on prediction
17 tests pass. Raw input, no classification β Law 7 for memory.
The substrate learns allocation patterns from pure observation.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>