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:
parent
1aa6624758
commit
506ad57cc6
3 changed files with 170 additions and 2 deletions
161
tests/benchmarks/baseline/gauntlet/baseline.json
Normal file
161
tests/benchmarks/baseline/gauntlet/baseline.json
Normal 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
|
||||
}
|
||||
|
|
@ -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.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue