docs: RELEASES.md entry for 8.0.17 (canonical count recovery + dead-machinery sweep)

This commit is contained in:
David Snelling 2026-07-08 15:49:19 -07:00
parent 352e2da88f
commit 6b8b9cba18

View file

@ -10,6 +10,29 @@ Full auto-generated changelog: `CHANGELOG.md` · Releases: https://github.com/so
--- ---
## v8.0.17 — 2026-07-08 (count recovery scans the real layout · ~1,100 lines of dead 7.x machinery removed)
A cleanup of the vestigial 7.x "hnsw sharding" machinery that turned up two real fixes.
**1 — Count recovery now scans the layout the database actually uses.** When `counts.json` is
lost or corrupted (container restarts, partial copies), the recovery scan rebuilt the entity/
relationship counters by counting files in `entities/*/hnsw/` — directories the 8.0 write path
never populates — so an established store recovered to **zero counts** on real data: wrong
`getNounCount()`/stats, a "New installation"-style boot log, and a mis-sized rebuild-strategy
decision at open. The scan now counts the canonical `entities/<kind>/<shard>/<id>/` tree.
Regression-tested: delete `counts.json` from a populated store → reopen → exact counts.
**2 — A latent init-time deadlock removed.** The recovery scan's type-distribution sampler called
a guarded accessor (`getNounMetadata``ensureInitialized`) from **inside** `init()`, which
re-enters `init()` and hangs the open. It was unreachable before only because the old scan never
found anything to sample; the fix reads the sampled metadata files directly.
**3 — The dead machinery itself is gone (1,138 lines).** Twenty-three methods with zero callers:
the 7.x hnsw-layout entity/edge CRUD, the sharding-depth prober + depth-migration engine, and an
orphaned streaming paginator. Verified by reachability analysis before deletion; no public API
touched; the full suite is green. New stores no longer carry the always-empty legacy directories'
scan cost, and the boot log keeps the truthful new-vs-established wording from v8.0.13.
## v8.0.16 — 2026-07-08 (concurrency fast-follow: atomic `ifAbsent`/`upsert` + exact blob reference counts) ## v8.0.16 — 2026-07-08 (concurrency fast-follow: atomic `ifAbsent`/`upsert` + exact blob reference counts)
Closes the two remaining check-then-act races found in the sweep that followed v8.0.15's CAS fix Closes the two remaining check-then-act races found in the sweep that followed v8.0.15's CAS fix