v0.3.2
v0.3.2 — Engine write-operation serialization + BL-010 polish
Continues the v0.3.x bridge alpha line. Two hardening changes that close the adversarial-review findings from BL-010 (v0.3.1) + a performance measurement.
New in v0.3.2
Engine write-operation serialization (spec 044):
- Per-document lock (
sync.Map[docID]*sync.Mutex): serializes same-docID operations so thereingestDocssuppression flag (FR-005) can't be consumed by the wrongDeleteDocduring a concurrent re-ingest. No more doubleDELETED+RE_INGESTEDevents on theWatchDocumentsstream. - Non-blocking queue push:
processFile's job-queue push is now aselect/default+ detached sender —processFilenever blocks on a full queue. This eliminates the forward-progress stall that defeated the broadopMuapproach, and strengthens Principle IV (the ACK path is unblocked even under sustained concurrent write load).
BL-010 polish (spec 043):
- Caption chunks now carry
ContentHash(the adversarial-review finding — caption chunks were missing it, defeating embed-skip for image docs). - The embedder's skip check now only dequeues when the vector is valid (no silent loss on malformed records).
- The SKIPPED-path silent drop is closed: a re-ingest that hits an early return (SKIPPED/UNSUPPORTED/ERROR) now emits
RE_INGESTEDwith all-REMOVED deltas instead of vanishing silently. - ACK budget verified: 13.7µs for a 50-chunk diff (730× under 10ms).
- UNCHANGED-ratio measured: 85% on a 20-chunk doc with one section edited (SC-001 target ≥80% met).
Security / quality
- 12-agent RedTeam ParallelAnalysis validated the per-document lock design before implementation.
go test -race ./...full repo green;make lint0 issues.
Full Changelog: v0.3.1...v0.3.2