Log fleet_k_q48/fleet_conserved; K holds exactly, 775/775 ticks (FABRIC-3.md §XVIII)
Build / build-amd64-iso (push) Waiting to run
Build / build-aarch64-iso (push) Waiting to run
Build / build-riscv64-img (push) Waiting to run

doe_log.c's per-heartbeat-tick CSV gains two columns: fleet_k_q48
(vm_physics_fleet_heat_sum() over ALL live VMs -- the genuine fleet-wide
conservation invariant K, not reconstructable from the 3 named-Tripod-
member heat columns already logged, which omit every identity VM's own
heat) and fleet_conserved (vm_physics_conserved() as 0/1). Requested
explicitly after the first heartbeat-telemetry analysis pass
(analysis-20260912/) omitted K entirely.

Kernel rebuilt on all three architectures, full 3x9x3 campaign rerun
(results-20260912-with-k/). K = 1.0000000000 (Q48.16 raw 65536) on every
one of 775 heartbeat-tick observations, sd(K) = 0, 100% fleet_conserved,
across amd64/aarch64/riscv64, nine identities, three replicates -- zero
deviation. Also a free regression check on both recent Stadium fixes
(§XVI/§XVII): neither disturbed the reservoir-transfer accounting K
depends on.

Found and fixed a tooling wrinkle along the way: fleet_conserved, being
the CSV row's very last field with nothing after it to bound a regex
match, can have a resumed trial digit merge into it with zero separator
on the wire -- combine.py now derives it from fleet_k_q48 directly (same
epsilon vm_physics_conserved() uses) instead of trusting the raw field.
fleet_k_q48 itself is unaffected either way.

Full analysis, discussion, and light/dark SVG->PDF figures written up as
a proper LaTeX report (report-20260912/report/std79_doe_report.pdf),
following experiments/bare_metal/analysis/report/bare_metal_doe_report.tex's
established style -- supersedes analysis-20260912/'s markdown-only first
pass as the primary deliverable for this dataset (kept, not discarded).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EXieurDfDSsDFdnSyusuWo
This commit is contained in:
Robert Allan James
2026-09-12 13:25:09 -04:00
co-authored by Claude Sonnet 5
parent 6573a6d1d5
commit 66ba21adb4
88 changed files with 82210 additions and 788 deletions
+36
View File
@@ -2656,3 +2656,39 @@ times in each log. **81/81 trials correct, 0 mismatches** -- both known Stadium
O(ncells) scan and this section's donor floor) are now closed, verified together on one clean
campaign rerun.
## XVIII. The fleet conservation invariant K, continuously verified (2026-09-12)
Following §XVI/§XVII's fixes and the `HB-ON`/`HB-OFF`-instrumented heartbeat/physics telemetry
campaign (`experiments/std79-doe/results-20260912-with-heartbeat-csv/`,
`experiments/std79-doe/analysis-20260912/`), a further request asked specifically for the fleet
conservation invariant `K` -- `vm_physics_fleet_heat_sum()` over ALL live VMs, which the
Stadium/physics runtime's reservoir-transfer accounting is designed to hold exactly at
`Q48_ONE`. The existing per-tick CSV logged only the three named Tripod members' (Hera, Hermes,
Artemis) *individual* heat, not the fleet-wide sum -- insufficient to reconstruct `K`, since it
omits every identity VM's own heat contribution.
**Fix (feature addition, not a defect):** `doe_log.c`'s per-tick CSV gained two columns,
`fleet_k_q48` (`vm_physics_fleet_heat_sum()`) and `fleet_conserved`
(`vm_physics_conserved()` as 0/1), growing the row from 18 to 20 columns. Kernel rebuilt and
the full 3x9x3 campaign rerun on all three architectures
(`experiments/std79-doe/results-20260912-with-k/`).
**Result: K = 1.0000000000 (raw Q48.16 value 65536) on every one of 775 heartbeat-tick
observations, `sd(K) = 0`, 100% `fleet_conserved`, across all three architectures, nine
identities, and three replicates -- zero deviation.** Full analysis, discussion, and figures in
`experiments/std79-doe/report-20260912/report/std79_doe_report.pdf`, a LaTeX report following
`experiments/bare_metal/analysis/report/bare_metal_doe_report.tex`'s established style
(superseding `analysis-20260912/`'s markdown-only first pass, which never captured K at all).
This continuous, per-tick verification -- not just a boot-time self-test -- is also, incidentally,
a live regression check confirming neither §XVI's nor §XVII's Stadium fix introduced any heat
leak or double-count.
One correlation-tooling wrinkle found and fixed along the way: `fleet_conserved`, being
`doe_log_tick_row()`'s very last printed CSV field with nothing after it in the row to bound a
regex match against, can have a resumed trial digit merge into it with zero separator on the
wire (same interleaving effect as §XVII's write-up, just landing on a different field this time)
-- `combine.py` now derives `fleet_conserved` from `fleet_k_q48` directly (same epsilon
`vm_physics_conserved()` uses) rather than trusting the raw field. `fleet_k_q48` itself is
unaffected either way, since the K result does not depend on trial attribution being correct at
all.