# std79-doe LaTeX report: the fleet conservation invariant K **Read `report/std79_doe_report.pdf`** — this supersedes `../analysis-20260912/` (the first, markdown-only pass) as the primary deliverable for this dataset. That first pass was correctly flagged as inadequate: it never captured K (the fleet-wide execution-heat conservation invariant) at all, and presented results as a plain markdown page rather than in this project's established LaTeX report style (see `experiments/bare_metal/analysis/report/` for the precedent this follows — same document class, packages, colour palette, light/dark figure pairs, abstract-first structure with headline numbers). ## What changed to make this possible `src/starkernel/doe_log.c`'s per-heartbeat-tick CSV gained two new columns (`fleet_k_q48`, `fleet_conserved` — see the file's own header comment for the full 20-column schema), requiring a kernel rebuild and a fresh DoE campaign rerun on all three architectures (`../results-20260912-with-k/*-doe-raw.log` + `*-heartbeat.csv`). ## Pipeline (same shape as `../analysis-20260912/`, extended for K) 1. `correlate_doe.py ` — per architecture, against `../results-20260912-with-k/{amd64,aarch64,riscv64}-doe-raw.log` → `{amd64,aarch64,riscv64}-correlated.csv` (committed, not scratch). 2. `combine.py [in2.csv ...] ` → `combined.csv` (775 rows). Decodes `fleet_k_q48` to a plain float and **derives** `fleet_conserved` from `fleet_k_q48` directly (using the same epsilon `vm_physics_conserved()` uses, `capsule_vm_physics.c`) rather than trusting the raw `fleet_conserved` field — that field is `doe_log_tick_row()`'s very last printed column, with nothing after it in the row to bound a regex match against, so a resumed trial digit can merge into it with zero separator on the wire (confirmed live: raw values like `19223372036854775807` where `0`/`1` was expected). See the script's own comment for the full explanation. 3. `analysis.R` (run from this directory) — computes the K result (trivial: one distinct value, `sd = 0`, reported directly rather than via a formal test — see the report's own \S5.1 for why), per-cell architecture × identity summaries, and two-way ANOVA for 12 secondary metrics; writes `charts/*.svg` (light+dark pairs, matching `experiments/bare_metal/analysis/analyse_bare_metal.R`'s theme convention) and `tables/*.csv`. 4. SVGs converted to PDF for LaTeX via `rsvg-convert` into `report/figures/`. 5. `report/std79_doe_report.tex`, hand-authored following `experiments/bare_metal/analysis/report/bare_metal_doe_report.tex`'s structure and conventions; compiled with `pdflatex` (three passes for cross-references/TOC). ## Headline result $K = 1.0000000000$ (raw Q48.16 `65536`) on **every one of 775 heartbeat-tick observations**, `sd(K) = 0`, `fleet_conserved = 1` on 100% of rows, across all three architectures, nine identities, and three replicates. Zero deviation. See the report for the full discussion, including why this is also a free regression check on the two Stadium subsystem fixes (FABRIC-3.md §XVI–XVII) that landed the same week. ## Known limitation Same interleaving-correlation caveat as `../analysis-20260912/`: 1 of 27 `run_id` markers was unrecoverable on 2 of 3 architectures this run (aarch64/riscv64: `run_id` 1 folded into `run_id` 0). `fleet_k_q48` itself is entirely unaffected by this — it's read directly at each tick regardless of trial attribution, so the K result does not depend on trial labeling being correct at all. See report §2.3/§6.4 for the full explanation.