Log fleet_k_q48/fleet_conserved; K holds exactly, 775/775 ticks (FABRIC-3.md §XVIII)
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:
co-authored by
Claude Sonnet 5
parent
6573a6d1d5
commit
66ba21adb4
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,509 @@
|
||||
\documentclass[10pt,a4paper]{article}
|
||||
|
||||
%% ── Packages ──────────────────────────────────────────────────────────────────
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[margin=2.5cm]{geometry}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{subcaption}
|
||||
\usepackage{booktabs}
|
||||
\usepackage{siunitx}
|
||||
\usepackage{amsmath}
|
||||
\usepackage{amssymb}
|
||||
\usepackage{xcolor}
|
||||
\usepackage{microtype}
|
||||
\usepackage{parskip}
|
||||
\usepackage{enumitem}
|
||||
\usepackage[hidelinks,colorlinks=true,linkcolor=black,citecolor=black,urlcolor=blue]{hyperref}
|
||||
\usepackage{lmodern}
|
||||
\usepackage{colortbl}
|
||||
\usepackage{listings}
|
||||
|
||||
%% ── Colour palette (matches experiments/bare_metal/analysis/report) ────────────
|
||||
\definecolor{sfblue}{RGB}{31,119,180}
|
||||
\definecolor{sforange}{RGB}{255,127,14}
|
||||
\definecolor{sfgreen}{RGB}{44,160,44}
|
||||
\definecolor{sfgray}{RGB}{80,80,80}
|
||||
|
||||
%% ── Figure path ───────────────────────────────────────────────────────────────
|
||||
\graphicspath{{figures/}}
|
||||
|
||||
%% ── Title metadata ────────────────────────────────────────────────────────────
|
||||
\title{%
|
||||
\textbf{The std79-doe Fleet Conservation Invariant}\\[0.4em]
|
||||
\large A $3\times9\times3$ Randomized Factorial Analysis of Compudynamic
|
||||
Heat Conservation and Word-Execution Physics Across Three Instruction-Set
|
||||
Architectures
|
||||
}
|
||||
\author{%
|
||||
R.\,A. James (Captain Bob)\\[0.2em]
|
||||
\small StarForth / LithosAnanke Project \quad\texttt{robert.allan.james@gmail.com}
|
||||
}
|
||||
\date{%
|
||||
12 September 2026\\[0.2em]
|
||||
\textnormal{(Patent Pending --- Provisional Filed December 2025)}
|
||||
}
|
||||
|
||||
%% ═════════════════════════════════════════════════════════════════════════════
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
\thispagestyle{empty}
|
||||
|
||||
%% ── Abstract ──────────────────────────────────────────────────────────────────
|
||||
\begin{abstract}
|
||||
\noindent
|
||||
The fleet-wide execution-heat conservation invariant $K$ --- the sum of
|
||||
\texttt{execution\_heat\_q48} over every live VM in the LithosAnanke Tripod
|
||||
fleet, which the physics runtime's design requires to equal $Q48\_ONE$ at
|
||||
all times --- holds \textbf{exactly}, with \textbf{zero measured deviation},
|
||||
across \textbf{775 heartbeat-tick observations} spanning a randomized
|
||||
$3\,(\text{architecture}) \times 9\,(\text{identity}) \times
|
||||
3\,(\text{replicate})$ full-factorial Design of Experiments on
|
||||
\textsc{amd64}, \textsc{aarch64}, and \textsc{riscv64}: $K = 1.000000000$
|
||||
(Q48.16 raw value $65536$) on every single row, $100\,\%$ of rows report
|
||||
\texttt{fleet\_conserved}, and the standard deviation of $K$ within every
|
||||
architecture is $0$. This is the conservation law central to the
|
||||
Compudynamics physics runtime, verified not as a boot-time self-test but
|
||||
continuously, at every heartbeat tick, throughout 80 identity-execution
|
||||
trials under real cross-VM \texttt{VM-EXEC} dispatch load, two independent
|
||||
Stadium subsystem bug fixes (an $O(n_{\mathrm{cells}})$ eviction-scan defect
|
||||
and a donor-selection floor defect, both closed the same week this campaign
|
||||
ran), and the newly-added per-tick logging path itself.
|
||||
|
||||
Secondary results from the same dataset: \emph{identity} (which of the 9
|
||||
attached VMs is executing) has a statistically significant effect on
|
||||
word-execution-heat metrics (hot word count, mean word heat, rolling window
|
||||
width; all $p < 10^{-6}$), as expected since different identities execute
|
||||
different FORTH dictionaries. \emph{Architecture} has a statistically
|
||||
significant effect on timing-related metrics (APIC ticks per heartbeat,
|
||||
TIME-TRUST, timing variance, Tripod fleet member heat; $p < 10^{-8}$),
|
||||
consistent with each target's distinct TCG emulation speed and timer
|
||||
hardware model. The two factors show at most one weak interaction (timing
|
||||
variance, $p \approx 0.0017$) across twelve secondary metrics tested ---
|
||||
architecture and identity effects are almost entirely separable, and neither
|
||||
disturbs $K$.
|
||||
\end{abstract}
|
||||
|
||||
\bigskip
|
||||
\hrule
|
||||
\tableofcontents
|
||||
\hrule
|
||||
\bigskip
|
||||
|
||||
%% ═════════════════════════════════════════════════════════════════════════════
|
||||
\section{Introduction}
|
||||
\label{sec:intro}
|
||||
|
||||
LithosAnanke's Stadium subsystem (\texttt{src/starkernel/vm/stadium.c})
|
||||
implements a capacity-limited cell array used for word-execution-heat
|
||||
tracking and cross-VM resource admission. Its design carries a conservation
|
||||
invariant: the sum of execution heat across every live VM in the fleet, a
|
||||
quantity we call $K$, must equal $Q48\_ONE$ (fixed-point $1.0$) at all
|
||||
times --- heat is redistributed among VMs and dictionary words, never
|
||||
created or destroyed. \texttt{vm\_physics\_conserved()}
|
||||
(\texttt{capsule\_vm\_physics.c}) already checks this at specific
|
||||
diagnostic points; this report asks a stronger question: \textbf{does $K$
|
||||
hold continuously, at every heartbeat tick, under real multi-identity
|
||||
execution load, across every architecture the kernel targets?}
|
||||
|
||||
The vehicle is \texttt{experiments/std79-doe/std79-doe.fth}, a
|
||||
self-contained FORTH capsule implementing a randomized
|
||||
$3\,(\text{architecture})\times9\,(\text{identity})\times3\,(\text{replicate})$
|
||||
full-factorial DoE (FABRIC-3.md \S XV), matching this project's own
|
||||
\texttt{capsules/doe.4th} Fisher-Yates methodology. Each of 9 attached
|
||||
identity VMs (the superuser \texttt{zuse}, a named human identity
|
||||
\texttt{rajames}, and six numbered thumbdrive identities \texttt{00}--\texttt{06})
|
||||
runs the same 24-word FORTH-79 standard-dictionary exerciser under
|
||||
\texttt{VM-EXEC} cross-VM dispatch, 3 replicates each, Fisher-Yates-shuffled
|
||||
run order, single continuous boot per architecture with all 9 identities
|
||||
simultaneously live.
|
||||
|
||||
Two real defects in the Stadium subsystem were found and fixed during the
|
||||
same week this instrumentation was built (FABRIC-3.md \S XVI--XVII): an
|
||||
$O(n_{\mathrm{cells}})$ full-array eviction-fallback scan that stalled
|
||||
aarch64 VM births for 90+ minutes once the Stadium's cell count scaled with
|
||||
available RAM, and a donor-selection policy that always split a new VM's
|
||||
initial quota from Hera specifically, silently starving later VM births
|
||||
once her own free list ran thin. Both are closed; every result in this
|
||||
report was collected \emph{after} both fixes landed, so $K$'s perfect
|
||||
conservation here is also, incidentally, a live regression check on both
|
||||
fixes: neither introduced any heat leak or double-count.
|
||||
|
||||
%% ═════════════════════════════════════════════════════════════════════════════
|
||||
\section{Experimental Design}
|
||||
\label{sec:design}
|
||||
|
||||
\subsection{System Under Test}
|
||||
|
||||
Three 64-bit targets, each booting LithosAnanke from UEFI firmware under
|
||||
QEMU TCG software emulation, single continuous QEMU session per
|
||||
architecture:
|
||||
\begin{itemize}[noitemsep]
|
||||
\item \texttt{amd64} --- x86-64, OVMF UEFI, \texttt{-m 1024}
|
||||
\item \texttt{aarch64} --- ARMv8-A (Cortex-A57), UEFI, \texttt{-m 4096}
|
||||
\item \texttt{riscv64} --- RISC-V RV64GC, OpenSBI + UEFI, \texttt{-m 1024}
|
||||
\end{itemize}
|
||||
|
||||
All 9 identity thumbdrives are attached one at a time via QMP hotplug with a
|
||||
confirmed \texttt{WIREBIND} wait between each (simultaneous boot-time
|
||||
attachment of many devices hits a separate, unrelated, still-open kernel
|
||||
detection gap, FABRIC-3.md \S XIV) --- once attached, all 9 stay
|
||||
simultaneously live for the whole run.
|
||||
|
||||
\subsection{DoE Capsule and K Instrumentation}
|
||||
|
||||
\texttt{EXEC-STD79-DOE ( seed lo hi -- )} shuffles the 27-cell
|
||||
(identity~$\times$~replicate) run matrix with a fixed seed (\texttt{12345},
|
||||
identical on every architecture for direct cross-arch comparability), then
|
||||
executes each cell in shuffled order, dispatching the 24-word exerciser into
|
||||
the target identity's own live VM via \texttt{VM-EXEC}. The run is
|
||||
bracketed with \texttt{HB-ON}/\texttt{HB-OFF} (\texttt{doe\_log.c}), which
|
||||
gate a 20-column CSV row emitted once per heartbeat tick, tagged
|
||||
\texttt{[HADES][DOE~]} in the serial log. Two of those twenty columns are
|
||||
new for this report:
|
||||
|
||||
\begin{center}
|
||||
\begin{tabular}{lll}
|
||||
\toprule
|
||||
Column & Type & Meaning \\
|
||||
\midrule
|
||||
\texttt{fleet\_k\_q48} & \texttt{uint64} & \texttt{vm\_physics\_fleet\_heat\_sum()} over ALL live VMs \\
|
||||
\texttt{fleet\_conserved} & \texttt{uint32} & \texttt{vm\_physics\_conserved()} as 0/1 \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
|
||||
Columns 16--18 (already present) log only the three named Tripod fleet
|
||||
members' (Hera, Hermes, Artemis) \emph{individual} heat by name lookup ---
|
||||
insufficient to reconstruct $K$ on their own, since they omit every identity
|
||||
VM's own heat contribution. \texttt{fleet\_k\_q48} is the genuine
|
||||
fleet-wide sum, added specifically to make this analysis possible.
|
||||
|
||||
\subsection{Data Collection and the Interleaving Correlation Problem}
|
||||
\label{sec:correlation}
|
||||
|
||||
The heartbeat tick's CSV printer and the DoE trial loop's own console
|
||||
output share one serial line with no locking between them: under load, a
|
||||
tick's CSV row can be spliced mid-token into the trial loop's own printed
|
||||
output on the wire. This does not affect the underlying computation ---
|
||||
values in memory are correct, only the printed character stream
|
||||
interleaves --- but it does mean naive log parsing cannot simply assume one
|
||||
physical line is one logical print.
|
||||
|
||||
\texttt{correlate\_doe.py} reconstructs, for every heartbeat-tick CSV row,
|
||||
which trial (\texttt{run\_id}, \texttt{id\_idx}, \texttt{id\_label},
|
||||
\texttt{rep}) was active when it printed, via a two-pass method: extract
|
||||
every atomic \texttt{[HADES][DOE~]} occurrence (rows are never themselves
|
||||
split, only the surrounding text is), physically remove those spans to
|
||||
reconstruct the clean trial-output stream, then map each removed row's
|
||||
position back to the nearest preceding \texttt{run\_id} marker in that
|
||||
clean stream. \texttt{run\_id} is recovered this way with high reliability;
|
||||
\texttt{id\_idx}/\texttt{id\_label}/\texttt{rep} are instead looked up from
|
||||
a fixed table built from an independently-verified clean prior run (same
|
||||
seed, so the mapping is deterministic and identical on every architecture)
|
||||
rather than re-parsed, since a trial marker's own trailing digit can, rarely,
|
||||
merge with an immediately-following CSV field with zero separator.
|
||||
|
||||
\textbf{Known limitation.} One \texttt{run\_id} marker per architecture was
|
||||
unrecoverable this way in this particular set of runs (amd64: none lost;
|
||||
aarch64 and riscv64: \texttt{run\_id}~1, identity \texttt{rajames} rep~0,
|
||||
folded into \texttt{run\_id}~0, identity \texttt{zuse} rep~1) --- its rows
|
||||
attribute to the preceding trial instead. This affects at most 2 of 27
|
||||
trials on 2 of 3 architectures; every other cell, on every architecture, is
|
||||
unaffected. \texttt{fleet\_k\_q48} itself is immune to this failure mode
|
||||
entirely (see \S\ref{sec:limitations}).
|
||||
|
||||
\subsection{Dataset Summary}
|
||||
|
||||
\begin{table}[h!]
|
||||
\centering
|
||||
\caption{Dataset summary. \texttt{n\_trials} counts distinct \texttt{run\_id}
|
||||
values recovered (27 = no loss; 26 = one trial folded into another,
|
||||
\S\ref{sec:correlation}).}
|
||||
\label{tab:dataset}
|
||||
\begin{tabular}{lrrr}
|
||||
\toprule
|
||||
Architecture & Heartbeat rows & Trials recovered & Conserved (\%) \\
|
||||
\midrule
|
||||
amd64 & 258 & 27 & 100 \\
|
||||
aarch64 & 256 & 27 & 100 \\
|
||||
riscv64 & 261 & 26 & 100 \\
|
||||
\midrule
|
||||
\textbf{Total} & \textbf{775} & --- & \textbf{100} \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
%% ═════════════════════════════════════════════════════════════════════════════
|
||||
\section{The Conservation Invariant $K$}
|
||||
\label{sec:k}
|
||||
|
||||
\subsection{Result}
|
||||
|
||||
Across all 775 heartbeat-tick observations, on every architecture, under
|
||||
every identity, at every replicate:
|
||||
\[
|
||||
K = 1.0000000000 \quad (\text{raw } Q48.16\text{ value } 65536),
|
||||
\qquad \mathrm{sd}(K) = 0, \qquad \texttt{fleet\_conserved} = 1
|
||||
\ \ \forall \text{ rows.}
|
||||
\]
|
||||
|
||||
There is exactly one distinct value of $K$ in the entire dataset. This is
|
||||
not a near-conservation result reported to some number of significant
|
||||
figures --- it is bit-exact equality to $Q48\_ONE$ on every single
|
||||
observation, matching this project's established pattern of reporting
|
||||
compudynamic invariants at $0.000\,\%$ variance rather than a small
|
||||
nonzero tolerance.
|
||||
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\begin{subfigure}[b]{0.48\textwidth}
|
||||
\includegraphics[width=\textwidth]{fleet_k_light}
|
||||
\caption{Light theme}
|
||||
\end{subfigure}\hfill
|
||||
\begin{subfigure}[b]{0.48\textwidth}
|
||||
\includegraphics[width=\textwidth]{fleet_k_dark}
|
||||
\caption{Dark theme}
|
||||
\end{subfigure}
|
||||
\caption{Fleet conservation invariant $K$ over every heartbeat tick,
|
||||
faceted by architecture. The dashed reference line marks $Q48\_ONE$
|
||||
(perfect conservation); every point lies exactly on it. Vertical axis
|
||||
intentionally zoomed to $[0.9, 1.1]$ so that \emph{any} deviation, however
|
||||
small, would be visible --- none is present.}
|
||||
\label{fig:fleet_k}
|
||||
\end{figure}
|
||||
|
||||
\subsection{Why This Result Matters}
|
||||
|
||||
$K$ is not a metric the kernel merely happens to keep close to 1; it is an
|
||||
invariant the Stadium/physics runtime's own reservoir-transfer accounting is
|
||||
\emph{designed} to hold exactly, by construction of \texttt{stadium\_evict()}
|
||||
crediting a departing patron's remaining heat back to its owner's reservoir
|
||||
before the cell returns to the free list (\texttt{stadium.c}), and of every
|
||||
VM birth granting a fresh reservoir rather than fragmenting an existing
|
||||
one. A single dropped or double-counted heat transfer anywhere in that
|
||||
accounting --- in \texttt{stadium\_admit()}, \texttt{stadium\_evict()},
|
||||
\texttt{stadium\_grant\_quota()}, or the per-word heat pull/push path in
|
||||
\texttt{stadium\_words.c} --- would show up here as $K \neq 1$ on whichever
|
||||
tick it happened. None does, across 775 independent observations spanning
|
||||
three architectures, nine identities, cross-VM dispatch load, and two
|
||||
Stadium subsystem code changes made the same week.
|
||||
|
||||
%% ═════════════════════════════════════════════════════════════════════════════
|
||||
\section{Secondary Results: Architecture and Identity Effects}
|
||||
\label{sec:secondary}
|
||||
|
||||
Twelve further per-tick metrics were tested for architecture and identity
|
||||
effects via two-way ANOVA (\texttt{metric~$\sim$~arch~*~id\_label}) on the
|
||||
same 775-row dataset.
|
||||
|
||||
\begin{table}[h!]
|
||||
\centering
|
||||
\caption{Significant effects ($p < 0.05$), two-way ANOVA, 12 metrics tested.}
|
||||
\label{tab:sig}
|
||||
\begin{tabular}{lp{9cm}}
|
||||
\toprule
|
||||
Effect & Metrics \\
|
||||
\midrule
|
||||
Architecture &
|
||||
Hot word count, APIC ticks/heartbeat, TIME-TRUST, timing variance,
|
||||
Hera/Hermes/Artemis fleet heat \\
|
||||
Identity &
|
||||
Hot word count, mean word execution heat, rolling window width, actual
|
||||
window size, timing variance \\
|
||||
Arch $\times$ identity interaction &
|
||||
Timing variance only ($p \approx 0.0017$) \\
|
||||
No significant effect &
|
||||
Estimated timer jitter, max VM call depth \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
The pattern is intuitive: \emph{identity} determines what gets executed
|
||||
(different dictionaries $\to$ different word-heat and window-sizing
|
||||
behavior), \emph{architecture} determines how fast and how precisely time is
|
||||
measured (different TCG emulation speed and timer hardware $\to$ different
|
||||
APIC/TIME-TRUST/variance behavior). The two factors are almost entirely
|
||||
separable --- 11 of 12 secondary metrics show no interaction at all --- and
|
||||
critically, \textbf{neither factor perturbs $K$ in the slightest}
|
||||
(\S\ref{sec:k}): whatever differences architecture and identity produce in
|
||||
raw execution timing and word-heat accumulation, the fleet-wide conservation
|
||||
total is unaffected.
|
||||
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\begin{subfigure}[b]{0.48\textwidth}
|
||||
\includegraphics[width=\textwidth]{hot_word_count_light}
|
||||
\caption{Light theme}
|
||||
\end{subfigure}\hfill
|
||||
\begin{subfigure}[b]{0.48\textwidth}
|
||||
\includegraphics[width=\textwidth]{hot_word_count_dark}
|
||||
\caption{Dark theme}
|
||||
\end{subfigure}
|
||||
\caption{Hot word count by identity, faceted by architecture --- the
|
||||
metric with the strongest identity effect ($p \approx 6\times10^{-24}$).
|
||||
\texttt{zuse} (native compiled FORTH, no cross-VM dispatch) is visibly
|
||||
tighter/lower-variance than the eight \texttt{VM-EXEC}-dispatched
|
||||
identities.}
|
||||
\label{fig:hot_word_count}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\begin{subfigure}[b]{0.48\textwidth}
|
||||
\includegraphics[width=\textwidth]{avg_word_heat_light}
|
||||
\caption{Light theme}
|
||||
\end{subfigure}\hfill
|
||||
\begin{subfigure}[b]{0.48\textwidth}
|
||||
\includegraphics[width=\textwidth]{avg_word_heat_dark}
|
||||
\caption{Dark theme}
|
||||
\end{subfigure}
|
||||
\caption{Mean word execution heat by identity, faceted by architecture ---
|
||||
the metric with the strongest effect of any kind in this dataset
|
||||
($p \approx 5\times10^{-28}$ for identity).}
|
||||
\label{fig:avg_word_heat}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\begin{subfigure}[b]{0.48\textwidth}
|
||||
\includegraphics[width=\textwidth]{apic_delta_light}
|
||||
\caption{Light theme}
|
||||
\end{subfigure}\hfill
|
||||
\begin{subfigure}[b]{0.48\textwidth}
|
||||
\includegraphics[width=\textwidth]{apic_delta_dark}
|
||||
\caption{Dark theme}
|
||||
\end{subfigure}
|
||||
\caption{APIC hardware ticks consumed per heartbeat tick, by identity,
|
||||
faceted by architecture --- the clearest architecture-only effect
|
||||
(no meaningful identity structure within a facet), reflecting each
|
||||
target's distinct TCG emulation speed and timer hardware.}
|
||||
\label{fig:apic_delta}
|
||||
\end{figure}
|
||||
|
||||
%% ═════════════════════════════════════════════════════════════════════════════
|
||||
\section{Statistical Analysis}
|
||||
\label{sec:stats}
|
||||
|
||||
\subsection{K: Not Formally Testable, By Construction}
|
||||
|
||||
No ANOVA is reported for $K$ itself: with zero variance in the response
|
||||
(every one of 775 observations exactly $1.0$), the F-statistic is
|
||||
undefined (division by a zero within-group sum of squares) rather than
|
||||
merely large. This absence of a test statistic \emph{is} the result ---
|
||||
the same convention this project uses elsewhere when a metric is reported
|
||||
as architecture-independent to machine precision rather than
|
||||
statistically indistinguishable at some $p$-value.
|
||||
|
||||
\subsection{Secondary Metrics}
|
||||
|
||||
Full per-cell (architecture~$\times$~identity) means, standard deviations,
|
||||
and coefficients of variation, and the full ANOVA table for all twelve
|
||||
secondary metrics, are in \texttt{tables/cell\_summary.csv} and
|
||||
\texttt{tables/anova.csv} alongside this report's own source. Selected
|
||||
results, representative of the pattern in Table~\ref{tab:sig}:
|
||||
|
||||
\begin{table}[h!]
|
||||
\centering
|
||||
\caption{Hot word count: per-architecture mean (averaged across all 9
|
||||
identities), the metric showing both a strong architecture and a strong
|
||||
identity effect.}
|
||||
\label{tab:hotwords}
|
||||
\begin{tabular}{lr}
|
||||
\toprule
|
||||
Architecture & Mean hot word count \\
|
||||
\midrule
|
||||
amd64 & 58.99 \\
|
||||
aarch64 & 63.13 \\
|
||||
riscv64 & 63.02 \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
%% ═════════════════════════════════════════════════════════════════════════════
|
||||
\section{Discussion}
|
||||
\label{sec:discussion}
|
||||
|
||||
\subsection{K as a Continuous, Not Just Boot-Time, Invariant}
|
||||
|
||||
Prior verification of fleet conservation in this project checked $K$ at
|
||||
specific diagnostic points (\texttt{vm\_physics\_\allowbreak status()},
|
||||
\texttt{VM-CONSERVED?}). This campaign is the first to log $K$
|
||||
\emph{continuously}, once per heartbeat tick, through a sustained,
|
||||
realistic multi-identity workload --- 80 recovered trials of cross-VM
|
||||
\texttt{VM-EXEC} dispatch, spanning VM admission, word-heat accumulation
|
||||
and cooling, and reservoir credit/debit on every eviction. That it holds
|
||||
exactly throughout, on every architecture, is a materially stronger claim
|
||||
than a boot-time self-test passing: it rules out slow leaks or
|
||||
transient double-counts that a single-point check would miss entirely.
|
||||
|
||||
\subsection{A Free Regression Check on Two Recent Stadium Fixes}
|
||||
|
||||
Both Stadium defects closed the same week this campaign ran
|
||||
(\S\ref{sec:intro}) touch exactly the code paths $K$ depends on:
|
||||
the O($n_{\mathrm{cells}}$) scan fix changed \emph{how}
|
||||
\texttt{stadium\_admit()} finds an eviction candidate (walking a per-VM
|
||||
resident list instead of the whole array) without changing which cell it
|
||||
selects or how heat is credited back; the donor-floor fix changed
|
||||
\emph{which} VM a new quota splits from (\texttt{stadium\_best\_donor()}
|
||||
instead of unconditionally Hera) without changing the reservoir math of the
|
||||
split itself. $K$'s perfect conservation across every tick of this
|
||||
campaign is direct evidence that neither fix disturbed the underlying
|
||||
accounting --- a correctness property those fixes' own verification (81/81
|
||||
trial correctness, FABRIC-3.md \S XVI--XVII) did not directly probe.
|
||||
|
||||
\subsection{Identity and Architecture Effects Are Separable}
|
||||
|
||||
The near-total absence of an architecture~$\times$~identity interaction
|
||||
(1 of 12 secondary metrics, and only weakly) is itself a useful property
|
||||
for anyone extending this instrumentation: architecture-specific timing
|
||||
behavior and identity-specific execution behavior can be reasoned about
|
||||
independently, without needing to model how one modulates the other.
|
||||
|
||||
\subsection{Limitations}
|
||||
\label{sec:limitations}
|
||||
|
||||
\begin{enumerate}[noitemsep]
|
||||
\item \textbf{QEMU TCG emulation.} All three architectures were tested
|
||||
under software emulation, not physical hardware; see the companion
|
||||
bare-metal DoE report for the corresponding caveat on that campaign.
|
||||
\item \textbf{Interleaving-based trial mislabeling.} As documented in
|
||||
\S\ref{sec:correlation}, 1 \texttt{run\_id} out of 27 was unrecoverable
|
||||
on 2 of 3 architectures, folding that trial's rows into the preceding
|
||||
one. This affects only \texttt{run\_id}/\texttt{id\_idx}/\texttt{id\_label}
|
||||
attribution for those specific rows --- \texttt{fleet\_k\_q48} itself,
|
||||
being read directly by \texttt{doe\_log\_tick\_row()} at the moment of
|
||||
each tick regardless of which trial is running, is entirely
|
||||
unaffected by this correlation problem; $K$'s perfect-conservation
|
||||
result in \S\ref{sec:k} does not depend on trial attribution being
|
||||
correct at all.
|
||||
\item \textbf{Modest per-cell sample size.} Each architecture~$\times$~identity
|
||||
cell contains roughly 7--10 heartbeat-tick observations (one DoE trial's
|
||||
worth), not hundreds; the secondary-metric ANOVA results
|
||||
(\S\ref{sec:secondary}) should be read as a first-pass factorial
|
||||
screen, not a high-power confirmatory study.
|
||||
\item \textbf{Single seed.} All three architectures share one Fisher-Yates
|
||||
shuffle seed (\texttt{12345}) for direct comparability; this campaign
|
||||
does not itself establish invariance across independent run orderings
|
||||
the way the companion bare-metal report's three-seed outer design does.
|
||||
\end{enumerate}
|
||||
|
||||
%% ═════════════════════════════════════════════════════════════════════════════
|
||||
\section{Conclusion}
|
||||
\label{sec:conclusion}
|
||||
|
||||
The fleet-wide execution-heat conservation invariant $K$ holds exactly, at
|
||||
every heartbeat tick, across 775 observations spanning three architectures,
|
||||
nine identities, and three replicates of real multi-VM dispatch load ---
|
||||
not one deviation. This closes the loop on the std79-doe campaign's own
|
||||
recent history: two real Stadium subsystem defects were found and fixed
|
||||
(FABRIC-3.md \S XVI--XVII), the full correctness campaign was re-verified
|
||||
81/81 clean, and now the physics conservation law those fixes' own code
|
||||
touches is independently confirmed intact, continuously, not just at the
|
||||
boot-time self-test that first established it. Architecture and identity
|
||||
each significantly affect several secondary timing and word-execution
|
||||
metrics, in the expected direction, with almost no interaction between
|
||||
them --- and neither factor moves $K$ at all.
|
||||
|
||||
\end{document}
|
||||
Reference in New Issue
Block a user