docs: client-perf analysis, bench harness and work journal

Everything the next agent needs to run the Phase 2 optimisation loop on a
machine that can launch the client:

- analysis/client-perf/: LEVERS (ranked levers + corrections), BENCH-MATRIX
  (world, scenes, config IDs, blocks B0-B14 with decision rules),
  PLAYER-TUNING, SPAWN-TUNING, research briefs, the jar scanner and its
  output, observed default configs, and proposed-configs/ (build.py
  generates tiers and bench variants and fails on unknown keys;
  apply_variant.py applies a variant and merges options.txt).
- analysis/client-perf/bench/onion-bench/: bench-world datapack (scene
  teleports, Create grid, mob pen, sound storm, 120 s teleport tour).
- analysis/audit/: the static recipe/dependency audit, including gen_fixes.py,
  which generates the shipped Paxi datapack and was never tracked.
- phase0/: per-machine measurement harness (Steam Deck, 7700K/1060,
  6700K/1080 Ti).
- .pi/journal.md: running work log; read it first.

All of it is packwizignored, so nothing here ships to players.
This commit is contained in:
logan committed 2026-10-14 18:15:32 -04:00
1 parent d80f85b3f6
commit 611a1a5952
102 files changed
+25853

No files matched your search

@@ -0,0 +1 @@
tp @a 0 200 0 0 20
@@ -0,0 +1 @@
tp @a 1023 165 -10 0 40
@@ -0,0 +1,98 @@
# Create floor: 2304 kinetic block entities. Verify they rotate (see BENCH-MATRIX.md).
fill 998 150 -1 1048 150 48 minecraft:smooth_stone
fill 1000 151 0 1047 151 0 create:shaft[axis=x]
setblock 999 151 0 create:creative_motor[facing=east]
fill 1000 151 1 1047 151 1 create:cogwheel[axis=x]
setblock 999 151 1 create:creative_motor[facing=east]
fill 1000 151 2 1047 151 2 create:shaft[axis=x]
setblock 999 151 2 create:creative_motor[facing=east]
fill 1000 151 3 1047 151 3 create:cogwheel[axis=x]
setblock 999 151 3 create:creative_motor[facing=east]
fill 1000 151 4 1047 151 4 create:shaft[axis=x]
setblock 999 151 4 create:creative_motor[facing=east]
fill 1000 151 5 1047 151 5 create:cogwheel[axis=x]
setblock 999 151 5 create:creative_motor[facing=east]
fill 1000 151 6 1047 151 6 create:shaft[axis=x]
setblock 999 151 6 create:creative_motor[facing=east]
fill 1000 151 7 1047 151 7 create:cogwheel[axis=x]
setblock 999 151 7 create:creative_motor[facing=east]
fill 1000 151 8 1047 151 8 create:shaft[axis=x]
setblock 999 151 8 create:creative_motor[facing=east]
fill 1000 151 9 1047 151 9 create:cogwheel[axis=x]
setblock 999 151 9 create:creative_motor[facing=east]
fill 1000 151 10 1047 151 10 create:shaft[axis=x]
setblock 999 151 10 create:creative_motor[facing=east]
fill 1000 151 11 1047 151 11 create:cogwheel[axis=x]
setblock 999 151 11 create:creative_motor[facing=east]
fill 1000 151 12 1047 151 12 create:shaft[axis=x]
setblock 999 151 12 create:creative_motor[facing=east]
fill 1000 151 13 1047 151 13 create:cogwheel[axis=x]
setblock 999 151 13 create:creative_motor[facing=east]
fill 1000 151 14 1047 151 14 create:shaft[axis=x]
setblock 999 151 14 create:creative_motor[facing=east]
fill 1000 151 15 1047 151 15 create:cogwheel[axis=x]
setblock 999 151 15 create:creative_motor[facing=east]
fill 1000 151 16 1047 151 16 create:shaft[axis=x]
setblock 999 151 16 create:creative_motor[facing=east]
fill 1000 151 17 1047 151 17 create:cogwheel[axis=x]
setblock 999 151 17 create:creative_motor[facing=east]
fill 1000 151 18 1047 151 18 create:shaft[axis=x]
setblock 999 151 18 create:creative_motor[facing=east]
fill 1000 151 19 1047 151 19 create:cogwheel[axis=x]
setblock 999 151 19 create:creative_motor[facing=east]
fill 1000 151 20 1047 151 20 create:shaft[axis=x]
setblock 999 151 20 create:creative_motor[facing=east]
fill 1000 151 21 1047 151 21 create:cogwheel[axis=x]
setblock 999 151 21 create:creative_motor[facing=east]
fill 1000 151 22 1047 151 22 create:shaft[axis=x]
setblock 999 151 22 create:creative_motor[facing=east]
fill 1000 151 23 1047 151 23 create:cogwheel[axis=x]
setblock 999 151 23 create:creative_motor[facing=east]
fill 1000 151 24 1047 151 24 create:shaft[axis=x]
setblock 999 151 24 create:creative_motor[facing=east]
fill 1000 151 25 1047 151 25 create:cogwheel[axis=x]
setblock 999 151 25 create:creative_motor[facing=east]
fill 1000 151 26 1047 151 26 create:shaft[axis=x]
setblock 999 151 26 create:creative_motor[facing=east]
fill 1000 151 27 1047 151 27 create:cogwheel[axis=x]
setblock 999 151 27 create:creative_motor[facing=east]
fill 1000 151 28 1047 151 28 create:shaft[axis=x]
setblock 999 151 28 create:creative_motor[facing=east]
fill 1000 151 29 1047 151 29 create:cogwheel[axis=x]
setblock 999 151 29 create:creative_motor[facing=east]
fill 1000 151 30 1047 151 30 create:shaft[axis=x]
setblock 999 151 30 create:creative_motor[facing=east]
fill 1000 151 31 1047 151 31 create:cogwheel[axis=x]
setblock 999 151 31 create:creative_motor[facing=east]
fill 1000 151 32 1047 151 32 create:shaft[axis=x]
setblock 999 151 32 create:creative_motor[facing=east]
fill 1000 151 33 1047 151 33 create:cogwheel[axis=x]
setblock 999 151 33 create:creative_motor[facing=east]
fill 1000 151 34 1047 151 34 create:shaft[axis=x]
setblock 999 151 34 create:creative_motor[facing=east]
fill 1000 151 35 1047 151 35 create:cogwheel[axis=x]
setblock 999 151 35 create:creative_motor[facing=east]
fill 1000 151 36 1047 151 36 create:shaft[axis=x]
setblock 999 151 36 create:creative_motor[facing=east]
fill 1000 151 37 1047 151 37 create:cogwheel[axis=x]
setblock 999 151 37 create:creative_motor[facing=east]
fill 1000 151 38 1047 151 38 create:shaft[axis=x]
setblock 999 151 38 create:creative_motor[facing=east]
fill 1000 151 39 1047 151 39 create:cogwheel[axis=x]
setblock 999 151 39 create:creative_motor[facing=east]
fill 1000 151 40 1047 151 40 create:shaft[axis=x]
setblock 999 151 40 create:creative_motor[facing=east]
fill 1000 151 41 1047 151 41 create:cogwheel[axis=x]
setblock 999 151 41 create:creative_motor[facing=east]
fill 1000 151 42 1047 151 42 create:shaft[axis=x]
setblock 999 151 42 create:creative_motor[facing=east]
fill 1000 151 43 1047 151 43 create:cogwheel[axis=x]
setblock 999 151 43 create:creative_motor[facing=east]
fill 1000 151 44 1047 151 44 create:shaft[axis=x]
setblock 999 151 44 create:creative_motor[facing=east]
fill 1000 151 45 1047 151 45 create:cogwheel[axis=x]
setblock 999 151 45 create:creative_motor[facing=east]
fill 1000 151 46 1047 151 46 create:shaft[axis=x]
setblock 999 151 46 create:creative_motor[facing=east]
fill 1000 151 47 1047 151 47 create:cogwheel[axis=x]
setblock 999 151 47 create:creative_motor[facing=east]
@@ -0,0 +1 @@
tp @a 2011 158 -6 0 35
@@ -0,0 +1,84 @@
# Mob pen: 30 villagers, 15 cows, 15 sheep, 10 torch-carrying allays, 10 dropped torches.
fill 1999 150 -1 2024 157 24 minecraft:glass hollow
fill 2000 150 0 2023 150 23 minecraft:grass_block
kill @e[type=!player,x=1990,y=140,z=-10,dx=45,dy=30,dz=45]
summon minecraft:villager 2002 151 2 {PersistenceRequired:1b}
summon minecraft:villager 2004 151 2 {PersistenceRequired:1b}
summon minecraft:villager 2006 151 2 {PersistenceRequired:1b}
summon minecraft:villager 2008 151 2 {PersistenceRequired:1b}
summon minecraft:villager 2010 151 2 {PersistenceRequired:1b}
summon minecraft:villager 2012 151 2 {PersistenceRequired:1b}
summon minecraft:villager 2014 151 2 {PersistenceRequired:1b}
summon minecraft:villager 2016 151 2 {PersistenceRequired:1b}
summon minecraft:villager 2018 151 2 {PersistenceRequired:1b}
summon minecraft:villager 2020 151 2 {PersistenceRequired:1b}
summon minecraft:villager 2002 151 5 {PersistenceRequired:1b}
summon minecraft:villager 2004 151 5 {PersistenceRequired:1b}
summon minecraft:villager 2006 151 5 {PersistenceRequired:1b}
summon minecraft:villager 2008 151 5 {PersistenceRequired:1b}
summon minecraft:villager 2010 151 5 {PersistenceRequired:1b}
summon minecraft:villager 2012 151 5 {PersistenceRequired:1b}
summon minecraft:villager 2014 151 5 {PersistenceRequired:1b}
summon minecraft:villager 2016 151 5 {PersistenceRequired:1b}
summon minecraft:villager 2018 151 5 {PersistenceRequired:1b}
summon minecraft:villager 2020 151 5 {PersistenceRequired:1b}
summon minecraft:villager 2002 151 8 {PersistenceRequired:1b}
summon minecraft:villager 2004 151 8 {PersistenceRequired:1b}
summon minecraft:villager 2006 151 8 {PersistenceRequired:1b}
summon minecraft:villager 2008 151 8 {PersistenceRequired:1b}
summon minecraft:villager 2010 151 8 {PersistenceRequired:1b}
summon minecraft:villager 2012 151 8 {PersistenceRequired:1b}
summon minecraft:villager 2014 151 8 {PersistenceRequired:1b}
summon minecraft:villager 2016 151 8 {PersistenceRequired:1b}
summon minecraft:villager 2018 151 8 {PersistenceRequired:1b}
summon minecraft:villager 2020 151 8 {PersistenceRequired:1b}
summon minecraft:cow 2002 151 12 {PersistenceRequired:1b}
summon minecraft:cow 2006 151 12 {PersistenceRequired:1b}
summon minecraft:cow 2010 151 12 {PersistenceRequired:1b}
summon minecraft:cow 2014 151 12 {PersistenceRequired:1b}
summon minecraft:cow 2018 151 12 {PersistenceRequired:1b}
summon minecraft:cow 2002 151 15 {PersistenceRequired:1b}
summon minecraft:cow 2006 151 15 {PersistenceRequired:1b}
summon minecraft:cow 2010 151 15 {PersistenceRequired:1b}
summon minecraft:cow 2014 151 15 {PersistenceRequired:1b}
summon minecraft:cow 2018 151 15 {PersistenceRequired:1b}
summon minecraft:cow 2002 151 18 {PersistenceRequired:1b}
summon minecraft:cow 2006 151 18 {PersistenceRequired:1b}
summon minecraft:cow 2010 151 18 {PersistenceRequired:1b}
summon minecraft:cow 2014 151 18 {PersistenceRequired:1b}
summon minecraft:cow 2018 151 18 {PersistenceRequired:1b}
summon minecraft:sheep 2003 151 13 {PersistenceRequired:1b}
summon minecraft:sheep 2007 151 13 {PersistenceRequired:1b}
summon minecraft:sheep 2011 151 13 {PersistenceRequired:1b}
summon minecraft:sheep 2015 151 13 {PersistenceRequired:1b}
summon minecraft:sheep 2019 151 13 {PersistenceRequired:1b}
summon minecraft:sheep 2003 151 16 {PersistenceRequired:1b}
summon minecraft:sheep 2007 151 16 {PersistenceRequired:1b}
summon minecraft:sheep 2011 151 16 {PersistenceRequired:1b}
summon minecraft:sheep 2015 151 16 {PersistenceRequired:1b}
summon minecraft:sheep 2019 151 16 {PersistenceRequired:1b}
summon minecraft:sheep 2003 151 19 {PersistenceRequired:1b}
summon minecraft:sheep 2007 151 19 {PersistenceRequired:1b}
summon minecraft:sheep 2011 151 19 {PersistenceRequired:1b}
summon minecraft:sheep 2015 151 19 {PersistenceRequired:1b}
summon minecraft:sheep 2019 151 19 {PersistenceRequired:1b}
summon minecraft:allay 2002 154 20 {PersistenceRequired:1b,HandItems:[{id:"minecraft:torch",count:1},{}]}
summon minecraft:allay 2004 154 20 {PersistenceRequired:1b,HandItems:[{id:"minecraft:torch",count:1},{}]}
summon minecraft:allay 2006 154 20 {PersistenceRequired:1b,HandItems:[{id:"minecraft:torch",count:1},{}]}
summon minecraft:allay 2008 154 20 {PersistenceRequired:1b,HandItems:[{id:"minecraft:torch",count:1},{}]}
summon minecraft:allay 2010 154 20 {PersistenceRequired:1b,HandItems:[{id:"minecraft:torch",count:1},{}]}
summon minecraft:allay 2012 154 20 {PersistenceRequired:1b,HandItems:[{id:"minecraft:torch",count:1},{}]}
summon minecraft:allay 2014 154 20 {PersistenceRequired:1b,HandItems:[{id:"minecraft:torch",count:1},{}]}
summon minecraft:allay 2016 154 20 {PersistenceRequired:1b,HandItems:[{id:"minecraft:torch",count:1},{}]}
summon minecraft:allay 2018 154 20 {PersistenceRequired:1b,HandItems:[{id:"minecraft:torch",count:1},{}]}
summon minecraft:allay 2020 154 20 {PersistenceRequired:1b,HandItems:[{id:"minecraft:torch",count:1},{}]}
summon minecraft:item 2002 151 22 {Age:-32768s,PickupDelay:32767s,Item:{id:"minecraft:torch",count:1}}
summon minecraft:item 2004 151 22 {Age:-32768s,PickupDelay:32767s,Item:{id:"minecraft:torch",count:1}}
summon minecraft:item 2006 151 22 {Age:-32768s,PickupDelay:32767s,Item:{id:"minecraft:torch",count:1}}
summon minecraft:item 2008 151 22 {Age:-32768s,PickupDelay:32767s,Item:{id:"minecraft:torch",count:1}}
summon minecraft:item 2010 151 22 {Age:-32768s,PickupDelay:32767s,Item:{id:"minecraft:torch",count:1}}
summon minecraft:item 2012 151 22 {Age:-32768s,PickupDelay:32767s,Item:{id:"minecraft:torch",count:1}}
summon minecraft:item 2014 151 22 {Age:-32768s,PickupDelay:32767s,Item:{id:"minecraft:torch",count:1}}
summon minecraft:item 2016 151 22 {Age:-32768s,PickupDelay:32767s,Item:{id:"minecraft:torch",count:1}}
summon minecraft:item 2018 151 22 {Age:-32768s,PickupDelay:32767s,Item:{id:"minecraft:torch",count:1}}
summon minecraft:item 2020 151 22 {Age:-32768s,PickupDelay:32767s,Item:{id:"minecraft:torch",count:1}}
@@ -0,0 +1 @@
tp @a 3000 172 -10 0 5
@@ -0,0 +1,12 @@
# Run once after creating the bench world (creative, cheats on).
gamerule doDaylightCycle false
gamerule doWeatherCycle false
gamerule doMobSpawning false
gamerule doPatrolSpawning false
gamerule doTraderSpawning false
gamerule doInsomnia false
gamerule doFireTick false
gamerule announceAdvancements false
time set 6000
weather clear
difficulty normal
@@ -0,0 +1 @@
schedule clear bench:storm_tick
@@ -0,0 +1 @@
function bench:storm_tick
@@ -0,0 +1,26 @@
# Called every tick while the storm runs. Stop with bench:storm_off.
playsound create:mechanical_press_activation block @a 1004 151 4 1 1
playsound create:mechanical_press_activation block @a 1020 151 4 1 1
playsound create:mechanical_press_activation block @a 1036 151 4 1 1
playsound create:mechanical_press_activation block @a 1044 151 20 1 1
playsound create:mechanical_press_activation block @a 1004 151 28 1 1
playsound create:mechanical_press_activation block @a 1020 151 44 1 1
playsound create:mechanical_press_activation block @a 1036 151 36 1 1
playsound create:mechanical_press_activation block @a 1044 151 44 1 1
playsound create:cogs block @a 1004 151 4 1 1
playsound create:cogs block @a 1020 151 4 1 1
playsound create:cogs block @a 1036 151 4 1 1
playsound create:cogs block @a 1044 151 20 1 1
playsound create:cogs block @a 1004 151 28 1 1
playsound create:cogs block @a 1020 151 44 1 1
playsound create:cogs block @a 1036 151 36 1 1
playsound create:cogs block @a 1044 151 44 1 1
playsound create:mixing block @a 1004 151 4 1 1
playsound create:mixing block @a 1020 151 4 1 1
playsound create:mixing block @a 1036 151 4 1 1
playsound create:mixing block @a 1044 151 20 1 1
playsound create:mixing block @a 1004 151 28 1 1
playsound create:mixing block @a 1020 151 44 1 1
playsound create:mixing block @a 1036 151 36 1 1
playsound create:mixing block @a 1044 151 44 1 1
schedule function bench:storm_tick 1t
@@ -0,0 +1,2 @@
tp @a 0 180 0 -90 15
schedule function bench:tour/step1 100t
@@ -0,0 +1,2 @@
tp @a 160 180 0 -90 15
schedule function bench:tour/step2 100t
@@ -0,0 +1,2 @@
tp @a 1600 180 0 -90 15
schedule function bench:tour/step11 100t
@@ -0,0 +1,2 @@
tp @a 1760 180 0 -90 15
schedule function bench:tour/step12 100t
@@ -0,0 +1,2 @@
tp @a 1920 180 0 -90 15
schedule function bench:tour/step13 100t
@@ -0,0 +1,2 @@
tp @a 2080 180 0 -90 15
schedule function bench:tour/step14 100t
@@ -0,0 +1,2 @@
tp @a 2240 180 0 -90 15
schedule function bench:tour/step15 100t
@@ -0,0 +1,2 @@
tp @a 2400 180 0 -90 15
schedule function bench:tour/step16 100t
@@ -0,0 +1,2 @@
tp @a 2560 180 0 -90 15
schedule function bench:tour/step17 100t
@@ -0,0 +1,2 @@
tp @a 2720 180 0 -90 15
schedule function bench:tour/step18 100t
@@ -0,0 +1,2 @@
tp @a 2880 180 0 -90 15
schedule function bench:tour/step19 100t
@@ -0,0 +1,2 @@
tp @a 3040 180 0 -90 15
schedule function bench:tour/step20 100t
@@ -0,0 +1,2 @@
tp @a 320 180 0 -90 15
schedule function bench:tour/step3 100t
@@ -0,0 +1,2 @@
tp @a 3200 180 0 -90 15
schedule function bench:tour/step21 100t
@@ -0,0 +1,2 @@
tp @a 3360 180 0 -90 15
schedule function bench:tour/step22 100t
@@ -0,0 +1,2 @@
tp @a 3520 180 0 -90 15
schedule function bench:tour/step23 100t
@@ -0,0 +1,2 @@
tp @a 3680 180 0 -90 15
tellraw @a {"text":"bench tour done"}
@@ -0,0 +1,2 @@
tp @a 480 180 0 -90 15
schedule function bench:tour/step4 100t
@@ -0,0 +1,2 @@
tp @a 640 180 0 -90 15
schedule function bench:tour/step5 100t
@@ -0,0 +1,2 @@
tp @a 800 180 0 -90 15
schedule function bench:tour/step6 100t
@@ -0,0 +1,2 @@
tp @a 960 180 0 -90 15
schedule function bench:tour/step7 100t
@@ -0,0 +1,2 @@
tp @a 1120 180 0 -90 15
schedule function bench:tour/step8 100t
@@ -0,0 +1,2 @@
tp @a 1280 180 0 -90 15
schedule function bench:tour/step9 100t
@@ -0,0 +1,2 @@
tp @a 1440 180 0 -90 15
schedule function bench:tour/step10 100t
@@ -0,0 +1 @@
function bench:tour/step0
@@ -0,0 +1,23 @@
schedule clear bench:tour/step1
schedule clear bench:tour/step2
schedule clear bench:tour/step3
schedule clear bench:tour/step4
schedule clear bench:tour/step5
schedule clear bench:tour/step6
schedule clear bench:tour/step7
schedule clear bench:tour/step8
schedule clear bench:tour/step9
schedule clear bench:tour/step10
schedule clear bench:tour/step11
schedule clear bench:tour/step12
schedule clear bench:tour/step13
schedule clear bench:tour/step14
schedule clear bench:tour/step15
schedule clear bench:tour/step16
schedule clear bench:tour/step17
schedule clear bench:tour/step18
schedule clear bench:tour/step19
schedule clear bench:tour/step20
schedule clear bench:tour/step21
schedule clear bench:tour/step22
schedule clear bench:tour/step23
@@ -0,0 +1 @@
{"pack": {"pack_format": 48, "description": "Onion MC client-perf bench scenes (Phase 2)"}}