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:
1 parent
d80f85b3f6
commit
611a1a5952
102 files changed
+25853
No files matched your search
@@ -0,0 +1,42 @@
|
||||
import pickle,re
|
||||
D=pickle.load(open("data.pkl","rb")); mods=D["mods"]
|
||||
mods.setdefault("minecraft",[dict(jar="base",version="1.21.1",deps=[],nested=False)])
|
||||
def vt(v): return [int(x) if x.isdigit() else x for x in re.split(r'[.\-+_]',v)]
|
||||
def cmp(a,b):
|
||||
a,b=vt(a),vt(b)
|
||||
for x,y in zip(a,b):
|
||||
if x==y: continue
|
||||
if type(x)==type(y): return -1 if x<y else 1
|
||||
return -1 if isinstance(x,str) else 1
|
||||
return (len(a)>len(b))-(len(a)<len(b))
|
||||
def inrange(v,r):
|
||||
r=r.strip()
|
||||
if not r or r=="*": return True
|
||||
for part in re.findall(r'[\[\(][^\]\)]*[\]\)]',r) or [None]:
|
||||
if part is None: return cmp(v,r)>=0
|
||||
lo,_,hi=part[1:-1].partition(",")
|
||||
if "," not in part:
|
||||
if cmp(v,lo)==0: return True
|
||||
continue
|
||||
ok=True
|
||||
if lo.strip(): c=cmp(v,lo.strip()); ok&= c>0 or (c==0 and part[0]=="[")
|
||||
if hi.strip(): c=cmp(v,hi.strip()); ok&= c<0 or (c==0 and part[-1]=="]")
|
||||
if ok: return True
|
||||
return False
|
||||
# duplicate modids among top-level jars
|
||||
for mid,l in mods.items():
|
||||
top=[x for x in l if not x["nested"]]
|
||||
if len(top)>1: print("DUP-MODID",mid,[x["jar"] for x in top])
|
||||
for mid,l in sorted(mods.items()):
|
||||
e=[x for x in l if not x["nested"]] or l
|
||||
for d in e[0]["deps"]:
|
||||
t=str(d.get("type",d.get("mandatory") and "required" or "optional")).lower()
|
||||
if d.get("mandatory") is True: t="required"
|
||||
did=d.get("modId"); side=d.get("side","BOTH")
|
||||
if t not in("required","incompatible","discouraged"): continue
|
||||
if did not in mods:
|
||||
if t=="required": print("MISSING",mid,"->",did,d.get("versionRange"),side)
|
||||
continue
|
||||
v=mods[did][0]["version"]; r=d.get("versionRange","")
|
||||
if t=="required" and not v.startswith("$") and not inrange(v,r): print("VERSION",mid,"->",did,"needs",r,"have",v)
|
||||
if t in("incompatible","discouraged") and (not r or inrange(v,r)): print(t.upper(),mid,"->",did,r,"have",v)
|
||||
Reference in new issue
Block a user