Add 3x9 factorial analysis of std79-doe heartbeat/physics telemetry
Build / build-amd64-iso (push) Waiting to run
Build / build-aarch64-iso (push) Waiting to run
Build / build-riscv64-img (push) Waiting to run

Correlates every HB-ON/HB-OFF heartbeat-tick CSV row (results-20260912-
with-heartbeat-csv/*-doe-raw.log) back to which trial (run_id, id_idx,
id_label, rep) was active when it printed, despite the async tick
printer splicing rows mid-token -- including mid a DOE-RUN marker itself
-- into the trial loop's own console output on the shared serial line.

Pipeline (analysis-20260912/, see its own README.md):
- correlate_doe.py: two-pass reconstruction per architecture (remove
  atomic CSV-row spans to rebuild the clean trial-output stream, map
  each removed row's offset back to the nearest preceding run_id
  marker); identity/rep looked up from a known-clean prior run's
  run_id mapping rather than re-parsed, since one aarch64 marker
  (trial 12, rajames rep 1) lost its id_idx digit to a zero-separator
  collision with an adjacent CSV field and is unrecoverable from that
  log alone -- its rows fold into trial 11 instead, documented as a
  known limitation.
- combine.py: merges all three architectures into combined.csv (768
  rows), decoding Q48.16 fields to floats and jitter_bits' IEEE754 bit
  pattern to real jitter_ns.
- analysis.R: per-cell (architecture x identity) means/SD and two-way
  ANOVA for each of 12 telemetry metrics, one boxplot SVG per metric,
  written up as ANALYSIS.md.

Key findings: identity significantly affects word-heat/window-sizing
metrics (expected -- different identities execute different word
sets), architecture significantly affects timing metrics (APIC
ticks/tick, timing variance, fleet heat -- expected, different QEMU
targets), zero architecture x identity interaction on any metric.

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 12:46:34 -04:00
co-authored by Claude Sonnet 5
parent 403a7639e1
commit 934be5a257
19 changed files with 5872 additions and 0 deletions
@@ -0,0 +1,554 @@
# std79-doe 3×9 Factorial Analysis — Heartbeat/Physics Telemetry
Generated 2026-09-12 12:45. Source: `combined.csv` (768 rows), built by
`correlate_doe.py` from the three raw logs in
`../results-20260912-with-heartbeat-csv/`. See that file's own docstring for the
correlation methodology (the heartbeat tick's async CSV printer and the DoE trial
loop's own console output share one serial line with no locking, so rows can land
mid-token in the raw logs; the underlying FORTH execution and values are
unaffected, only reconstructing which trial owns which row needed care).
**Design:** 3 architectures (amd64, aarch64, riscv64) × 9 identities (zuse,
rajames, 00-06) × 3 replicates, Fisher-Yates-shuffled run order, same seed
(12345) on every architecture (FABRIC-3.md §XV). Each of the 27 trials per
architecture runs the same 24-word FORTH-79 exerciser; every heartbeat tick during
the whole `EXEC-STD79-DOE` run (bracketed by `HB-ON`/`HB-OFF`) emits one telemetry
row (`doe_log.c`), correlated back to whichever trial was active when it printed.
**Known limitation:** aarch64's raw log lost 1 of 27 run_id markers to interleaving
beyond recovery (trial 12, identity `rajames` rep 1) -- its rows are folded into
trial 11 (identity `rajames` rep 0) in this dataset, so aarch64's `rajames` cell
for rep-sensitive metrics is not perfectly separable for those two replicates
specifically. Every other cell on every architecture is unaffected.
## Key findings (p < 0.05, two-way ANOVA)
- **Architecture main effect:** APIC ticks per heartbeat tick, TIME-TRUST, Timing variance, Hera fleet heat, Hermes fleet heat
- **Identity main effect:** Hot word count, Mean word execution heat, Rolling window width, Actual analysis window size
- **Architecture × identity interaction:** none
- **No significant effect of either factor:** Estimated timer jitter (ns), Max VM call depth, Artemis fleet heat
TIME-TRUST's architecture effect is a numerical artifact worth reading correctly,
not a substantive result: it is essentially constant *within* each architecture
(residual variance ~1e-31, i.e. floating-point noise) and differs *between*
architectures — so the F statistic is enormous simply because the within-group
denominator is near zero, not because TIME-TRUST is meaningfully more variable
across architectures than the other metrics here. It is architecture-determined
and identity-independent, which is itself the interesting part.
## Hot word count (`hot_word_count`)
![Hot word count](svg/hot_word_count.svg)
| Architecture | Identity | n | mean | sd | CV% |
|---|---|---:|---:|---:|---:|
| amd64 | zuse | 23 | 67.91 | 1.411 | 2.08 |
| amd64 | rajames | 25 | 64.28 | 7.414 | 11.53 |
| amd64 | 00 | 26 | 64.46 | 7.235 | 11.22 |
| amd64 | 01 | 26 | 62.62 | 6.929 | 11.07 |
| amd64 | 02 | 28 | 62.5 | 6.251 | 10.00 |
| amd64 | 03 | 30 | 62.5 | 5.71 | 9.14 |
| amd64 | 04 | 33 | 66.55 | 5.386 | 8.09 |
| amd64 | 05 | 33 | 64.45 | 3.874 | 6.01 |
| amd64 | 06 | 31 | 65.1 | 3.953 | 6.07 |
| aarch64 | zuse | 23 | 69.35 | 1.191 | 1.72 |
| aarch64 | rajames | 16 | 65.19 | 8.336 | 12.79 |
| aarch64 | 00 | 26 | 62.92 | 7.451 | 11.84 |
| aarch64 | 01 | 27 | 59.81 | 8.005 | 13.38 |
| aarch64 | 02 | 37 | 61.27 | 8.425 | 13.75 |
| aarch64 | 03 | 29 | 60.79 | 7.208 | 11.86 |
| aarch64 | 04 | 33 | 67.48 | 5.745 | 8.51 |
| aarch64 | 05 | 33 | 62.73 | 4.692 | 7.48 |
| aarch64 | 06 | 32 | 63.19 | 4.351 | 6.89 |
| riscv64 | zuse | 23 | 69.48 | 1.039 | 1.50 |
| riscv64 | rajames | 26 | 65.27 | 11.27 | 17.27 |
| riscv64 | 00 | 27 | 62.33 | 8.953 | 14.36 |
| riscv64 | 01 | 28 | 61.68 | 7.252 | 11.76 |
| riscv64 | 02 | 27 | 62.3 | 8.109 | 13.02 |
| riscv64 | 03 | 28 | 63 | 7.123 | 11.31 |
| riscv64 | 04 | 32 | 67.53 | 6.069 | 8.99 |
| riscv64 | 05 | 32 | 65.56 | 5.691 | 8.68 |
| riscv64 | 06 | 34 | 63.85 | 3.839 | 6.01 |
Two-way ANOVA (`metric ~ arch * id_label`):
| Term | Df | Sum Sq | Mean Sq | F value | Pr(>F) |
|---|---:|---:|---:|---:|---:|
| arch | 2 | 193 | 96.5 | 2.333 | 0.09771 |
| id_label | 8 | 3985 | 498.2 | 12.04 | 2.984e-16 |
| arch:id_label | 16 | 379.9 | 23.74 | 0.574 | 0.9044 |
| Residuals | 741 | 3.065e+04 | 41.36 | — | — |
## Mean word execution heat (`avg_word_heat`)
![Mean word execution heat](svg/avg_word_heat.svg)
| Architecture | Identity | n | mean | sd | CV% |
|---|---|---:|---:|---:|---:|
| amd64 | zuse | 23 | 0.003006 | 0.001235 | 41.07 |
| amd64 | rajames | 25 | 0.008839 | 0.008672 | 98.11 |
| amd64 | 00 | 26 | 0.008918 | 0.006694 | 75.06 |
| amd64 | 01 | 26 | 0.01001 | 0.007327 | 73.18 |
| amd64 | 02 | 28 | 0.01069 | 0.004371 | 40.89 |
| amd64 | 03 | 30 | 0.01032 | 0.005016 | 48.61 |
| amd64 | 04 | 33 | 0.004205 | 0.002958 | 70.35 |
| amd64 | 05 | 33 | 0.008833 | 0.001235 | 13.98 |
| amd64 | 06 | 31 | 0.008481 | 0.003743 | 44.13 |
| aarch64 | zuse | 23 | 0.002911 | 0.001418 | 48.72 |
| aarch64 | rajames | 16 | 0.007391 | 0.005726 | 77.48 |
| aarch64 | 00 | 26 | 0.009563 | 0.006967 | 72.85 |
| aarch64 | 01 | 27 | 0.01071 | 0.007785 | 72.67 |
| aarch64 | 02 | 37 | 0.01146 | 0.007358 | 64.20 |
| aarch64 | 03 | 29 | 0.01046 | 0.005237 | 50.05 |
| aarch64 | 04 | 33 | 0.004262 | 0.00298 | 69.93 |
| aarch64 | 05 | 33 | 0.009139 | 0.001443 | 15.79 |
| aarch64 | 06 | 32 | 0.008941 | 0.003745 | 41.89 |
| riscv64 | zuse | 23 | 0.00289 | 0.00163 | 56.41 |
| riscv64 | rajames | 26 | 0.0106 | 0.0133 | 125.42 |
| riscv64 | 00 | 27 | 0.01041 | 0.009052 | 86.95 |
| riscv64 | 01 | 28 | 0.01068 | 0.007445 | 69.74 |
| riscv64 | 02 | 27 | 0.01104 | 0.005331 | 48.29 |
| riscv64 | 03 | 28 | 0.01007 | 0.005873 | 58.30 |
| riscv64 | 04 | 32 | 0.004007 | 0.002863 | 71.45 |
| riscv64 | 05 | 32 | 0.009038 | 0.001403 | 15.52 |
| riscv64 | 06 | 34 | 0.009104 | 0.003387 | 37.20 |
Two-way ANOVA (`metric ~ arch * id_label`):
| Term | Df | Sum Sq | Mean Sq | F value | Pr(>F) |
|---|---:|---:|---:|---:|---:|
| arch | 2 | 3.325e-05 | 1.662e-05 | 0.5221 | 0.5935 |
| id_label | 8 | 0.005366 | 0.0006707 | 21.07 | 6.051e-29 |
| arch:id_label | 16 | 0.0001362 | 8.514e-06 | 0.2674 | 0.9983 |
| Residuals | 741 | 0.02359 | 3.184e-05 | — | — |
## Rolling window width (`window_width`)
![Rolling window width](svg/window_width.svg)
| Architecture | Identity | n | mean | sd | CV% |
|---|---|---:|---:|---:|---:|
| amd64 | zuse | 23 | 256 | 0 | 0.00 |
| amd64 | rajames | 25 | 256 | 0 | 0.00 |
| amd64 | 00 | 26 | 256 | 0 | 0.00 |
| amd64 | 01 | 26 | 256 | 0 | 0.00 |
| amd64 | 02 | 28 | 256 | 0 | 0.00 |
| amd64 | 03 | 30 | 256 | 0 | 0.00 |
| amd64 | 04 | 33 | 318.1 | 192.3 | 60.47 |
| amd64 | 05 | 33 | 256 | 0 | 0.00 |
| amd64 | 06 | 31 | 256 | 0 | 0.00 |
| aarch64 | zuse | 23 | 256 | 0 | 0.00 |
| aarch64 | rajames | 16 | 256 | 0 | 0.00 |
| aarch64 | 00 | 26 | 256 | 0 | 0.00 |
| aarch64 | 01 | 27 | 256 | 0 | 0.00 |
| aarch64 | 02 | 37 | 256 | 0 | 0.00 |
| aarch64 | 03 | 29 | 256 | 0 | 0.00 |
| aarch64 | 04 | 33 | 318.1 | 192.3 | 60.47 |
| aarch64 | 05 | 33 | 256 | 0 | 0.00 |
| aarch64 | 06 | 32 | 256 | 0 | 0.00 |
| riscv64 | zuse | 23 | 256 | 0 | 0.00 |
| riscv64 | rajames | 26 | 256 | 0 | 0.00 |
| riscv64 | 00 | 27 | 256 | 0 | 0.00 |
| riscv64 | 01 | 28 | 256 | 0 | 0.00 |
| riscv64 | 02 | 27 | 256 | 0 | 0.00 |
| riscv64 | 03 | 28 | 256 | 0 | 0.00 |
| riscv64 | 04 | 32 | 296 | 147 | 49.66 |
| riscv64 | 05 | 32 | 256 | 0 | 0.00 |
| riscv64 | 06 | 34 | 256 | 0 | 0.00 |
Two-way ANOVA (`metric ~ arch * id_label`):
| Term | Df | Sum Sq | Mean Sq | F value | Pr(>F) |
|---|---:|---:|---:|---:|---:|
| arch | 2 | 1575 | 787.7 | 0.1922 | 0.8252 |
| id_label | 8 | 2.57e+05 | 3.213e+04 | 7.839 | 3.816e-10 |
| arch:id_label | 16 | 9163 | 572.7 | 0.1397 | 1 |
| Residuals | 741 | 3.037e+06 | 4098 | — | — |
## Actual analysis window size (`actual_window_size`)
![Actual analysis window size](svg/actual_window_size.svg)
| Architecture | Identity | n | mean | sd | CV% |
|---|---|---:|---:|---:|---:|
| amd64 | zuse | 23 | 256 | 0 | 0.00 |
| amd64 | rajames | 25 | 256 | 0 | 0.00 |
| amd64 | 00 | 26 | 256 | 0 | 0.00 |
| amd64 | 01 | 26 | 256 | 0 | 0.00 |
| amd64 | 02 | 28 | 256 | 0 | 0.00 |
| amd64 | 03 | 30 | 256 | 0 | 0.00 |
| amd64 | 04 | 33 | 318.1 | 192.3 | 60.47 |
| amd64 | 05 | 33 | 256 | 0 | 0.00 |
| amd64 | 06 | 31 | 256 | 0 | 0.00 |
| aarch64 | zuse | 23 | 256 | 0 | 0.00 |
| aarch64 | rajames | 16 | 256 | 0 | 0.00 |
| aarch64 | 00 | 26 | 256 | 0 | 0.00 |
| aarch64 | 01 | 27 | 256 | 0 | 0.00 |
| aarch64 | 02 | 37 | 256 | 0 | 0.00 |
| aarch64 | 03 | 29 | 256 | 0 | 0.00 |
| aarch64 | 04 | 33 | 318.1 | 192.3 | 60.47 |
| aarch64 | 05 | 33 | 256 | 0 | 0.00 |
| aarch64 | 06 | 32 | 256 | 0 | 0.00 |
| riscv64 | zuse | 23 | 256 | 0 | 0.00 |
| riscv64 | rajames | 26 | 256 | 0 | 0.00 |
| riscv64 | 00 | 27 | 256 | 0 | 0.00 |
| riscv64 | 01 | 28 | 256 | 0 | 0.00 |
| riscv64 | 02 | 27 | 256 | 0 | 0.00 |
| riscv64 | 03 | 28 | 256 | 0 | 0.00 |
| riscv64 | 04 | 32 | 296 | 147 | 49.66 |
| riscv64 | 05 | 32 | 256 | 0 | 0.00 |
| riscv64 | 06 | 34 | 256 | 0 | 0.00 |
Two-way ANOVA (`metric ~ arch * id_label`):
| Term | Df | Sum Sq | Mean Sq | F value | Pr(>F) |
|---|---:|---:|---:|---:|---:|
| arch | 2 | 1575 | 787.7 | 0.1922 | 0.8252 |
| id_label | 8 | 2.57e+05 | 3.213e+04 | 7.839 | 3.816e-10 |
| arch:id_label | 16 | 9163 | 572.7 | 0.1397 | 1 |
| Residuals | 741 | 3.037e+06 | 4098 | — | — |
## Estimated timer jitter (ns) (`jitter_ns`)
![Estimated timer jitter (ns)](svg/jitter_ns.svg)
| Architecture | Identity | n | mean | sd | CV% |
|---|---|---:|---:|---:|---:|
| amd64 | zuse | 23 | 0 | 0 | — |
| amd64 | rajames | 25 | 7.379e+17 | 3.689e+18 | 500.00 |
| amd64 | 00 | 26 | 7.095e+17 | 3.618e+18 | 509.90 |
| amd64 | 01 | 26 | 9.462e+04 | 4.824e+05 | 509.90 |
| amd64 | 02 | 28 | 6.588e+17 | 3.486e+18 | 529.15 |
| amd64 | 03 | 30 | 1.23e+18 | 4.68e+18 | 380.56 |
| amd64 | 04 | 33 | 5.59e+17 | 3.211e+18 | 574.46 |
| amd64 | 05 | 33 | 5.59e+17 | 3.211e+18 | 574.46 |
| amd64 | 06 | 31 | 5.951e+17 | 3.313e+18 | 556.78 |
| aarch64 | zuse | 23 | 0 | 0 | — |
| aarch64 | rajames | 16 | 0 | 0 | — |
| aarch64 | 00 | 26 | 7.095e+17 | 3.618e+18 | 509.90 |
| aarch64 | 01 | 27 | 6.832e+17 | 3.55e+18 | 519.62 |
| aarch64 | 02 | 37 | 9.971e+17 | 4.229e+18 | 424.10 |
| aarch64 | 03 | 29 | 6.361e+17 | 3.425e+18 | 538.52 |
| aarch64 | 04 | 33 | 5.59e+17 | 3.211e+18 | 574.46 |
| aarch64 | 05 | 33 | 1.118e+18 | 4.47e+18 | 399.80 |
| aarch64 | 06 | 32 | 5.765e+17 | 3.261e+18 | 565.69 |
| riscv64 | zuse | 23 | 0 | 0 | — |
| riscv64 | rajames | 26 | 1.419e+18 | 5.013e+18 | 353.27 |
| riscv64 | 00 | 27 | 6.832e+17 | 3.55e+18 | 519.62 |
| riscv64 | 01 | 28 | 6.588e+17 | 3.486e+18 | 529.15 |
| riscv64 | 02 | 27 | 6.832e+17 | 3.55e+18 | 519.62 |
| riscv64 | 03 | 28 | 6.588e+17 | 3.486e+18 | 529.15 |
| riscv64 | 04 | 32 | 5.765e+17 | 3.261e+18 | 565.69 |
| riscv64 | 05 | 32 | 5.765e+17 | 3.261e+18 | 565.69 |
| riscv64 | 06 | 34 | 1.085e+18 | 4.406e+18 | 406.02 |
Two-way ANOVA (`metric ~ arch * id_label`):
| Term | Df | Sum Sq | Mean Sq | F value | Pr(>F) |
|---|---:|---:|---:|---:|---:|
| arch | 2 | 2.475e+36 | 1.237e+36 | 0.1045 | 0.9008 |
| id_label | 8 | 4.303e+37 | 5.379e+36 | 0.4543 | 0.888 |
| arch:id_label | 16 | 4.688e+37 | 2.93e+36 | 0.2475 | 0.9989 |
| Residuals | 741 | 8.772e+39 | 1.184e+37 | — | — |
## APIC ticks per heartbeat tick (`apic_delta`)
![APIC ticks per heartbeat tick](svg/apic_delta.svg)
| Architecture | Identity | n | mean | sd | CV% |
|---|---|---:|---:|---:|---:|
| amd64 | zuse | 20 | 2.9 | 1.119 | 38.59 |
| amd64 | rajames | 22 | 2.045 | 4.18 | 204.37 |
| amd64 | 00 | 23 | 2.304 | 3.363 | 145.96 |
| amd64 | 01 | 23 | 2.739 | 1.214 | 44.33 |
| amd64 | 02 | 25 | 3.12 | 2.505 | 80.30 |
| amd64 | 03 | 27 | 3.481 | 2.737 | 78.61 |
| amd64 | 04 | 30 | 3.1 | 1.605 | 51.77 |
| amd64 | 05 | 30 | 1.767 | 6.157 | 348.51 |
| amd64 | 06 | 28 | 2.357 | 5.87 | 249.04 |
| aarch64 | zuse | 20 | 4.45 | 2.585 | 58.09 |
| aarch64 | rajames | 14 | 4.786 | 2.517 | 52.59 |
| aarch64 | 00 | 23 | 3.348 | 7.158 | 213.81 |
| aarch64 | 01 | 24 | 2.75 | 7.651 | 278.23 |
| aarch64 | 02 | 34 | 2.618 | 9.711 | 370.98 |
| aarch64 | 03 | 26 | 3.538 | 3.301 | 93.30 |
| aarch64 | 04 | 30 | 4.3 | 2.409 | 56.02 |
| aarch64 | 05 | 30 | 3.4 | 5.083 | 149.49 |
| aarch64 | 06 | 29 | 2.414 | 10.24 | 424.30 |
| riscv64 | zuse | 20 | 1.35 | 0.6708 | 49.69 |
| riscv64 | rajames | 23 | 1.435 | 2.952 | 205.71 |
| riscv64 | 00 | 24 | 1.667 | 1.761 | 105.67 |
| riscv64 | 01 | 25 | 1.2 | 2.217 | 184.78 |
| riscv64 | 02 | 24 | 1.167 | 2.599 | 222.75 |
| riscv64 | 03 | 25 | 1.16 | 2.939 | 253.40 |
| riscv64 | 04 | 29 | 1.448 | 1.572 | 108.53 |
| riscv64 | 05 | 29 | 1.207 | 3.783 | 313.47 |
| riscv64 | 06 | 31 | 1.452 | 3.414 | 235.19 |
Two-way ANOVA (`metric ~ arch * id_label`):
| Term | Df | Sum Sq | Mean Sq | F value | Pr(>F) |
|---|---:|---:|---:|---:|---:|
| arch | 2 | 495.9 | 247.9 | 11.21 | 1.626e-05 |
| id_label | 8 | 71.4 | 8.924 | 0.4036 | 0.9187 |
| arch:id_label | 16 | 135.9 | 8.492 | 0.384 | 0.986 |
| Residuals | 661 | 1.462e+04 | 22.11 | — | — |
## TIME-TRUST (`time_trust`)
![TIME-TRUST](svg/time_trust.svg)
| Architecture | Identity | n | mean | sd | CV% |
|---|---|---:|---:|---:|---:|
| amd64 | zuse | 23 | 0.6132 | 0 | 0.00 |
| amd64 | rajames | 25 | 0.6132 | 0 | 0.00 |
| amd64 | 00 | 26 | 0.6132 | 0 | 0.00 |
| amd64 | 01 | 26 | 0.6132 | 0 | 0.00 |
| amd64 | 02 | 28 | 0.6132 | 0 | 0.00 |
| amd64 | 03 | 30 | 0.6132 | 0 | 0.00 |
| amd64 | 04 | 33 | 0.6132 | 0 | 0.00 |
| amd64 | 05 | 33 | 0.6132 | 0 | 0.00 |
| amd64 | 06 | 31 | 0.6132 | 0 | 0.00 |
| aarch64 | zuse | 23 | 1 | 0 | 0.00 |
| aarch64 | rajames | 16 | 1 | 0 | 0.00 |
| aarch64 | 00 | 26 | 1 | 0 | 0.00 |
| aarch64 | 01 | 27 | 1 | 0 | 0.00 |
| aarch64 | 02 | 37 | 1 | 0 | 0.00 |
| aarch64 | 03 | 29 | 1 | 0 | 0.00 |
| aarch64 | 04 | 33 | 1 | 0 | 0.00 |
| aarch64 | 05 | 33 | 1 | 0 | 0.00 |
| aarch64 | 06 | 32 | 1 | 0 | 0.00 |
| riscv64 | zuse | 23 | 1 | 0 | 0.00 |
| riscv64 | rajames | 26 | 1 | 0 | 0.00 |
| riscv64 | 00 | 27 | 1 | 0 | 0.00 |
| riscv64 | 01 | 28 | 1 | 0 | 0.00 |
| riscv64 | 02 | 27 | 1 | 0 | 0.00 |
| riscv64 | 03 | 28 | 1 | 0 | 0.00 |
| riscv64 | 04 | 32 | 1 | 0 | 0.00 |
| riscv64 | 05 | 32 | 1 | 0 | 0.00 |
| riscv64 | 06 | 34 | 1 | 0 | 0.00 |
Two-way ANOVA (`metric ~ arch * id_label`):
| Term | Df | Sum Sq | Mean Sq | F value | Pr(>F) |
|---|---:|---:|---:|---:|---:|
| arch | 2 | 25.48 | 12.74 | 5.379e+31 | 0 |
| id_label | 8 | 1.306e-30 | 1.632e-31 | 0.6892 | 0.7014 |
| arch:id_label | 16 | 2.579e-30 | 1.612e-31 | 0.6806 | 0.8149 |
| Residuals | 741 | 1.755e-28 | 2.369e-31 | — | — |
## Timing variance (`variance`)
![Timing variance](svg/variance.svg)
| Architecture | Identity | n | mean | sd | CV% |
|---|---|---:|---:|---:|---:|
| amd64 | zuse | 23 | 0.6307 | 0 | 0.00 |
| amd64 | rajames | 25 | 0.6307 | 0 | 0.00 |
| amd64 | 00 | 26 | 0.6307 | 0 | 0.00 |
| amd64 | 01 | 26 | 0.6307 | 0 | 0.00 |
| amd64 | 02 | 28 | 0.6307 | 0 | 0.00 |
| amd64 | 03 | 30 | 0.6307 | 0 | 0.00 |
| amd64 | 04 | 33 | 0.6307 | 0 | 0.00 |
| amd64 | 05 | 33 | 0.6307 | 0 | 0.00 |
| amd64 | 06 | 31 | 0.6307 | 0 | 0.00 |
| aarch64 | zuse | 23 | 0 | 0 | — |
| aarch64 | rajames | 16 | 0 | 0 | — |
| aarch64 | 00 | 26 | 0 | 0 | — |
| aarch64 | 01 | 27 | 0 | 0 | — |
| aarch64 | 02 | 37 | 0 | 0 | — |
| aarch64 | 03 | 29 | 0 | 0 | — |
| aarch64 | 04 | 33 | 0 | 0 | — |
| aarch64 | 05 | 33 | 0 | 0 | — |
| aarch64 | 06 | 32 | 0 | 0 | — |
| riscv64 | zuse | 23 | 0 | 0 | — |
| riscv64 | rajames | 26 | 0 | 0 | — |
| riscv64 | 00 | 27 | 0 | 0 | — |
| riscv64 | 01 | 28 | 0 | 0 | — |
| riscv64 | 02 | 27 | 0 | 0 | — |
| riscv64 | 03 | 28 | 0 | 0 | — |
| riscv64 | 04 | 32 | 0 | 0 | — |
| riscv64 | 05 | 32 | 0 | 0 | — |
| riscv64 | 06 | 34 | 0 | 0 | — |
Two-way ANOVA (`metric ~ arch * id_label`):
| Term | Df | Sum Sq | Mean Sq | F value | Pr(>F) |
|---|---:|---:|---:|---:|---:|
| arch | 2 | 67.75 | 33.88 | 4.293e+32 | 0 |
| id_label | 8 | 6.232e-31 | 7.79e-32 | 0.9873 | 0.4444 |
| arch:id_label | 16 | 1.249e-30 | 7.806e-32 | 0.9893 | 0.4663 |
| Residuals | 741 | 5.847e-29 | 7.89e-32 | — | — |
## Max VM call depth (`vm_call_depth_max`)
![Max VM call depth](svg/vm_call_depth_max.svg)
| Architecture | Identity | n | mean | sd | CV% |
|---|---|---:|---:|---:|---:|
| amd64 | zuse | 23 | 1 | 0 | 0.00 |
| amd64 | rajames | 25 | 0.96 | 0.2 | 20.83 |
| amd64 | 00 | 26 | 0.9615 | 0.1961 | 20.40 |
| amd64 | 01 | 26 | 0.9615 | 0.1961 | 20.40 |
| amd64 | 02 | 28 | 0.9643 | 0.189 | 19.60 |
| amd64 | 03 | 30 | 0.9667 | 0.1826 | 18.89 |
| amd64 | 04 | 33 | 0.9697 | 0.1741 | 17.95 |
| amd64 | 05 | 33 | 0.9697 | 0.1741 | 17.95 |
| amd64 | 06 | 31 | 0.9677 | 0.1796 | 18.56 |
| aarch64 | zuse | 23 | 1 | 0 | 0.00 |
| aarch64 | rajames | 16 | 1 | 0 | 0.00 |
| aarch64 | 00 | 26 | 0.9615 | 0.1961 | 20.40 |
| aarch64 | 01 | 27 | 0.963 | 0.1925 | 19.99 |
| aarch64 | 02 | 37 | 0.9459 | 0.2292 | 24.23 |
| aarch64 | 03 | 29 | 0.9655 | 0.1857 | 19.23 |
| aarch64 | 04 | 33 | 0.9697 | 0.1741 | 17.95 |
| aarch64 | 05 | 33 | 0.9394 | 0.2423 | 25.79 |
| aarch64 | 06 | 32 | 0.9688 | 0.1768 | 18.25 |
| riscv64 | zuse | 23 | 1 | 0 | 0.00 |
| riscv64 | rajames | 26 | 0.9231 | 0.2717 | 29.44 |
| riscv64 | 00 | 27 | 0.9259 | 0.2669 | 28.82 |
| riscv64 | 01 | 28 | 0.9643 | 0.189 | 19.60 |
| riscv64 | 02 | 27 | 0.963 | 0.1925 | 19.99 |
| riscv64 | 03 | 28 | 0.9643 | 0.189 | 19.60 |
| riscv64 | 04 | 32 | 0.9688 | 0.1768 | 18.25 |
| riscv64 | 05 | 32 | 0.9688 | 0.1768 | 18.25 |
| riscv64 | 06 | 34 | 0.9706 | 0.1715 | 17.67 |
Two-way ANOVA (`metric ~ arch * id_label`):
| Term | Df | Sum Sq | Mean Sq | F value | Pr(>F) |
|---|---:|---:|---:|---:|---:|
| arch | 2 | 0.007273 | 0.003636 | 0.1044 | 0.9009 |
| id_label | 8 | 0.1239 | 0.01549 | 0.4447 | 0.8942 |
| arch:id_label | 16 | 0.1016 | 0.006352 | 0.1823 | 0.9999 |
| Residuals | 741 | 25.82 | 0.03484 | — | — |
## Hera fleet heat (`hera_heat`)
![Hera fleet heat](svg/hera_heat.svg)
| Architecture | Identity | n | mean | sd | CV% |
|---|---|---:|---:|---:|---:|
| amd64 | zuse | 23 | 0.6532 | 0 | 0.00 |
| amd64 | rajames | 25 | 0.6532 | 0 | 0.00 |
| amd64 | 00 | 26 | 0.6532 | 0 | 0.00 |
| amd64 | 01 | 26 | 0.6532 | 0 | 0.00 |
| amd64 | 02 | 28 | 0.6532 | 0 | 0.00 |
| amd64 | 03 | 30 | 0.6532 | 0 | 0.00 |
| amd64 | 04 | 33 | 0.6532 | 0 | 0.00 |
| amd64 | 05 | 33 | 0.6532 | 0 | 0.00 |
| amd64 | 06 | 31 | 0.6532 | 0 | 0.00 |
| aarch64 | zuse | 23 | 0.6767 | 0 | 0.00 |
| aarch64 | rajames | 16 | 0.6767 | 0 | 0.00 |
| aarch64 | 00 | 26 | 0.6767 | 0 | 0.00 |
| aarch64 | 01 | 27 | 0.6767 | 0 | 0.00 |
| aarch64 | 02 | 37 | 0.6767 | 0 | 0.00 |
| aarch64 | 03 | 29 | 0.6767 | 0 | 0.00 |
| aarch64 | 04 | 33 | 0.6767 | 0 | 0.00 |
| aarch64 | 05 | 33 | 0.6767 | 0 | 0.00 |
| aarch64 | 06 | 32 | 0.6767 | 0 | 0.00 |
| riscv64 | zuse | 23 | 0.6384 | 0 | 0.00 |
| riscv64 | rajames | 26 | 0.6384 | 0 | 0.00 |
| riscv64 | 00 | 27 | 0.6384 | 0 | 0.00 |
| riscv64 | 01 | 28 | 0.6384 | 0 | 0.00 |
| riscv64 | 02 | 27 | 0.6384 | 0 | 0.00 |
| riscv64 | 03 | 28 | 0.6384 | 0 | 0.00 |
| riscv64 | 04 | 32 | 0.6384 | 0 | 0.00 |
| riscv64 | 05 | 32 | 0.6384 | 0 | 0.00 |
| riscv64 | 06 | 34 | 0.6384 | 0 | 0.00 |
Two-way ANOVA (`metric ~ arch * id_label`):
| Term | Df | Sum Sq | Mean Sq | F value | Pr(>F) |
|---|---:|---:|---:|---:|---:|
| arch | 2 | 0.1909 | 0.09546 | 3.106e+30 | 0 |
| id_label | 8 | 1.995e-31 | 2.494e-32 | 0.8114 | 0.5927 |
| arch:id_label | 16 | 3.935e-31 | 2.459e-32 | 0.8003 | 0.6863 |
| Residuals | 741 | 2.277e-29 | 3.073e-32 | — | — |
## Hermes fleet heat (`hermes_heat`)
![Hermes fleet heat](svg/hermes_heat.svg)
| Architecture | Identity | n | mean | sd | CV% |
|---|---|---:|---:|---:|---:|
| amd64 | zuse | 23 | 0.1692 | 0 | 0.00 |
| amd64 | rajames | 25 | 0.1692 | 0 | 0.00 |
| amd64 | 00 | 26 | 0.1692 | 0 | 0.00 |
| amd64 | 01 | 26 | 0.1692 | 0 | 0.00 |
| amd64 | 02 | 28 | 0.1692 | 0 | 0.00 |
| amd64 | 03 | 30 | 0.1692 | 0 | 0.00 |
| amd64 | 04 | 33 | 0.1692 | 0 | 0.00 |
| amd64 | 05 | 33 | 0.1692 | 0 | 0.00 |
| amd64 | 06 | 31 | 0.1692 | 0 | 0.00 |
| aarch64 | zuse | 23 | 0.1581 | 0 | 0.00 |
| aarch64 | rajames | 16 | 0.1581 | 0 | 0.00 |
| aarch64 | 00 | 26 | 0.1581 | 0 | 0.00 |
| aarch64 | 01 | 27 | 0.1581 | 0 | 0.00 |
| aarch64 | 02 | 37 | 0.1581 | 0 | 0.00 |
| aarch64 | 03 | 29 | 0.1581 | 0 | 0.00 |
| aarch64 | 04 | 33 | 0.1581 | 0 | 0.00 |
| aarch64 | 05 | 33 | 0.1581 | 0 | 0.00 |
| aarch64 | 06 | 32 | 0.1581 | 0 | 0.00 |
| riscv64 | zuse | 23 | 0.1762 | 0 | 0.00 |
| riscv64 | rajames | 26 | 0.1762 | 0 | 0.00 |
| riscv64 | 00 | 27 | 0.1762 | 0 | 0.00 |
| riscv64 | 01 | 28 | 0.1762 | 0 | 0.00 |
| riscv64 | 02 | 27 | 0.1762 | 0 | 0.00 |
| riscv64 | 03 | 28 | 0.1762 | 0 | 0.00 |
| riscv64 | 04 | 32 | 0.1762 | 0 | 0.00 |
| riscv64 | 05 | 32 | 0.1762 | 0 | 0.00 |
| riscv64 | 06 | 34 | 0.1762 | 0 | 0.00 |
Two-way ANOVA (`metric ~ arch * id_label`):
| Term | Df | Sum Sq | Mean Sq | F value | Pr(>F) |
|---|---:|---:|---:|---:|---:|
| arch | 2 | 0.04251 | 0.02125 | 1.491e+31 | 0 |
| id_label | 8 | 9.968e-33 | 1.246e-33 | 0.8744 | 0.5376 |
| arch:id_label | 16 | 1.967e-32 | 1.229e-33 | 0.8627 | 0.6132 |
| Residuals | 741 | 1.056e-30 | 1.425e-33 | — | — |
## Artemis fleet heat (`artemis_heat`)
![Artemis fleet heat](svg/artemis_heat.svg)
| Architecture | Identity | n | mean | sd | CV% |
|---|---|---:|---:|---:|---:|
| amd64 | zuse | 23 | 1.545e+17 | 5.118e+17 | 331.32 |
| amd64 | rajames | 25 | 1.421e+17 | 4.919e+17 | 346.11 |
| amd64 | 00 | 26 | 2.05e+17 | 5.788e+17 | 282.37 |
| amd64 | 01 | 26 | 4.1e+08 | 7.633e+08 | 186.19 |
| amd64 | 02 | 28 | 1.269e+17 | 4.659e+17 | 367.17 |
| amd64 | 03 | 30 | 5.922e+16 | 3.244e+17 | 547.72 |
| amd64 | 04 | 33 | 1.077e+17 | 4.305e+17 | 399.80 |
| amd64 | 05 | 33 | 1.615e+17 | 5.186e+17 | 321.13 |
| amd64 | 06 | 31 | 1.719e+17 | 5.339e+17 | 310.56 |
| aarch64 | zuse | 23 | 7.184e+16 | 3.445e+17 | 479.58 |
| aarch64 | rajames | 16 | 2.065e+17 | 5.643e+17 | 273.25 |
| aarch64 | 00 | 26 | 1.906e+17 | 5.383e+17 | 282.37 |
| aarch64 | 01 | 27 | 3.671e+08 | 6.999e+08 | 190.65 |
| aarch64 | 02 | 37 | 8.931e+16 | 3.788e+17 | 424.10 |
| aarch64 | 03 | 29 | 5.697e+16 | 3.068e+17 | 538.52 |
| aarch64 | 04 | 33 | 1.001e+17 | 4.003e+17 | 399.80 |
| aarch64 | 05 | 33 | 1.502e+17 | 4.823e+17 | 321.13 |
| aarch64 | 06 | 32 | 1.549e+17 | 4.893e+17 | 315.89 |
| riscv64 | zuse | 23 | 8.062e+16 | 3.866e+17 | 479.58 |
| riscv64 | rajames | 26 | 2.853e+08 | 6.822e+08 | 239.16 |
| riscv64 | 00 | 27 | 1.374e+17 | 4.949e+17 | 360.29 |
| riscv64 | 01 | 28 | 3.973e+08 | 7.748e+08 | 195.00 |
| riscv64 | 02 | 27 | 6.868e+16 | 3.568e+17 | 519.62 |
| riscv64 | 03 | 28 | 6.622e+16 | 3.504e+17 | 529.15 |
| riscv64 | 04 | 32 | 5.794e+16 | 3.278e+17 | 565.69 |
| riscv64 | 05 | 32 | 1.159e+17 | 4.56e+17 | 393.50 |
| riscv64 | 06 | 34 | 1.636e+17 | 5.338e+17 | 326.29 |
Two-way ANOVA (`metric ~ arch * id_label`):
| Term | Df | Sum Sq | Mean Sq | F value | Pr(>F) |
|---|---:|---:|---:|---:|---:|
| arch | 2 | 2.807e+35 | 1.404e+35 | 0.801 | 0.4492 |
| id_label | 8 | 1.988e+36 | 2.486e+35 | 1.419 | 0.1849 |
| arch:id_label | 16 | 4.978e+35 | 3.111e+34 | 0.1776 | 0.9999 |
| Residuals | 741 | 1.298e+38 | 1.752e+35 | — | — |