docs: RELEASES.md entry for 8.2.1 (transact forward-ref parity fix)

This commit is contained in:
David Snelling 2026-07-10 18:06:37 -07:00
parent a175406497
commit 708978210a

View file

@ -10,6 +10,27 @@ Full auto-generated changelog: `CHANGELOG.md` · Releases: https://github.com/so
---
## v8.2.1 — 2026-07-11 (transact forward references work on the native accelerator)
Parity fix. `transact()` has always promised atomic forward references — `add` an entity and
`relate` to it in one batch — but the transaction planner resolved relationship endpoint ids at
**plan** time, before the batch's adds had applied. Asking the id mapper about an entity that
doesn't exist yet made the accelerator's (correctly strict) native mapper throw in
`EntityIdMapper.getOrAssign`, so `transact([{op:'add', id:X}, {op:'relate', to:X}])` failed on
native deployments while the permissive JS mapper masked the bug — and silently leaked an id
assignment whenever a batch was later rejected by a commit precondition.
Endpoint resolution is now **lazy** — evaluated when the graph operation executes inside the
commit, after the batch's adds have applied (the same lazy pattern the operation's generation
stamp already used). Fixed across all transact-planned graph operations: relate (including the
bidirectional reverse edge), remove's relationship cascade, and unrelate. Single-operation writes
are unchanged. Also fixed as a byproduct: a rejected batch no longer pollutes the id mapper.
Regression suite covers the exact reported shape, both-endpoints-in-batch, bidirectional,
add+relate+remove in one batch, and the mapper-cleanliness proof on rejected batches
(`tests/integration/transact-forward-ref-graph.test.ts`). No API changes; no accelerator version
pairing required.
## v8.2.0 — 2026-07-10 (temporal VFS — file content joins the immutability model)
Time travel now covers Virtual Filesystem **content**. Previously the temporal model had a hole