Releases: madeinoz67/go-rag
Release list
v0.3.3
Full Changelog: v0.3.2...v0.3.3
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
v0.3.1
v0.3.1 — Chunk change deltas on re-ingest (BL-010)
First Phase 2 bridge item: the MuninnDB bridge (and any WatchDocuments consumer) now gets incremental chunk-delta updates on document re-ingest instead of full re-processing.
New in v0.3.1
RE_INGESTED event (spec 043 / BL-010):
- A document re-ingest (via
Reprocess,ReprocessAll, or the watcher's MODIFIED path) now emits a singleRE_INGESTEDevent on theWatchDocumentsstream, carrying a per-chunk delta:ADDED/REMOVED/UNCHANGED. - The delta is computed by content identity (a new per-chunk
ContentHashsidecar = SHA-256 of the chunk's text), so a moved paragraph isUNCHANGEDand repeated text collapses correctly (multiset diff). RE_INGESTEDreplaces theINGESTED(new)+DELETED(old)pair a re-ingest previously surfaced (no double-counting).- The event carries an old→new chunk-ID map (
prev_chunk_idonUNCHANGED/REMOVEDdeltas), so consumers can remap stored references (no orphaned bookmarks).
Embed-skip (US2):
UNCHANGEDchunks whose embedding model hasn't changed skip the expensive Ollama embedding call — the oldPrefixEmbeddingis copied to the new chunk ID. A model change forces re-embedding (no stale vectors).- ACK budget verified: the diff computation is 13.7µs for a 50-chunk doc (730× under the <10ms budget).
v2 schema migration:
- Backfills
ContentHashon existing chunks (ExpectedVersion1→2). No new storage prefix; the field rides in the existingPrefixChunkJSON value.
Bridge docs:
- Upstream
#560(idempotent_id wiring) shipped by the MuninnDB maintainer;#556(UPSERT) now unblocked at the prerequisite level. - Phase 2 scoping notes recorded (BL-010/011/013 assessed against the codebase).
Security / quality
- 5-agent adversarial review of the implementation (concurrency, correctness, embed-skip safety, identity stability, event contract): no fatal flaws; all HIGH + MEDIUM findings fixed.
go test -race ./...full repo green;make lint0 issues.
Full Changelog: v0.3.0...v0.3.1
v0.3.0
v0.3.0 — Bridge Phase 1 complete
Completes Phase 1 of the go-rag × MuninnDB bridge: every chunk-retrieval and metadata primitive the bridge consumer needs is now on all four transports (gRPC / REST / MCP / CLI). With BL-005 and BL-006 landing here, all six Phase-1 items (BL-001…BL-006) are shipped.
New in v0.3.0
Chunk metadata — the last two Phase-1 items:
section_depth— the governing heading's level (1–6) onChunk+QueryHit; pairs with the existingsection_contextbreadcrumb so a consumer can reconstruct markdown markers without re-scanning the text (BL-005 / spec 041).extraction_quality+extraction_method— a per-page coverage-confidence signal (native / mixed / image + a 0–1 score) so consumers can gate promotion of sparse or image-only PDF extraction. Honest about the OCR limit: go-rag is pure-Go and does not OCR, so a scanned PDF with a text layer reads as native (BL-006 / spec 042).
WatchDocuments hardening (spec 040 follow-ups):
DELETEDevent now published fromPipeline.DeleteDoc— covers watcher-detected removals and reprocess in one chokepoint.DeleteDocguarded by the pipeline mutex — closes a resurrection TOCTOU (a racing embed write-back could re-create a deleted record) found by the adversarial concurrency audit.Bus.CloseonEngine.Close— clean subscriber teardown on shutdown; the handler's!ok"engine shutdown" branch is now real.stream.Senddecoupled fromctx.Done+ gRPC keepalive enforcement — a stalled-but-connected client can no longer wedge a handler or leak a subscriber.
Upstream
- MuninnDB
#560(idempotent_id wiring) shipped upstream;#556(UPSERT) is now unblocked at the prerequisite level — the proto comment is posted, awaiting maintainer response.
Full Changelog: v0.2.2...v0.3.0
v0.2.2
v0.2.1
v0.2.0
v0.1.5
v0.1.5 — fixes go-rag upgrade asset naming
The self-upgrade feature shipped in v0.1.4 was broken: it looked for underscore-named release assets (go-rag_v...) while the release pipeline publishes hyphens (go-rag-v...), so go-rag upgrade failed against real releases with a missing-checksum error. This is the first release where go-rag upgrade works end-to-end (verified against the live release).
Changed
go-rag upgrade: asset/checksum URLs now use hyphens (go-rag-{ver}-{goos}-{goarch}.tar.gz), matching.github/workflows/release.yml.- Removed the redundant
make releaseMakefile target —release.ymlis the canonical release pipeline.
Upgrade
From any v0.1.5+ build: go-rag upgrade (or go-rag upgrade --check to preview). Atomic self-replace with SHA-256 verification and a retained .prev (--rollback to revert).
Full changelog: v0.1.4...v0.1.5
v0.1.4
⚠️ Known issue — fixed in v0.1.5:go-rag upgradeis broken in v0.1.4 (asset-naming mismatch with the release pipeline). Use v0.1.5+ for the self-upgrade feature.
Full Changelog: v0.1.3...v0.1.4