Gauntlet #340: menu layout polish; commit first captured baseline; closes #340

Menu rows no longer clip at the right edge (baseline text shortened, info column
moved left). Commit the first real windowed baseline (run of 2026-07-02 on the
dev machine, all six trials scored, full get_metrics snapshots at peak) with a
provenance/variance caveat recorded as DESIGN.md deviation 10 -- scores for
callback-heavy trials vary several-fold on a busy desktop, so recapture on a
quiet system before trusting fine-grained deltas.

The Gauntlet delivers: interactive menu/trial/results scenes with the
instrument-panel HUD (sparkline, budget-colored FPS, load/ramp readout), six
subsystem stress trials with geometric auto-ramp and p95-vs-16.67ms scoring,
JSON baseline diffing with letter grades, and a headless suite test.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
John McCardle 2026-07-02 20:46:32 -04:00
commit 506ad57cc6
3 changed files with 170 additions and 2 deletions

View file

@ -0,0 +1,161 @@
{
"schema": 1,
"version": "0.2.8",
"commit": "7b943ed",
"date": "2026-07-02",
"platform": "Linux-6.1.0-42-amd64-x86_64-with-glibc2.36",
"budget_ms": 16.67,
"trials": {
"entity_swarm": {
"unit": "entities",
"max_load": 10555,
"p50_ms": 4.147,
"p95_ms": 11.66,
"samples": 91,
"metrics_at_peak": {
"frame_time": 1.2350000143051147,
"avg_frame_time": 1.410433053970337,
"fps": 709,
"draw_calls": 0,
"ui_elements": 0,
"visible_elements": 0,
"grid_render_time": 0.0,
"entity_render_time": 0.0,
"fov_overlay_time": 0.0,
"python_time": 0.0,
"animation_time": 0.0,
"grid_cells_rendered": 0,
"entities_rendered": 0,
"total_entities": 0,
"current_frame": 26629,
"runtime": 37.08416748046875
}
},
"animation_storm": {
"unit": "animations",
"max_load": 154,
"p50_ms": 0.711,
"p95_ms": 6.537,
"samples": 121,
"metrics_at_peak": {
"frame_time": 6.5370001792907715,
"avg_frame_time": 0.8120667338371277,
"fps": 1231,
"draw_calls": 0,
"ui_elements": 0,
"visible_elements": 0,
"grid_render_time": 0.0,
"entity_render_time": 0.0,
"fov_overlay_time": 0.0,
"python_time": 0.0,
"animation_time": 0.0,
"grid_cells_rendered": 0,
"entities_rendered": 0,
"total_entities": 0,
"current_frame": 38498,
"runtime": 53.4407844543457
}
},
"grid_titan": {
"unit": "grid side",
"max_load": 3111,
"p50_ms": 6.431,
"p95_ms": 13.068,
"samples": 102,
"metrics_at_peak": {
"frame_time": 6.113999843597412,
"avg_frame_time": 6.679051399230957,
"fps": 149,
"draw_calls": 0,
"ui_elements": 0,
"visible_elements": 0,
"grid_render_time": 0.0,
"entity_render_time": 0.0,
"fov_overlay_time": 0.0,
"python_time": 0.0,
"animation_time": 0.0,
"grid_cells_rendered": 0,
"entities_rendered": 0,
"total_entities": 0,
"current_frame": 67962,
"runtime": 112.59493255615234
}
},
"pathfinder_rush": {
"unit": "queries/tick",
"max_load": 450,
"p50_ms": 0.976,
"p95_ms": 11.755,
"samples": 120,
"metrics_at_peak": {
"frame_time": 0.8529999852180481,
"avg_frame_time": 1.2676669359207153,
"fps": 788,
"draw_calls": 0,
"ui_elements": 0,
"visible_elements": 0,
"grid_render_time": 0.0,
"entity_render_time": 0.0,
"fov_overlay_time": 0.0,
"python_time": 0.0,
"animation_time": 0.0,
"grid_cells_rendered": 0,
"entities_rendered": 0,
"total_entities": 0,
"current_frame": 107925,
"runtime": 220.12948608398438
}
},
"ui_avalanche": {
"unit": "elements",
"max_load": 4123,
"p50_ms": 7.403,
"p95_ms": 10.3,
"samples": 100,
"metrics_at_peak": {
"frame_time": 7.5889997482299805,
"avg_frame_time": 8.624098777770996,
"fps": 115,
"draw_calls": 0,
"ui_elements": 0,
"visible_elements": 0,
"grid_render_time": 0.0,
"entity_render_time": 0.0,
"fov_overlay_time": 0.0,
"python_time": 0.0,
"animation_time": 0.0,
"grid_cells_rendered": 0,
"entities_rendered": 0,
"total_entities": 0,
"current_frame": 130350,
"runtime": 253.55264282226562
}
},
"sightline_siege": {
"unit": "FOV entities",
"max_load": 537,
"p50_ms": 1.144,
"p95_ms": 10.743,
"samples": 120,
"metrics_at_peak": {
"frame_time": 8.36299991607666,
"avg_frame_time": 1.2766335010528564,
"fps": 783,
"draw_calls": 0,
"ui_elements": 0,
"visible_elements": 0,
"grid_render_time": 0.0,
"entity_render_time": 0.0,
"fov_overlay_time": 0.0,
"python_time": 0.0,
"animation_time": 0.0,
"grid_cells_rendered": 0,
"entities_rendered": 0,
"total_entities": 0,
"current_frame": 153274,
"runtime": 280.9121398925781
}
}
},
"gauntlet_score_vs_baseline": 1.0
}

View file

@ -40,6 +40,13 @@ preserved verbatim after this section.)*
9. **Pathfinder Rush starts its ramp at 1 query/tick** (spec table implied a larger
start via the shared default). Queries burst on one 100 ms tick, so even a handful
spike a single frame; starting at 1 lets the ramp find the true sustainable level.
10. **Committed baseline provenance + variance caveat.** The committed
`tests/benchmarks/baseline/gauntlet/baseline.json` is real data from a windowed run
on the implementer's machine (2026-07-02, live desktop with Xorg/Firefox running).
Even with the strike-based bail, run-to-run scores for callback-heavy trials
(notably ANIMATION STORM) varied several-fold between runs on the busy desktop.
Treat per-trial deltas below ~2x as noise until a baseline is captured on a quiet
system; delete baseline.json and re-run `run_gauntlet.py` to recapture.
---

View file

@ -232,8 +232,8 @@ class Gauntlet:
info = "unit: %s" % cls.unit
base = bt.get(cls.key)
if base:
info += " baseline: %d %s" % (base.get("max_load", 0), cls.unit)
ic = mcrfpy.Caption(text=info, pos=(690, y + 4))
info += " baseline: %d" % base.get("max_load", 0)
ic = mcrfpy.Caption(text=info, pos=(640, y + 4))
ic.font_size = 14
ic.fill_color = color(DIM)
scene.children.append(ic)