diff --git a/FABRIC.md b/FABRIC.md index 6255426..08ca512 100644 --- a/FABRIC.md +++ b/FABRIC.md @@ -1621,11 +1621,18 @@ There is no renormalisation anywhere. `vm_physics_conserved()` tests a genuine i 1. **A documented leak** (`:240-244`). If a dying VM is itself the root, or its parent chain is broken, there is nowhere conservation-preserving to send the remainder and it is dropped. Both cases are guarded and described as "shouldn't happen," but the path exists. -2. **Truncation** (`:304-305`). The proportional fan-out computes + **Still open** — tracked as its own item in `FABRIC-2.md` §C as of the 2026-08-13 + investigation below. +2. ~~**Truncation** (`:304-305`). The proportional fan-out computes `(moved_total * heat) / others_total` per VM in integer arithmetic. The shares sum to *less than* `moved_total`. **Every multi-VM touch loses a little heat**, so the sum drifts downward monotonically. `VM_PHYSICS_EPSILON_Q48` is 3277 — 5% of `Q48_ONE` — so given - enough touches this would eventually trip. + enough touches this would eventually trip.~~ **WRONG, corrected 2026-08-13** (`FABRIC-2.md` + §B "Fleet heat leak," investigated when item 4.2 made this measurable) — the truncated + `share` is what actually moves on *both* sides of `vm_physics_transfer()`, so the fleet + sum cannot drift from this path; only path 1 above can. Left standing here per this + document's own rule (§25 commit discipline: findings are corrected in place, not + rewritten away) rather than deleted. #### What this means for the bound, and for the campaign @@ -1634,13 +1641,19 @@ two are unrelated, and §2 has been corrected accordingly. The bound is still ne finite state (§13) and because density requires a capacity to be dense within (§19.2). It also changes the reading of the Artemis campaign's K-invariance arm. That arm was not -measuring an identity. It was measuring a quantity that genuinely could drift, and which did -not drift far enough to trip a 5% epsilon over the run. That is a real result about the -system, not an artefact of the check. +measuring an identity in the trivial "cannot fail" sense the pre-correction text of this +section claimed. It was measuring a quantity that *could* genuinely drift via path 1 above +(the dying-VM-is-root/broken-chain case), and which did not drift, consistent with that path +being guarded off during the campaign. **Not**, as this section originally went on to claim, +because truncation (path 2) was silently eating into the margin — path 2 is now shown +(2026-08-13 correction above) to be incapable of moving the sum at all. -**Reported, not scheduled:** the truncation leak at `:304-305` is a live defect in a +~~**Reported, not scheduled:** the truncation leak at `:304-305` is a live defect in a conservation law the project makes claims about. It is small per touch and may be entirely -tolerable, but it is monotonic, and nobody has measured how far it drifts over a long run. +tolerable, but it is monotonic, and nobody has measured how far it drifts over a long run.~~ +**WRONG, corrected 2026-08-13** — see the strikethrough correction on path 2 above. Path 1 +(the dying-VM-is-root/broken-chain drop) is the only live defect; it is tracked in +`FABRIC-2.md` §C, not here, per this document's closure. ### 20.3 Nesting — §12 Q6 is less open than it looks