diff --git a/.pi/journal.md b/.pi/journal.md index 8551086..a52f685 100644 --- a/.pi/journal.md +++ b/.pi/journal.md @@ -510,3 +510,36 @@ Commits: `a84319b` (fix(mods): MidnightLib 1.10.0 + `analysis/state/`), `e18bd3c Next: owner calls on noise controls (see harness README / session report), then S4 build → B0 (`bench.py session --variant C0 --plan s1 --reps 3 --label B0`, ×3 sessions) → matrix. + +## Session 2026-10-16 — bench world finished, harness v3, matrix running + +Owner: stop the dedicated server while benching (done via console `stop`; tmux +`onion-mc` is gone — restart with `./start.sh` in tmux when benching ends; packwiz will +pull MidnightLib 1.10.0, jar also dropped in `mods/`). Gamescope integration approved. + +- **Harness**: `--display gamescope-headless` default @1920x1080 (~2 % cost vs desktop, + isolates from the shared KDE Wayland desktop). Per-session `--shader/--shader-options/ + --dh/--disable-mods/--add-mods/--world-zip` with a crash-safe restore journal + (`bench.py restore`). Plan forces **spectator** — elevated scene cameras previously fell + (S4 measured the sea floor at y=34). `shader_not_loaded` flag. `matrix.py` + + `matrix.toml` = resumable B0–B14 runner; B7 profiles generated from pack + `profile.*` lines (`gen_shader_profiles.py`); B12b trial jars in `~/onion-bench/trials/`. + Post-join settle 45 s (rep 1 still warming at 10 s). Commits `c6341d0`, `4fa9a6a`. +- **Bench world** built headlessly on `~/onion-bench/server-bench` via RCON: + S4 = 4 Sable sub-levels (5×7×15 planks/glass, levitite floor + 2 interior layers — + the 1-layer design sank ~14 blocks per physics wake), via `/sable assemble area`; + stable at y≈169.24 across restarts and a 60 s client session. Removed 370 stray + force-loaded chunks (S2/S3/S4 ticked in every scene). DH LODs pre-generated with + `/dh pregen start minecraft:overworld 0 256` at x=0 and x=3680 (1.2 GB sqlite). + S2 rotates (Speed 16 sampled), S3 = 30 villagers. + Zips in `~/onion-bench/worlds/` (sha256): + `bench-world-v1.zip` 144caf5fcdfea1a0eac0c787fdcded949e1a67df6ac112400f37be30ce7fb76e, + `-s4-1.zip` 213b9b8871be527d0b5ac2e34615e8c2c1e3b206277fb37549a3014e2b895a38, + `-s4-0.zip` 6b2a2bbd16f9f2e5aba34d53b09752d30fb7f9c3a97c24c46131b54d12bdc234. +- **Matrix** run 1 (tmux `bench-matrix`, log `~/onion-bench/results/matrix-run1.log`): + B0,B1,B2,B3,B4,B5,B6,B7(noshader),B8–B12a. B0 noise (settle 45): p99 spread 0.40 ms, + 1%-low spread 6.6 fps. **B2: C1 beats C0 on every scene** (S1 p99 8.23 vs 9.33; + S3 1%-low 186 vs 110) → no bisect stop. Early B3: dh-qlow wins S1, dh-ssao loses, + dh-thr4 loses S5 (threads stay 2). Analyze with `--since 2026-10-16T22:24`. +- Remaining after run 1: B4h (`--param gc=`), B7 shader rows, B12b, B13, B14, ship, + owner report. Analysis proxy-only; noise floor gpu_dpm_auto (no root). diff --git a/analysis/client-perf/harness/analyze.py b/analysis/client-perf/harness/analyze.py index 252e4ec..225a531 100644 --- a/analysis/client-perf/harness/analyze.py +++ b/analysis/client-perf/harness/analyze.py @@ -176,8 +176,11 @@ def main(argv=None): ap.add_argument("--noise", help="label whose spread is the win threshold, e.g. B0") ap.add_argument("--include-invalid", action="store_true") ap.add_argument("--exclude-backup", action="store_true") + ap.add_argument("--since", help="only rows with ts >= this ISO time, e.g. 2026-10-16T22:24") a = ap.parse_args(argv) rows = load_rows(a.file) + if a.since: + rows = [r for r in rows if r.get("ts", "") >= a.since] total = len(rows) if not a.include_invalid: rows = [r for r in rows if is_valid(r, a.exclude_backup)]