HALL PASS — lab log
How ideas become measurements become changes. Generated by
scripts/lab-log.mjs.
Your ideas
LOOP DIRECTIVE: ledger STATE is judging CE against the retired 27-40% band — re-point on PROTOCOL h5 (kitted) and re-queue on the latest changes Filed by Chris/Claude 2026-09-02 after reviewing iteration 73 output. Manifests confirm the loop measures the current simSha (b32d158); only the judgment and the queue are stale.
No enemy ever pops onto the stage inside the viewport Also closes the corner trap for SURGES (ring clamping), which the earlier fix did not reach. Lab default box {hw 13, hh 9}.
Corner trap: a wave spawned on top of a cornered player (end of MIDTERM, iPhone) Root cause in _spawnPoint: clamped-back arc points fell to a random wall near the player with no distance check.
Snapshot/restore determinism bug: kills diverge (58 vs 55) after a restored sim advances 10s in lockstep with its live twin Filed by the tuner (I-426) after npm test caught this mid-iteration while trying DIFFICULTY.speedRampSec=900 for board #39/#40. Elevated priority: touches the sim-determinism non-negotiable directly, needs src/sim.js access.
Overkill-clamp: any lever that adds enemy HP-mass backfires, confirmed 3x this session (I-417/I-418/I-424) Filed by the tuner after the third independent confirmation (I-424). Not a tuning proposal — needs a sim.js decision, out of tuner scope.
Human run: early stages feel exciting now, slightly overpowered even with just a shikigami Reported 2026-09-01 after the CE split + spawn ladder + held bell + per-student builds shipped.
iOS Safari: left stick jammed top-right at level 10, would not pull back Root cause: WebKit swallowed a pointerup (touch drifting into the top-edge gesture zone), leaving a dead owner that refused every later touch.
Tier multipliers vs a KITTED player: Night II/III barely dent a full kit (16/16, 15/16) Measured 2026-09-01 at 82439d7 with --kit=full: tier 1 16/16, tier 2 16/16, tier 3 15/16 (skill 0.8), CE ~45%. Fresh-save FINAL stays the heuristic-4 cell.
CE band after the split: cut income so the pool is spent, not pinned (I-064/I-065) Companion to #40 (HP/speed compensation). Bot elective policy already casts on a crowd/low HP/boss (3596e62 + 9b962b1), so the spend signal is real when an elective is equipped.
Builds are per student — the club shop is gone, perks live on each sheet Shipped with tests (86). Sim: builds per party member, swap on tag by ratio. Lab harness unchanged (flat --perks applies to the whole club). Economy total for the ladder drops by the retired perk (500 fragments).
Held Bell needs its picture: a FIRST BELL HELD banner and a sunburn visual on the boss View lane. State available: sim.bellHeld, sim.heldBy, sim.heldT; dawnMix already lightens the sky off the clock.
The Held Bell: First Bell waits for a live boss (a3a75ba) Fires only when a boss survives to the bell — never at yard/gym FINAL for the bot, 4/16 at competent MIDTERM. Constants in HELD_BELL: spawnMult 0.25, ceFromBossDmg 0.02, burnBase 0.004, burnRamp 0.0004.
Compensate free-fire: competent FINAL 12/16 -> 15/16 after the CE split (9b962b1) House invariant: difficulty is HP and speed, never spawn counts. Baseline manifests ce-split-before / ce-split-after.
SPAWN_LADDER knobs: floor/hold/fade vs competent inflation and the 80s drought Shipped mechanic, tuner-lane constants. Judge FINAL on pooled banks per I-060.
PRESSURE_WAVE.crash was repurposed but never re-tuned - and the anger debt win-rate evidence does not survive n=64 (I-412) TWO SEPARATE THINGS AND I WANT TO KEEP THEM APART. ONE - THE NUMBER. PRESSURE_WAVE.crash used to be a rate multiplier: how much faster the banked spawns drained back. It is now a per-body cap on how much debt a single returning enemy absorbs (comp *= 1 + take). The value 1.5 came across unchanged, and the comment above it in config.js still reads "extra rate multiple while the bank drains". At 1.5 a returning body can carry 2.5x hp. That is an inherited accident, not a decision you made. I swept it 0.75 / 1.5 / 3.0 at n=64 and all three sit on top of each other, so I cannot pick a better value for you and I have landed nothing - but the stale comment is a live trap for whoever reads it next, and that file is mine, so say the word and I will fix just the comment. TWO - THE EVIDENCE. standard-16 is literally the first 16 seeds of standard-64, so your cells are a slice of mine. I reproduced your numbers exactly: 2/16 before, 5/16 after, 0/16 both at novice. Nothing about your run was done wrong. Then I ran the other 48 seeds of the same bank. They go 6/48 to 5/48. At the full n=64 the fresh competent gym goes 13% to 16%, paired McNemar p=0.77. The whole improvement is inside your first sixteen seeds. This is exactly the n=16 instability the lab filed as I-060 two iterations ago, except this time it arrived after a decision had already shipped. WHAT LEANS THE OTHER WAY, HONESTLY LABELLED. With the perk tree fully bought, six cells across gym and yard all move down. NOT ONE of them clears p<0.05 paired, so I am not claiming a regression. I am also not claiming it is a gym problem: at novice the yard fell by exactly the same amount, and the gym only looks singular at competent skill because the yard is sitting at 83% with nowhere left to fall. WHAT YOU GOT RIGHT, AND IT IS THE THING I EXPECTED TO CATCH YOU ON. Your commit says "same total threat and XP repaid". I measured player level at a fixed clock time, counting only seeds still alive in BOTH builds so death timing cannot confound it. At t=300s at skill 0.5, ZERO of 63 seeds are lower on the new build. It is XP-neutral exactly as you said. That also kills the underlevelling hypothesis I raised in I-411 an hour ago, so that line is closed and Loop 1 should not spend a run on it. THE LIMIT. You shipped this because of something you felt at minute ten - navigating fine, then boxed in within a second or two. The mechanic does remove the thing that caused that: a fifty-body bank repaying at 2.5x the live rate. The lab has no instrument for feel. Nothing I measured says the mechanic failed at its actual job. It says the win-rate number offered as evidence for it is not real at n=64. If it feels better, keep it - just do not carry that "2/16 to 5/16" forward as a fact, because the next decision that leans on it will be leaning on nothing.
Warden windup has no visible telegraph at night — view polish Follow-on from the warden one-shot fix. dmg is now correct (~29 ramped) but an unseen 29 still feels unfair. e.state === windup is public sim state; art direction is Chris.
Gym cliff residue: geometry x CURRENT interaction — run a stripped-obstacle gym arm Post anger-debt: gym 0.8 is 5/16 vs yard 8/16 (was 2/16 vs 7-12). I-040 said interaction, board #14 exhausted the single constants, and the current makes downstream-escape geometry-dependent. A Sim mods or bespoke arm can zero out m.obstacles deterministically.
17 21 26 27 29 12
The bot needs a CURRENT-aware policy — kite-away exploits directional spawning harder than a human can Fifth instance of the driver-gap pattern. Measured during the current build: pure current gave the bot 32% dead-air and near-perfect wins; the leak contains but does not close it (16% dead-air at MIDTERM 0.8, competent inflation FINAL 5->10/16). Every rebaseline of sim 21dd615+ is suspect until the bot plays the front.
Density-for-quality swap: fewer, tougher late-night enemies at equal XP/min Chris: can barely navigate the late swarm; overwhelm comes from COUNT, not strength. I-054 measured the kill mechanism as 7-8 simultaneous contacts at 14-16 damage events/sec. Density is the delivery mechanism for that stacking.
CE-at-crisis: are electives priced out of the emergency they exist for? Chris barely uses secondary skills and auto-falls-back to domain. Bots already live CE-starved at 27-40% (MECHANICS). If firing drains the same pool the elective needs, the emergency toolkit is structurally unaffordable in emergencies. Shikigami extreme cooldown compounds it.
Verb-mix telemetry: does late-night play collapse to move+domain? (heuristic-10 candidate) Chris, by hand 2026-08-31: late night is navigate-the-swarm until domain, repeat; secondary skills barely used; the sequence is automatic. Note the lab cannot currently see this — no heuristic measures decision variety. Ties I-055 (domain cadence is the binding constraint) and heuristic 7 in spirit.
Owner feel report: domain chaining no longer rescues a surrounded player (ties I-039 no-gradient diagnosis) Chris, by hand: cannot beat easy stages even with domain chaining. I-039 already diagnosed the domain as a flat two-minute entitlement with no gradient.
Owner feel report: overpowered early, then unavoidable surround-death (ties I-043/I-045 sawtooth + I-025 contact wall) Chris, playing by hand 2026-08-31: power spike early (shop bought out fast), then deaths to swarms that close from all sides with no escape route. Not fun. Cross-ref: I-025 (88% of novice damage is husk+grub contact), I-007 (threat is binary), aheadBias in DIFFICULTY.
compact-ledger.mjs is not idempotent — a second run DELETES the entire findings archive scripts/compact-ledger.mjs reads ONLY INSIGHTS.md (line 26) and unconditionally writes INSIGHTS-ARCHIVE.md (line 142). It never reads the existing archive. Second run: INSIGHTS.md is already an index with no `### I-` sections, so parts=[] -> cold=[] -> archive written as 2.4KB header with 0 bodies. Observed: 219,660 bytes -> 2,459 bytes. Recovered via `git checkout` from _hallpass-archive commit 291c442. Fix options: (a) read + merge the existing archive, or (b) refuse to run when the ledger contains 0 findings. Related lint worth adding: the parser regex /^### (I-\d+)\s+—\s+([A-Z-]+)\s+—/ requires a BARE status, so a header like "### I-047 — OPEN (refines I-043) — ..." silently vanishes from the index. That is exactly what happened to I-047; I fixed that header this iteration. Also relevant: queue item 0i has been flagging that the archive repo carries uncommitted iterations of records.
runNight() passes no `steps`/`shiki`/`mastery` to Sim — step training and the animal are unmeasurable (I-050) I-050 (OPEN). src/sim.js:41 accepts { steps, shiki, mastery }. scripts/playtest-runner.mjs:180-191 constructs Sim without them. Effect: the equipped elective is the only post-perk power reaching the sim. Full-shop arm spends 3585 (perks 2035 + 3 electives 1550) but only ~450 is effective; verified by leftover arithmetic (perks-only 2980 - full 1419 = 1561 ~ 1550). Consequence: queue item 0n unanswerable, and the claim "I-045 is a difficulty-curve problem not an economy bug" is NOT being made. playtest-runner.mjs is on the SIM SURFACE, so this moves simSha and invalidates cross-sha comparison — Codex needs telling. Note this is the 5th instance of the driver-gap family (I-013, I-032, shikigami/#17, night.mjs/#20, now the runner itself).
scripts/night.mjs never equips an elective — 4th instance of the driver-gap pattern (see board #17) night.mjs contains no elective code; runNight() accepts an `elective` option the driver never passes. Patched scratchpad copy w/ CIRCUIT BREAK (granted free, not bought): cleared 0/16 -> 3/16 at skill 0.8, stalls 16 -> 13. Fisher one-sided p ~ 0.11 — direction only, NOT a finding. Fourth instance of the pattern, not third: I-013 (castElective), I-032 (LINE CHANGE untaggable), the shikigami (board #17), now this. Strictly a loadout-default gap rather than an unwired verb — the verb reaches runNight() fine, the new driver just never equips anything. Merging the drivers (#17) would fix this class too. Also worth deciding: night.mjs uses its own synthetic seed family (SEED0 90000, step 7919) rather than a named bank, so its cells are not directly comparable with insight.mjs cells.
The perk shop is bought out in room 2 of 10 (I-045) — the fragment economy has no back half I-045 (OPEN). scripts/night.mjs at 8a9c9f0, sim fa72528, n=16 simulated players per cell, ren, skills 0.25/0.5/0.8, greedy and breadth. PERKS total 2035 (500+615+265+195+340+120). Median fragments spent = 2035 in all seven cells. 48/48 players maxed the tree, all while still in the gym; median buyout run 8/4/6 by skill. Median leftover bank 2993/13506/14469. Whole power economy incl. step training, electives, shikigami and characters = 6305, which the competent median out-earns ~2.1x (novice does NOT — falls ~1300 short). Related: I-046 (deep-room FINAL is 4.1% at skill 0.8 WITH a maxed tree — heuristic 4 wants ~50%), I-037 ("800 fragments buys nothing past hour 5" — 800 is only 39% of the tree).
SHIKIGAMI FORMS — power trades against cooldown, augments buy it back (DESIGN ONLY, do not build yet) STATUS: written up at Chris's request, NOT approved to build. Do not execute without him saying go. Chris, 2026-08-31 (verbatim intent): "maybe shikigami are faster cooldown at lower levels and as they get more powerful they are longer cooldown unless you buy augments that lower the cooldown". WHY IT IS WORTH DOING: the shikigami is the only system in the game with no progression track — perks have ranks, step training has ranks, elective tuition escalates, and the animal is a flat one-time 550 purchase (SHIKIGAMI_SKILL, shipped 2026-08-31). Trading power against frequency is self-balancing: the player picks their curve instead of getting strictly stronger, and augments become a real late-game fragment sink. DESIGN NOTE 1 — make them FORMS, not a ladder (Claude's recommendation). An upgrade that makes an ability LESS available reads as a punishment; "I ranked up my shikigami and now I can barely use it" feels bad even when the trade is fair. Ship it as forms of the same creature, freely switchable between runs the way the elective is equipped. Identical trade, no regret, and it removes the "can I go back down a tier" problem entirely. DESIGN NOTE 2 — the small form must be a DIFFERENT ability, not a weaker one. The extreme cooldown (75s) is what currently gives the animal its character: you decide the night needs it, rather than slotting it into a rotation. A short-cooldown form is closer to an elective, which is exactly what we split it away from. That can still be right — it dovetails with #13/#16, where the early hours SHOULD train elective + flash step + weapon — but the small form needs its own identity. "A scrappy harasser that trades bite damage for uptime" is interesting; "Kuroinu at 40% damage" is not. OPEN QUESTIONS FOR CHRIS: - Do forms cost fragments each, or is it one purchase that unlocks all three? - Are augments per-student (like everything else in the school store) or club-wide? - Do the four creatures get the same form ladder, or does each animal ladder differently (Kitsune already trades duration for speed)? SHAPE IF BUILT: SHIKIGAMI_SKILL becomes a table of forms {ce, cd, dur, biteDmg...}; save.shikiBy goes from boolean to {form, augments}; migration grants every current owner the CURRENT numbers as their default form so nobody is nerfed by the change. Party entries already carry shiki/shikiCdT as scalars, so the sim side is small. Measure with the lab: casts/run by hour, and whether the small form actually displaces elective casts (if it does, it is competing for the wrong job).
Third instance: a new verb ships wired to game.js but not to the lab driver (I-013, I-032, now the shikigami) I-013: castElective() was wired in game.js but not scripts/playtest-runner.mjs — every headless run had cast zero electives for the lab lifetime until it was found. I-032: botLevel is the only caller of swapCharacter, so 773/773 tags happened at level-ups and the Line Change was unmeasurable. NOW: sim.castShikigami() appears at game.js:1272 in the ?drive=1 driver and nowhere in src/bot.js or scripts/playtest-runner.mjs, so shiki/run is 0.00 by construction and board #16 cannot get the metric it asks for. The failure mode is structural, not careless: there are two independent bot drivers and only one of them is exercised by a human. Suggest either (a) the lab runner imports the same policy object game.js uses, or (b) a test that asserts every sim verb reachable from input has a caller in the lab driver. Note this is on the sim surface, so landing it moves simSha and re-baselines club/elective cells; solo no-verb cells are provably unaffected (I-031).
FIRST DOMAIN part 2 — starve the early domain now that the Shikigami has its own slot (#13 follow-up) Board #13 had four parts. Parts 1 and 2 SHIPPED 2026-08-31: 1. Shikigami split off the elective binding — its own slot on R / gamepad RB, shared CE pool (55), EXTREME cooldown (SHIKIGAMI_SKILL.cd = 75s), per-student ownership in save.shikiBy, cooldown rides the party entry so tagging banks it. 2. Not owned at game start — a fresh save has none; it costs 550 at the student's own store. STILL OPEN (parts 3 and 4), and they are TUNING, not engineering: 3. Starve the early domain so hours 1-3 (yard/gym/library) train elective + flash step + weapon instead of domain-rushing. Levers: DOMAIN charge rates (domainPerDmg / domainPerKill / domainSelfRefill), ENERGY costs, per-map pressure. 4. Make the FIRST domain of a run land like a room-clearing breakthrough. Measure before and after, by HOUR (the game is one night now): first-domain timestamp distribution, dom-kill% per hour, elective casts/min, shikigami casts/run, and whether hours 1-3 clear rates move. The risk to watch: SHIKIGAMI_SKILL.cd is the first lever if the animal feels either spammy or pointless — do not fix it by changing its CE cost first.
Heuristic 2 watches a 15% HP line that only 17% of winning runs ever touch (I-041) Analysis-only over 199 raw dumps, 5312 runs, no sim executed. The detector itself is SOUND: recomputing near-miss independently from window minHp traces reproduces the recorded field almost exactly on wins (mean 0.20 vs 0.20; 17% vs 15% of wins with >=1). So the low numbers are real, not a bug. What is wrong is the THRESHOLD in heuristic 2. Wins-only minHpFrac: p10 0.094, p25 0.196, p50 0.363, p75 0.53, p90 0.707. Share of wins ever below: 0.15 -> 17%, 0.25 -> 33%, 0.35 -> 48%, 0.50 -> 71%, 0.70 -> 89%. Heuristic 2 says a win that never fell below 70% was never in danger; that is only 11% of wins. Recomputed at dip/recover 0.35/0.55 the game already yields mean 0.69 scares per win with 48% of wins having at least one. TWO CONSEQUENCES: (1) I-007 is reframed not falsified — the 15% band really is near-lethal, but the 25-50% band is common AND survivable, and the lab concluded there is no recovery from a metric that only watched the band where recovery does not happen; (2) it re-reads the valve programme — I-028/029/030 trigger below 35% HP, which 48% of wins already reach, so those arms fired on half of all winning runs rather than on a rare emergency, which is why they breached the competent ceiling. NOT ACTIONED: heuristic 2 is a shared gate governing how both Claude and Codex judge every threat claim, so amending PROTOCOL.md is a decision for you, not a loop. Tautology warning recorded in the ledger: runs that never dipped below 15% won 100% of the time is circular (losses end at 0 HP) and must not be quoted.
Tune the five NEW rooms of the one-night structure (library/cafeteria/detention/boiler/lab) — rosters + bonus ladder are provisional Shipped 2026-08-31: THE WHOLE GAME IS ONE NIGHT — MAPS is now 10 rooms, one hour each, 9 PM to First Bell; array order IS the night (yard, gym, library, halls, cafeteria, pool, detention, boiler, lab, roof). Provisional values that need a real tuning pass: - library/cafeteria/detention/boiler/lab rosters were interpolated between neighbours (monotone late-shift intros enforced by test/night.test.js). - roof roster TIGHTENED to finale duty (husk 36 / warden 390, was 45/560); pool bonusMult 1.5 -> 1.35 (moved from end-game to hour six); bonus ladder now ends at roof 1.65. - New rooms reuse existing envs/bases; layouts pass the dead-end invariant. Fresh-save bot reference (8 runs, FINAL): library/cafeteria reach dawn at the median-ish for yui; detention/boiler/lab mostly kill fresh kits (intended — hours 7-9 assume perks/club). Verify the mid-game power curve actually meets the deep hours: measure clears by hour with progressed saves, not fresh ones. - Guardrails: difficulty via HP/speed/intro times, never spawnMult; test/night.test.js enforces bonus ladder + late-shift monotonicity.
THE FIRST DOMAIN — split Shikigami off the elective binding, starve early domain, make domain #1 a breakthrough Chris, 2026-08-31 (queued mid-session, verbatim intent): Diagnosis: early stages let you farm to a domain fast, and once you have it you are unstoppable — the game never trains you on the rest of the kit. Domain-rushing IS the playstyle because it is available before anything else matters. Proposed shape (design, not just tuning): 1. SPLIT BINDINGS: Elective and Shikigami become separate slots — a student can carry both a Shikigami AND an elective technique (or neither). Today kuroinu/SHIKIGAMI is just one elective among four. 2. NO SHIKIGAMI AT GAME START: it is earned later, not owned on night one. 3. STARVE THE EARLY DOMAIN: in the first hours of the night (yard/gym/library) domain charge should be genuinely hard to reach, while Elective + Flash Step are cheap and available — the early game TRAINS elective+step+weapon dependence. 4. THE BREAKTHROUGH: the first domain of a run should land like a room-clearing event you were not ready for — a huge payoff AFTER hours of fighting hordes on brain energy alone. Fits the ONE NIGHT structure shipped today (10 rooms, 9 PM to First Bell): early hours = elective school, deep hours = domain economy opens. Levers that exist today: DOMAIN charge rates, ENERGY costs, ELECTIVES ce costs, per-map roster pressure. New work needed: separate Shikigami binding (input, HUD button, sim slot), Shikigami acquisition moment. Measure with the lab: dom-kill% by hour, elective casts/min by hour, first-domain timestamp distribution.
The bot needs a rotation policy before LINE_CHANGE can be tuned (I-032/I-033) Two blocks in src/bot.js. (1) botLevel is the ONLY caller of sim.swapCharacter, so tags can only fire in a level-up window — 773 of 773 measured tags were at a level-up. (2) bot.js:15 gates elective casts on ce > ceMax*0.85, but LINE_CHANGE.freshCostMult=0 exists so a just-tagged student can cast at zero CE, and they arrive at 15-27%. Only 5-16% of casts land in freshWindow. Counterfactual, standard-16 FINAL 0.8: arm B (take the free cast when open) is inert, 7->6 and 3->1 wins. Arm C (B + tag out below 30% CE when a bench member is fuller) gives ren+kaito 7/16 -> 12/16 and yui+sora 3/16 -> 9/16, both above solo ren 8/16, novices unmoved at 0/16. Arm C tags every ~6.6s against TAG_COOLDOWN 7, so it is an upper bound, but a reachable one. Note bot.js is on the sim surface: landing this moves simSha and re-baselines every CLUB cell (solo cells are provably unaffected — I-031). Suggest the policy be conservative rather than cooldown-mashing, so the bot models a good player and not a frame-perfect one.
gameVersion().dirtyFiles eats a character from the FIRST modified file, so the DIRTY gate cannot name the file that tripped it scripts/playtest-runner.mjs:89 runs .trim() on the whole `git status --porcelain` output, which strips the leading space from the FIRST line only. Line 97 then does l.slice(3). A modified file prints " M src/save.js" (1-char status + 2 spaces); after the outer trim that first line is "M src/save.js", so slice(3) returns "rc/save.js" — one character eaten. Untracked entries are unharmed because "??" is 2 chars. Hit live this iteration: insight.mjs printed "!! SIM SURFACE is dirty" followed by an EMPTY file list, because the display filter is dirtyFiles.filter(f => simSurface.includes(f)) and "rc/save.js" does not match "src/save.js". BLOCKING IS STILL CORRECT — simDirty comes from a separate unparsed simStatus.length>0 — so no past result is wrong; only the diagnostic is. This is exactly the "gate that cries wolf" failure PROTOCOL warns about. Fix: split before trimming, e.g. status.split(String.fromCharCode(10)).map(l => l.slice(3).trim()), and drop the outer .trim() for this call.
Tune the LINE CHANGE (LINE_CHANGE in config.js) — shipped 2026-08-31 Chris approved and shipped the Line Change mechanic (commit on main, sim surface moved): tagging is now a CE rotation, not domain stacking. Three NEW constants in src/config.js are the levers, set by feel and never measured — they are yours to tune: LINE_CHANGE.benchLullMult 3.0 bench CE regen mult while a pressure lull is open (the club breathes on the wave) LINE_CHANGE.freshWindow 2.5 seconds after tag-in that the elective is free LINE_CHANGE.freshCostMult 0 elective cost inside that window (0 = free) Reads that matter, per the design intent: - elective casts/min in club runs (I-014: they were CE-starved to ~0) - tag rate and bench CE at tag time (does rotation actually happen?) - club-vs-solo gap (I-018: club was pure dilution; rotation should be the first genuine club>parts effect — verify, do not assume) - solo unaffected (freshT/bench paths cannot fire solo; confirm) One change per iteration as always. Baselines predate this surface.
Novice deaths land at an anonymous mid-night wall, not a named boss
Lab plumbing: the tuner worktree has its own feedback.db - tuner proposals never reach this board REPO_ROOT in scripts/playtest-runner.mjs resolves per-worktree (path relative to the script file), so idea.mjs run from G:/Skunkworks/hallpass-tuner writes playtest/feedback.db THERE, not the shared one here. feedback-db.mjs promises exactly one source of truth; worktrees break that silently. Fix needs your hands (scripts are not the tuner files to land): resolve the DB path via git rev-parse --git-common-dir, or make the tuner skill set HALLPASS_FEEDBACK_DB to the main checkout DB. Until fixed, the tuner writes proposals directly to this DB via HALLPASS_FEEDBACK_DB, as this item was.
TUNER PROPOSAL (needs your hands): raise the FINAL ceiling - hpQuadSec 380 -> 330 Measured on standard-16 FINAL (manifest 2026-08-30-claude-tune-hpquad-330, sits uncommitted in the tuner worktree; sim was DIRTY, remeasure clean after committing): fresh-0.8 wins 13/16 -> 11/16, clutch 2 -> 3, near-miss mean 0.13 -> 0.19, dead-air 0%, loser deathT p50 stays late; novice deathT p50 4:14 -> 3:59. Backs I-005/I-006 (soft FINAL ceiling). The tuner cannot ship it: hpQuadSec is pinned by test/invariants.test.js:21, and the change needs that test plus docs/MECHANICS.md updated in the same commit - files the tuner does not own and tuner-land refuses. First filed 2026-08-30 in the tuner worktree own feedback.db, which this board never reads - see the companion bug item.
Domain cast should feel more earned late in a run [feel]
Findings
QUIZ never bites at any skill: near-miss mean is 0.00 in all six cells across both banks (96 runs, skills 0.25/0.5/0.8). Competent players take 6-12 hits median across a whole night. The quickie replay hook (score chasing) has no danger underneath it at gate-passing n.
Proposal: Feedback board #1 evidence is complete. Fix shapes stay as proposed: QUIZ-only early HP ramp or a scripted ~120s mini-surge, never spawn counts. Tuning numbers need a config micro-experiment.
Novice QUIZ win rate sits at 72% pooled (11/16 + 12/16 = 23/32), far above the 50% the economy table designed for; mid skill is 31/32 and competent 32/32. The bottom rung of the point-down ladder barely points down.
Proposal: QUIZ novice difficulty needs a nudge up via enemy HP/speed (never spawns) IF Chris wants the earned-feeling QUIZ back — but note the interaction: QUIZ is the paid rung novices drop to (+302 per table), so overtuning starves the ladder. Target ~50-60% novice. Pairs with the I-001 threat fix: one change could serve both.
At skill 0.8 the threat curve is flat across MIDTERM and FINAL, not just QUIZ: near-miss mean 0.06 (MIDTERM) and 0.13 (FINAL), p50 0 in both, with per-window worst-HP medians never exceeding ~40% across the whole night.
Proposal: Same family as I-001: pressure must come from enemy HP/speed or scripted surge bites, never spawn counts. Before tuning, validate on a second bank; also note the 3/16 FINAL deaths at 0.8 land late (p50 9:14, p75 11:19) which is the narratable shape we want — the problem is the 13 wins that were never in danger.
Novice (0.25) deaths cluster at an anonymous mid-night wall 35-45% through the night in both MIDTERM (deathT p50 2:43 of 6:00) and FINAL (p50 4:14, p75 5:09 of 12:00), nowhere near dawn or a named boss narrative beat.
Proposal: Feed queue item F (death autopsy vs SURGES and boss spawns, suggested owner Codex): determine whether the wall is boss no.2 plus surge overlap or plain HP-curve outpacing novice DPS, before proposing a tune.
A fresh-save bot at skill 0.8 wins MIDTERM 14/16 (88%) and FINAL 13/16 (81%), while the design contract expects fresh-save FINAL near 0% and perk-invested competent ~50% — either the lab skill scale reads far above human-competent or the fresh-save FINAL ceiling is soft.
Proposal: Skill-knob calibration sweep: FINAL fresh-save win rate at skill 0.4/0.5/0.6/0.7/0.8 on standard-16 to locate where 50% sits; then decide whether lab-competent should be redefined (protocol change, both agents) or the FINAL ceiling raised.
Fresh-save FINAL win rate crosses 50% at bot skill 0.6 with zero perks (0/16, 4/16, 5/16, 8/16, 10/16, 13/16 at skills 0.25/0.4/0.5/0.6/0.7/0.8) — the ~50% mark heuristic 4 reserves for perk-INVESTED competent play is reachable uninvested, so the FINAL ceiling is soft at any plausible competent calibration, not merely a skill-scale artifact.
Proposal: Measure the perk-invested delta at skill 0.6 (e.g. a mid-tier perk loadout from playtest.mjs funnel definitions) on standard-16. If perks add fewer than ~15-20 points at 0.6, the ladder is compressed: raise the FINAL HP/speed ceiling so fresh-save 0.6 lands ~15-25% and invested 0.6 lands ~50%.
The near-miss mechanic essentially never fires at ANY skill: mean near-misses per run <= 0.31 across all six skill cells (p50 = 0 in every cell) even where deaths are frequent — threat is binary, comfortable or dead, with almost no drop-below-15%-and-recover moments.
Proposal: Design question for rotation item I: the game may need a recovery valve (heal drops, post-hit mercy window, lifesteal-flavored upgrade) so that dipping low is survivable often enough to mint near-misses — the retention beat is the recovery, not the dip. Sim-sketch candidates before proposing numbers.
Perk power on FINAL is a step function with a dead zone at the front: the canonical ~270-fragment loadout (reserve 2, honed 2, legs 1) adds ~zero win rate at every skill (0.25: 0/16 to 0/16; 0.6: 8/16 to 8/16; 0.8: 13/16 to 14/16), while the ~800-fragment loadout (reserve 4, honed 3, legs 2, flash 1) adds +31 points at skill 0.6 (8/16 to 13/16) but only +12 at 0.25 (0/16 to 2/16) and +6 at 0.8.
Proposal: Two candidate tunes, each needing a config micro-experiment: (1) front-load PERKS rank-1 effects so the first ~270 fragments visibly move outcomes (heuristic 9 wants banked progress to be felt); (2) per I-006, raise the FINAL HP/speed ceiling so fresh 0.6 lands ~15-25% and the invested curve, not the fresh one, crosses 50%. These interact — measure together, ship separately.
High-loadout (~800 diamond) win-rate deltas resolve on pooled n=32: the investment step is at skill 0.5 (+31 points, 14/32 fresh -> 24/32 invested, banks agree 12/16 + 12/16), while at 0.6 the delta is +3 points (noise) — the iteration-6 '+31 at 0.6' was a single-bank artifact. Investment pays where the fresh curve is steep (0.25–0.5) and washes out above the fresh crossing.
Proposal: The invested curve sits at ~75% across 0.5–0.7 where heuristic 4 wants ~50%; combined with I-006 the ceiling raise (feedback board #4, hpQuadSec 380->330) remains the right lever — after it ships, re-measure this pooled curve; target invested 0.5–0.6 near 50% and fresh 0.6 near 15–25%.
The front-load schedule reproduces exactly on a second SHA: mid ~270-diamond loadout at 0.25 gives 3/16 + 6/16 = 9/32 pooled (vs 0/32 under the shipped linear schedule, 1/32 fresh). New nuance from the rank-1-only cell: the literal first ~135 diamonds buys only 3/32 (vs 1/32 fresh) — the schedule value concentrates at ranks 1-2 together, not rank 1 alone.
Proposal: Ship-ready per the iteration-15 synthesis: the re-validation gate is cleared. Honest framing for Chris: the schedule makes the first TWO purchases matter (0 -> 9/32 is entirely attributable to ranks 1-2); rank 1 alone is a teaser, not a rescue. If the FIRST-purchase moment matters most for retention, reserve rank 1 could go higher than 25 HP at the cost of flattening later ranks.
The mid-night wall is only 37% anonymous: 41% of FINAL deaths happen with a special-grade on the field (boss #2 alone: 24/97) and 24% inside 25s of a surge banner (SPIT TAKE 10, HUSK PARADE 9). MIDTERM is barely anonymous at all: 69% die with the first special-grade on the field, p50 15s into its cycle. The unfixable-looking half of I-004 is a FRAMING gap, not a pacing gap — the game already kills players at nameable beats but never tells them. Separately: 0/97 FINAL deaths landed at >=85% of the night, the starkest heuristic-6 failure measured yet.
Proposal: Two-part: (1) VIEW-ONLY, cheap — death screen names the killer beat when attributable (63% of FINAL, 86% of MIDTERM deaths qualify): the surge banner name or which special-grade was on the field. Pairs with the I-007 death-screen near-miss framing. (2) The 0/97 near-dawn number is the recovery-valve argument (I-007) restated from the death side: without recovery, nobody limps to an almost-dawn; deaths that SELL the next run cannot exist. For Chris; the lab ships nothing.
Solo character kits are wildly unbalanced on FINAL: win rates at skill 0.8 span 4/16 (sora, 25%) to 16/16 (yui, 100%) with ren/kaito at 13/16 — a 75-point spread where heuristic 7 tolerates ~15. At 0.25 yui wins 8/16 while ren and sora win 0/16.
Proposal: Needs a second bank before tuning claims (heuristic 7 bar). If it reproduces: sora needs a kit look (weakest at both skills), and yui is the dominant choice — her novice-rescue property is worth understanding before nerfing (she may be doing exactly what the recovery-valve proposal wants).
No headless lab run has ever cast an elective: playtest-runner.mjs wired dash and domain to their sim methods but never input.special -> castElective(). The four shiki-* manifests dated 2026-08-30 therefore measure NO-elective play despite elective:kuroinu in their config blocks.
Proposal: The real shikigami sidegrade check (rotation H) reruns on c9fbe18 next iteration — the four shiki-* manifests stand as the no-elective control arm for it.
Double-buff question answered post-pierce: KITSUNE contribution shrank from +7 to +5 wins (bank a, 0.8) as the kit improved - sublinear stacking, no runaway. Combined post-pierce sora+KITSUNE is 12/16 (75%), landing in the ren/kaito band. Novice stays 0/16 both arms (survivability-shaped deficit, converging with tuner I-403).
Proposal: The pierce tune + animal stack safely; further sora sizing (tuner candidate hp 90->100) can proceed without KITSUNE retune fears at current magnitudes.
Two upgrades are dominant choices and one is a trap at skill 0.6: prioritizing regen (Reverse Cursed, 1.2 HP/s x3) wins 15/16 (+44 points over the 8/16 botChoose baseline) and focus (Domain Focus) 13/16 (+31), while prioritizing step (Afterimage) wins 4/16 (-25). Spread across pick policies is 69 points where heuristic 7 tolerates 15.
Proposal: Second bank + a 0.25/0.8 cell pair before tuning claims. If it holds: regen/focus need cost or effect trims OR the rest of the pool needs recovery-adjacent competition; step needs a look at why prioritizing it is actively bad (opportunity cost vs its max of 2). For the recovery-valve dossier: the valve already exists in-run as Reverse Cursed and it is dominant when taken - the design question is why nothing else competes.
The 2-club is a trap for the strong player: yui+sora scores WORSE than solo yui at every skill (novice 1/16 vs solo 8/16; competent 9/16 vs 16/16) while the mid+mid pairing ren+kaito is additive (15/16 at 0.8, above either solo 13/16). Yui novice-rescue property does not survive sharing the night.
Proposal: Before any design read: (1) bank b, (2) captain-order swap (sora,yui) to see if who starts matters, (3) a no-swap policy cell to separate the party system from the bot swap policy. If it holds for humans too, the party system punishes bringing a weaker friend - the opposite of what a club should do for retention.
REJECTED as stated. The '35 domains a night' engine is a standard-16 artifact, not a property of yui: solo novice yui casts 35 domains and takes 5615 kills on bank a but only 8 domains and 1862 kills on bank b. And the domain-freeze mechanism is falsified — giving benched members 0.5x of the active member's earned charge RAISES domain casts (bank a 0.25: 7 to 10; bank b 0.8: 38 to 44) while recovering essentially no wins (yui+sora 0/32 at novice against a 1/32 baseline, 19/32 at competent against 17/32).
Proposal: Retract the domain-engine framing from docs/IDEAS.md and replace it with I-018. Keep the one part that did replicate: the 8s DOMAIN_SWAP_LOCK is inert on both banks (bank b skill 0.25 solo yui 8 domains / 4 wins vs no-swap 8 domains / 4 wins; skill 0.8 solo 51/15 vs no-swap 48/16) and still should not be tuned. Lesson for the lab: this is exactly the failure the two-bank gate exists to catch, and it was promoted to IDEAS.md one iteration early — treat OPEN findings as unpromotable, not merely unconfirmed.
A 2-club's win rate is, to first order, the field-time-weighted MIXTURE of its members' solo win rates — so bringing a weaker friend dilutes you toward their level and there is no domain-economy story to fix. The mixture predicts all four competent cells within 1.6-2.8 wins of 16, and it explains both the yui+sora collapse and ren+kaito's neutrality with one rule.
Proposal: The club problem is a design question, not a balance bug, and it is now sharply posed: a mixed-strength club is a strict downgrade for the stronger player because the outcome is a weighted average. If the club is meant to be a retention feature (heuristic 9 — a reason to come back with a friend), it needs a compensating benefit that scales with the strength GAP: candidates are shared XP or fragment income, a mixed-club bonus, or letting the stronger member hold the field longer by choice. Note the bot currently splits field time roughly by captaincy (55-69% to the captain) on a CE cue, so 'let the stronger player stay out longer' is already most of the way to solving it — but that is a player-agency question, and the HUD does not currently show a benched member's CE or domain charge (src/sim.js:2086, src/ui.js:1541), so a human cannot steer the split deliberately. Chris's call.
The lab's n=16 gate is far too weak at novice skill, and medians of continuous metrics are effectively unmeasurable there. For solo yui at skill 0.25 a 16-seed cell reports a win rate anywhere in 13-56% and a domains-p50 anywhere in 4-42 (95% bootstrap, pool n=160). The cause is bimodality, not noise: 36% of those runs snowball past 3000 kills and 64% fizzle, so a sample median lands wherever the mode boundary happens to fall.
Proposal: Three changes to PROTOCOL.md, for both agents. (1) Raise the gate to n>=64 for any claim about a NOVICE continuous metric (domains, kills, score, deathT medians); n=16 stays acceptable for win rates and for competent cells. (2) Prefer bounded proportions over medians when reporting novice cells — the snowball fraction (share of runs over 3000 kills) is stable where the median is not, and it also describes the player experience better. (3) Report bimodality explicitly for any novice cell, because 'median 1517 kills' is actively misleading for a distribution that is 36% snowball and 64% fizzle; no player has the median experience. Consequence to flag rather than silently fix: the novice p50 rows in the ledger's baselines table (deathT, firstLevel, drought) were all measured at n=16 and inherit this interval, so they should be treated as indicative until re-measured at n>=64.
Novice yui is a coin flip, and that may be a feature rather than a bug: 36% of her novice nights snowball past 3000 kills and 64% fizzle, against 2% snowball for novice ren. She is the only character whose novice outcome is genuinely bimodal.
Proposal: Worth a design read rather than a tune. A 1-in-3 chance that a novice night turns into a 5600-kill runaway is a strong retention shape — it is the 'one more run' lottery, and it is the only place in the measured game where a novice experiences the power fantasy. The open question is whether the player can TELL which run they are in early enough for it to feel like agency rather than luck, and whether the other three characters should have any such mode at all. Needs a second character with a comparable snowball fraction before any claim about design intent; kaito and sora are unmeasured on this axis.
The iframe tune moved the FINAL ceiling further than anything the lab has measured: fresh-save competent FINAL fell from 81% to 47% (n=64), or 13/16 to 9/16 on the like-for-like standard-16 slice. It also hardened the novice ladder — MIDTERM novice 13% -> 2% and QUIZ novice 69% -> 63% — which fixes I-002's overshoot but leaves a novice with effectively one winnable rung.
Proposal: Update the baselines table to these rows (done this iteration) and re-read any finding that leaned on the old ceiling. Two things to watch rather than tune yet. (1) The novice ladder now has one rung: QUIZ 63%, MIDTERM 2%, FINAL 0%. Heuristic 4 wants a stalled player to drop a period and get PAID, but MIDTERM at 2% is no longer a rung a novice can drop TO — the gap between QUIZ and MIDTERM is now a cliff, and the economy table's -117 fragment MIDTERM novice line assumed a 13% win rate. (2) Fresh-save competent FINAL at 47% sits right where heuristic 4 wants PERK-INVESTED competent play to land, so the perk track may now overshoot the ceiling it was built to reach; the I-010 front-load proposal should be re-measured on 246f428 before shipping.
The iframe tune made competent FINAL bimodal, which is new: 67% of runs snowball past 3000 kills and the rest fizzle, with kills p25/p50/p75 at 2527/4628/5620. The top of the ladder now has genuine uncertainty where it used to be a near-certain win.
Proposal: Two reads worth separating. The good one: a 47% win rate with a wide kill spread is the shape heuristic 2 asks for, and deathT p75 of 9:52 against a 12-minute night means competent deaths now cluster much later than the 0/97-near-dawn era of I-011. The caution: near-miss mean is still only 0.19, so the runs are being LOST rather than survived-narrowly — the tune added uncertainty without adding recovery, exactly the gap I-007 named. Worth measuring next: where in the night the new competent deaths land, and whether any of them are clutch. If the answer is 'they die at a named boss late', that is the retention shape the ledger has been asking for since I-011; if it is 'they die anonymously at 7:38', the tune bought difficulty without narrative.
The iframe tune largely fixed I-011. Anonymous FINAL deaths fell from 37% to 20% pooled, and — the number that had never moved — deaths at 85%+ of the night went from 0/97 to 7/98, all of them at competent skill, where the night-fraction p75 jumped from 0.43 to 0.82. Competent players now die late and at named bosses. Novice players still do not: their p75 is 0.42 and 0/64 ever almost-reach dawn.
Proposal: Two reads. (1) For competent play, heuristic 6 is now satisfied and the death screen naming the killer beat — the cheap view-only change proposed in I-011 and still unbuilt — is worth more than ever: 79% of competent deaths now have a name to print, up from 63%. That is the highest-value-per-hour item in the ledger, and it is pure view work. (2) The novice wall now HAS a name and it is THE JANITOR, boss #1 at BOSS_INTERVAL 150s. Novice night-fraction p75 of 0.42 means the median novice never sees the second half of a FINAL night; combined with I-021's finding that novice MIDTERM is now 2%, the novice ladder is both short AND front-loaded with its hardest gate. Worth measuring before tuning: what fraction of novice runs die to boss #1 specifically, and whether BOSS_INTERVAL or first-boss HP is the binding constraint. Do NOT touch spawn counts.
The novice wall is NOT boss #1 — not its timing and not its difficulty. Delaying every boss by 60s, cutting boss HP 30%, and softening the enemy HP ramp 50% all leave the median novice dying at the same moment: 3:27 to 3:47 against a baseline of 3:35, with night-fraction p75 stuck at 0.33-0.42 and zero deaths near dawn in every arm. The wall is time-locked at roughly t=215s and something other than the bosses enforces it.
Proposal: This retracts my own I-023 proposal, which framed the follow-up as 'BOSS_INTERVAL or first-boss HP'. Neither. The boss deaths are INCIDENTAL: a boss happens to be on the field at 150s and 300s, so it collects the credit, but take it away and novices die at the same second to the ordinary crowd. Leading remaining hypothesis, and it is specific: the median novice death is t=215s and HUSK PARADE fires at t=200 with 10 husks, the first surge of a type that novices cannot out-damage (husk hp 42 vs grub 10). I-023 independently found 25% of novice deaths within 25s of a surge. Next experiment should move or resize HUSK PARADE specifically, not the boss schedule. Secondary read worth keeping: boss HP -30% converted 6 losses into wins without changing when the median novice dies, so boss HP is a lever on the TAIL of the novice distribution, not its centre.
There is no novice wall EVENT. 88% of all novice damage is ordinary contact from two cheap enemy types — husk 51.2% and grub 36.4% — bosses are 12%, and the damage-intake curve is smooth, with no spike at any surge: the HUSK PARADE window (180-210s) is 89.9 dmg/run against the preceding window's 88.9. The 'mid-night wall' is a smoothly rising contact-damage curve crossing a roughly finite HP pool, which is exactly why every discrete lever tried in I-024 failed to move it.
Proposal: Stop looking for an event. The lever the data names is the HUSK, which does 51% of novice damage while costing the starting kit two hits to kill: husk hp 42 against ren's 26-damage cone, where a grub at 10 hp dies to one. That 2-hits-to-kill threshold is the whole story — it doubles the time a husk spends alive and adjacent, and husks deal 12 damage to a grub's 6. Two candidate tunes, both legal under the non-negotiable (difficulty is HP and speed, never spawn counts): drop husk hp to at or just under the starting one-shot threshold, or cut husk contact damage toward the grub's. Both need measuring at BOTH skills, because husk is also 32% of competent damage and the FINAL ceiling was only just retuned by I-021 — this is the same knob-shared-across-skills risk that makes option C in the verb-collapse dossier touchy. Also worth noting for the recovery-valve thread: a smooth intake curve crossing a finite pool is precisely the shape a recovery valve would address, and it explains why no discrete difficulty lever has ever produced a near-miss.
The husk knob moves the novice wall — the first lever that ever has — but it is SHARED, and both settings tested overshoot at the competent end. Husk hp 42->26 buys novices +52s of survival (deathT p50 3:35 -> 4:27) at the cost of the FINAL ceiling rising 47% -> 56%. Husk dmg 12->8 buys only +20s and 4 novice wins while sending competent to 73%, undoing I-021's ceiling work entirely. Neither is shippable as-is.
Proposal: The structural lesson is bigger than the knob: a single shared enemy constant cannot fix novices without moving competent, because both populations fight the same husk. Every lever the lab has tried on the novice wall is of this shape, which is why the wall has survived I-024, I-025 and now I-026. The fix has to be something novices have LESS of rather than something the enemy has less of — the perk track (which is exactly the axis novices lack, and which I-010's front-load already targets), the recovery valve (I-007), or a progression-gated effect. That reframes the standing queue: re-measuring I-010's front-load on the current sim is no longer just due diligence, it is the most promising remaining novice lever. If a shared knob is nonetheless wanted, hp26 is strictly the better trade than dmg8 — it moves novice survival 2.6x further per point of competent inflation, and it IMPROVES the threat pulse (near-miss 0.19 -> 0.27, clutch 9 -> 13, minHp p50 0 -> 0.067) where dmg8 mostly just hands out wins.
The front-load still buys a novice rescue on the current sim (0/64 -> 3/64 wins, deathT p50 3:43 -> 4:30, and 3 clutch wins where the shipped schedule minted none) but it is NOT a novice-only lever: it hands invested COMPETENT play +8 wins of 64 against the novice's +3, taking that cell from 69% to 81%. The perk track scales with how long you survive, so a flat power grant helps whoever already lives longest.
Proposal: Two things follow, and the second is the important one. (1) On its own terms the front-load still works: it is the only change measured that gives a fresh-save NOVICE a win at all on the current sim, and it mints the clutch wins the ledger has been chasing since I-007. It also cannot touch the 47% fresh-save ceiling by construction, since a fresh save has no perks. But invested competent play was already at 69% against heuristic 4's ~50% design point, and this pushes it to 81% — so shipping it as-is widens a gap that is already too wide. (2) I-026's structural lesson generalises further than stated there: it is not only shared ENEMY constants that fail. ANY flat power grant scales with survival time, so it disproportionately rewards whoever already survives — the perk track included. A genuinely novice-targeted lever has to be one whose value FALLS as the player gets better. That is a precise description of the recovery valve (I-007): it only fires when you are about to die, which is common for novices and rare for competent players. The recovery valve is now the last untested candidate that is novice-targeted by construction rather than by hope, and this experiment is the argument for building it.
The recovery valve produces the engagement shape the ledger has chased since I-007 — panic heal drops take novice near-miss mean from 0.22 to 0.75, novice wins from 0/64 to 10/64 and novice survival from 3:35 to 5:07 — but the 'novice-targeted by construction' argument from I-026/I-027 is FALSIFIED: all three valve shapes breach the competent ceiling, panic worst at 47% -> 83%. Competent players go low too; they simply die there. Any low-HP trigger fires for both populations.
Proposal: Two things, and the first is a correction to the lab's own reasoning. (1) 'Value falls as the player improves' was a construction argument and it does not survive contact with the sim, because near-death is not rare at skill 0.8 — I-022 already showed the iframe tune made competent runs genuinely uncertain, and this is the consequence. Any future novice-lever proposal must be measured against the competent cell rather than argued from first principles. (2) The valve is still worth building, but it needs a gate keyed to something competent players genuinely do not share. The measurement points at ONE: time. Novices die at 3:35 and competent players at 7:38, so a valve that only operates before roughly t=300 would be weighted toward novices by their own death distribution rather than by a property of their play. That is the next arm to measure — panic drops with a hard t<300 cutoff — and it is cheap, since panic is already the best-performing shape. Chris still owns which resource recovers and when; what this iteration adds is that the shape works, the engagement numbers are the best the lab has ever recorded, and the open problem is containment rather than effect.
A time-gated recovery valve is containable, and it is the first change the lab has measured that improves engagement without moving win rates. Panic heal drops restricted to t<300 keep essentially ALL the novice benefit — survival 3:35 -> 5:08, near-miss mean 0.22 -> 0.53 with 27 of 64 runs getting one against a baseline 8 — while the competent cell moves 47% -> 50%, which is 0.50 binomial SE and therefore indistinguishable from flat. The ungated version cost +5.76 SE for the same survival gain.
Proposal: This is a real proposal for Chris rather than a diagnosis. The hard t<300 gate is the recommended shape, and note that its novice win count of 0/64 is a FEATURE, not a shortfall: heuristic 4 explicitly wants fresh-save FINAL to stay near 0%, so the ungated arm's 10 novice wins were arguably a violation of design intent rather than a success. What the gate buys instead is the thing heuristic 2 has been asking for since I-007 — the novice threat curve stops being binary. Near-miss mean more than doubles, the share of runs containing a near-miss goes from 8/64 to 27/64, and one novice death lands past 85% of the night where the baseline had none. Caveats to carry into any ship decision: t=300 is tuned to the CURRENT novice death distribution (median 3:35) and would need re-deriving if difficulty moves again; the decay variant is strictly worse on every axis measured and should be dropped; and this is one character (ren) on one map, so a second character should confirm before it ships. Chris still owns whether the recovering resource should be HP at all — this measures the HP-drop shape because it already exists in the game (D.healChance, 14 hp), not because it is the only option.
The time-gated valve's containment holds across characters at competent skill (ren +0.50 SE, yui +0.00, sora +0.30) and its engagement gain reproduces on all three at novice, but it FAILS containment in one place: yui's novice win rate goes 17/64 -> 24/64 (+1.98 SE). She was already the ledger's novice outlier, and the valve amplifies exactly that outlier. The cutoff is a smooth tradeoff rather than a knife edge — novice near-miss 0.38/0.53/0.61 and competent +(-0.50)/+0.50/+1.50 SE at t=240/300/360 — so t=300 sits at a defensible knee.
Proposal: The proposal survives with one honest caveat attached, and the caveat is a pre-existing problem rather than a new one. Ship shape is unchanged: hard t<300 gate, x6 boost below 35% HP, on the existing heal drop. What the confirm adds: (1) containment is character-general at competent skill, and for yui it is structural rather than lucky — she never drops below the trigger at 0.8, so the valve cannot fire for her at all. (2) The novice-win breach is yui-specific and amplifies I-012's known 75-point bare-kit spread and I-020's bimodality; the valve does not create that outlier, it feeds it. Chris's call on whether the designated novice-rescue character getting better at novice rescue is on-theme or is the thing that finally forces a yui rebalance. (3) t=300 is not a knife edge — at t=360 the novice gain is larger and the competent cost reaches +1.50 SE, at t=240 it is under-powered, so 300 is the knee and the result will survive a modest difficulty drift. Still outstanding before TUNED: a genuinely independent seed bank, and a second map.
SOLO play is bit-for-bit unaffected by the LINE CHANGE commit (315ce64) AND by the in-flight uncommitted cloud-save change to src/save.js. 128 runs x 15 result fields = 1920 field comparisons against the pre-LINE-CHANGE baseline 2026-08-31-claude-tune-iframes-045 (simSha aaf2ed9): ZERO differences. Item #8 read 4 ("solo unaffected — confirm") is answered YES. Because the identity is exact against a CLEAN-surface baseline, it is itself proof that neither change consumes rng on the solo path — a dirty-surface run that reproduces a clean-surface run bit-for-bit cannot have been influenced by the dirt. Every SOLO baseline in the ledger therefore carries forward to 315ce64.
The lab CANNOT currently measure the LINE CHANGE, because the shipped bot cannot play it. Two structural blocks, both in src/bot.js: (1) botLevel is the ONLY caller of sim.swapCharacter, so a tag can only happen inside a level-up window — measured 773 of 773 tags across 6 club cells occurred at a level-up; (2) the elective cue at bot.js:15 is "ce > ceMax*0.85", but LINE_CHANGE.freshCostMult=0 exists precisely so a just-tagged student can cast at ZERO CE, and a tagged-in student measurably arrives at only 15-27% CE. The two conditions are near-disjoint, so only 5-16% of elective casts land inside freshWindow. Any tag-rate, fresh-window-uptake or club-vs-solo number taken with the current bot describes bot.js, not LINE_CHANGE. This is the I-013 failure one level up: the lab can now cast electives but still cannot ROTATE.
When the bot IS given a rotation policy, the LINE CHANGE delivers the first genuine club>parts effect the lab has measured — and the free entrance alone is worth nothing without it. Arm B (take the free cast whenever the window is open, no other change) moves win rate by -2 to +0 wins: it is inert. Arm C (B + tag out whenever the active student drops below 30% CE and a bench member is fuller) moves competent FINAL from 7/16 to 12/16 for ren+kaito and 3/16 to 9/16 for yui+sora — both of which now BEAT solo ren+SHIKI at 8/16, reversing I-018 club dilution. Novice stays 0/16 in every arm, which respects heuristic 4. Arm C tags roughly every 6.6s against a TAG_COOLDOWN of 7, i.e. it rotates as fast as the game permits, so this is an UPPER BOUND on the mechanic — but a reachable one, since it is the intended strategy played on cooldown rather than an exploit.
Matched solo reference cell for the club comparison — ren alone WITH SHIKIGAMI, so the club-vs-solo delta is not confounded by the elective. 28/64 (44%) at skill 0.8, 1/64 at 0.25. See I-034 in the club-renkaito-armA manifest for the comparison and I-033 for the rotation counterfactual.
THE LINE CHANGE HAS TWO OPPOSITE CHARACTERS, SET BY MAP PRESSURE — and on the high-pressure map it is the first sighting of I-007’s white whale. Under the rotation counterfactual on the YARD, near-misses COLLAPSE (0.36->0.11 bank a, 0.28->0.06 bank b) and clutch wins fall (13->9), while win rate climbs to 66-75%: rotation deletes danger pre-emptively, an anaesthetic. On the GYM the identical policy holds near-miss FLAT (0.41->0.42) and nearly TRIPLES clutch wins (7->23) while win rate goes 14%->61%: rotation cannot prevent danger there, it provides an EXIT from it. One mechanism covers both — rotation is a recovery resource, and its character flips depending on whether map pressure regenerates danger faster than rotation smooths it away. Below the threshold it is an anaesthetic; above it, it is recovery-from-danger, which is exactly the ingredient I-007 called missing and the lab has chased for ~25 iterations without ever observing it.
The yui+sora trap survives the LINE CHANGE untouched and is the lab’s largest standing heuristic-7 violation. At skill 0.8 with SHIKIGAMI, yui+sora scores 14% against ren+kaito’s 50% on the same independent bank — a 36-point spread at equal skill against heuristic 7’s 15-point tolerance, roughly 9 SE. Rotation does not rescue it: under arm C yui+sora reaches only 30% pooled, still below the SHIPPED ren+kaito club at 49% and below solo ren at 48%. So the pairing is bad in a way that more mechanic does not fix, confirming I-016 three mechanics later.
BOARD #14 ANSWERED: the mid-game power curve does NOT meet the deep hours, and the ladder’s biggest step is between room 1 and room 2. With a FULLY PROGRESSED ~800 fragment save at competent skill (n=64, both skills, gates PASS): yard 33/64 (52%), gym 8/64 (13%), pool 3/64 (5%), boiler 2/64 (3%). The hour1->hour2 drop of 39 points is LARGER THAN THE ENTIRE REST OF THE LADDER COMBINED (13% -> 3%). Perks do not rescue the deep rooms: an exploratory 10-room sweep at n=16 shows the 800 loadout buying +62 points on the yard and +25 on the library but 0-13% everywhere from hour 5 on, with median death time moving only ~15-20s in the deep rooms (boiler 232->249s, roof 215->226s). So hours 5-10 are not gated on progression — they are close to unwinnable at any investment level the lab can express.
THE GOLD STAR IS EFFECTIVELY REACHABLE ONLY IN ROOM 1, which inverts the reward ladder. SCORE_STARS.gold is 330000. A progressed competent player scores 320595 at the median on the YARD (bonusMult 1.00, the lowest-paying room) but only 49681 on the GYM — a 6.4x collapse between adjacent rooms — 34044 on the pool and 38603 on the boiler. So the bonusMult ladder pays MORE as the night deepens (1.00 -> 1.65) while achievable score COLLAPSES, because the player dies at 5:13 instead of 7:55 and never accumulates the chain. The intended design (per the SCORE_STARS comment: gold wants perks, the club, evolutions and deliberate chain play, go gear up on other stages and come back) is inverted in practice: gearing up and moving deeper makes gold LESS reachable, not more.
BOARD #13 DIAGNOSIS CONFIRMED, AND STRONGER THAN STATED: the domain is not a breakthrough anywhere, it is a two-minute entitlement with no gradient across the whole ten-room night. 100% of runs reach a domain — every room, every skill, fresh or fully progressed, 768 runs, no exceptions. The FIRST domain lands at a median of 100-143s regardless of hour: yard 100.4s, gym 112s, boiler 113.2s at competent skill with 800 fragments. So the deep rooms hand out the first domain at essentially the same moment as room 1, and Chris’s intent that early hours should STARVE domain charge has no gradient to build on today. Worse for the diagnosis: the domain is not even the rare resource. At competent skill on the yard a progressed player casts 34.9 domains per run — roughly one every 13 seconds — against only 3.33 elective casts PER MINUTE. Domains outnumber electives about 1.3-to-1 per minute on the yard and the gap widens with skill, so the kit hierarchy is exactly inverted from the design intent: the supposed ultimate is the common verb and the elective is the scarce one.
THE TEN-ROOM NIGHT IS A SAWTOOTH, NOT A RAMP, AND ROOM 2 IS THE SECOND-HARDEST ROOM IN THE GAME. Full ladder re-measured with a properly kitted progressed save (800 fragments AND a live elective, which I-037 lacked), n=64/room, both skills, gates PASS on all ten. Competent clear rates by hour: yard 69%, gym 8%, library 27%, halls 16%, cafeteria 23%, pool 5%, detention 8%, boiler 13%, lab 14%, roof 3%. Ranking rooms by measured easiness against their intended order gives Spearman rho 0.64 — the night is only loosely ordered. Three rooms are badly out of place: GYM plays 5 positions too hard (hour 2, behaves like hour 7), POOL 3 too hard (hour 6, behaves like hour 9), and LAB 4 too EASY (hour 9, behaves like hour 5). The player therefore hits the games second-worst wall at hour 2, finds hours 3-5 EASIER than the wall they just cleared, walls again at the pool, and then finds hours 8-9 easier again. Only yard, halls and roof sit where they were designed to sit.
THE STAR ECONOMY IS INVERTED AND MOSTLY UNREACHABLE: eight of the ten rooms sit BELOW the silver threshold at the median, and no room reaches gold at the median. SCORE_STARS is {silver 65000, gold 330000}. Median run score at competent skill with a full kit, by room: yard 323436, library 85704, halls 56206, lab 54857, gym 47510, cafeteria 47023, boiler 37964, detention 34993, pool 31925, roof 26763. Only the YARD (bonusMult 1.00, the lowest-paying room) and the LIBRARY clear silver at the median; the yard alone comes near gold, falling just 6564 short at p50 so roughly half of yard runs beat it. Meanwhile bonusMult rises 1.00 -> 1.65 across the night. So the fragment reward points UP the ladder while achievable score points DOWN it, and the SCORE_STARS comment intent (gold wants perks, the club, evolutions, go gear up on other stages and come back) is inverted in practice: gearing up and moving deeper makes gold LESS reachable. The roof, the finale and highest-paying room, scores 12x below gold.
The time-gated panic valve is live in src/sim.js (commit 3ae4e8a) and its measured effect matches the I-029 sketch. On standard-16 FINAL at sim fa72528+valve: novice near-miss mean 0.88 with median 1 — the first time heuristic 2 has ever had a pulse — against a ledger-long baseline of ~0.2. Novice deathT p50 5:17. Competent near-miss 0.44, 2/16 wins.
Proposal: Mark I-028, I-029 and I-030 TUNED — the proposal they carried is now shipped. Next: re-baseline the ladder, since the valve changes early-room survival and every night.mjs number predates it. The late-night surround (board #24, I-039) is deliberately untouched: the valve is gated shut past 300s.
scripts/playtest-runner.mjs threads opts.steps/opts.shiki/opts.electives into new Sim(...) (closing I-050s missing passthrough), and casts sim.castShikigami() every tick using the identical policy game.js uses for its own bot mode (hasShiki && no active summon && cooldown clear && enemies.length > 30). A raw-Sim probe confirms 8 shikigami casts across one 720s FINAL run that the old runner would have reported as exactly 0, by construction, forever. Closes board #17 and #21 (5 instances of the same structural pattern: a verb ships wired to game.js and nowhere else). Fix is written and tested (80/80) but sits UNCOMMITTED in the tree pending Chris — this loop does not commit without being asked.
FINAL, ren@yard, maxed perks + elective + full step training + shikigami: skill 0.8 win rate 100% (16/16, 6 clutch), up from a 75% (12/16) perks-only comparison on the same seeds/char/map. First level-up drops 38.6s -> 25.4s, hits taken 45 -> 39, minHP p50 0.461 -> 0.561. Skill 0.25 (novice) reaches 38% (6/16) with the full kit. Answers the decisive question I-050/I-051 left open: the surplus is a genuine economy bug, not evidence of an unfixable difficulty floor — I-046s 5.6% pooled maxed-perks FINAL result was measuring a kit missing 30% of its purchased power. Gates FAIL on clean-sim only (the fix itself is what makes the tree dirty); needs a rerun once the fix lands to pin simSha properly, and this reopens I-045/I-046/I-051/I-052 for a proper re-baseline.
Board #29 confirmed and closed in code: a front-seeking pull toward sim.currentAng after 3s unthreatened closes most of the CURRENT camp exploit. FINAL skill 0.8 win 10/16->7/16 (62%->44%, back near the pre-CURRENT 246f428 baseline of 47%); MIDTERM skill 0.8 win 16/16->12/16 (100%->75%) and dead-air 16%->4%.
Proposal: Land via lab/harness (board #29 addVerdict + branch push). Once merged, re-baseline every FINAL/MIDTERM finding measured on sim 21dd615..3653be1 — that window's win rates and dead-air numbers describe a bot exploit, not the game. Recommend n=64 confirmation before promoting to VALIDATED; this is one bank, one sha.
Full re-baseline on the merged, CLEAN sim bbe6467 (Chris's directive after landing the antikite fix): QUIZ 100%/100% (0.25/0.8, was 63%/100% at 246f428), MIDTERM 50%/75% (was 2%/91%), FINAL 6%/44% (was 0%/47%). FINAL 0.8's 44% lands almost exactly back on the pre-CURRENT 47% baseline; MIDTERM 0.25's 2%->50% is the largest single delta in the table.
Proposal: Treat bbe6467 as the new reference sim for every future finding. MIDTERM novice moving 2%->50% deserves its own investigation before it is trusted (which mechanic drove it, and does heuristic-4's ladder shape still make sense with MIDTERM this close to FINAL's difficulty). QUIZ at 100%/100% may be fine under heuristic 8 (win is a given, score is the hook) but is worth a score-variance check.
I-059's FINAL skill-0.8 win rate does NOT confirm across seed banks: standard-16 gave 44% (7/16), standard-16b gives 75% (12/16) — a 31-point spread (~2.5 SE for n=16 Bernoulli), pooled 59% (19/32). This fails gate 6's 'agrees' bar for VALIDATED. FINAL 0.25 also moved (6%->19%) but both are low-n. QUIZ and MIDTERM-0.25 agree tightly between banks (100/100 vs 94/100, 50% vs 50% exactly); the disagreement is specific to FINAL, and sharper at skill 0.8.
Proposal: Do not treat either single-bank FINAL-0.8 number as the game's win rate; use the pooled 59% (19/32) as the working estimate until a standard-64-scale pool exists. Worth checking whether FINAL competent is bimodal the way novice medians are (I-019) — if a sizeable minority of seeds snowball via early domain/elective timing, a 16-seed sample would land wherever the mode split falls, exactly as I-019 describes for novice kills/domains.
At skill 0.8 (full shop, ren@yard FINAL, n=16), t>=400 vs t<400: dash rate rises 4.34/min -> 18.56/min (+328%), domain 0.69/min -> 2.37/min (+246%), elective 0.46/min -> 1.99/min (+331%), shiki 0.41/min -> 0.63/min (+54%), while held-fire duty cycle FALLS 0.70 -> 0.49 (-30%). Dash is ~8x more frequent than domain in both windows and stays the plurality of discrete actions (74% of dash+elective+shiki+domain casts early, 79% late) -- domains share of that same total is flat (11.6% -> 10.1%). At skill 0.25 dash is structurally 0 in both windows (bot.js gates dashing on skill>0.3, per I-053), so the late-game shift there is fire -22% (0.77->0.57) with domain/elective/shiki all roughly doubling from a low base.
Proposal: The literal board #26 prediction (mix collapses toward move+domain specifically) is not supported at competent skill -- domain does not gain share, dash does, and elective/shiki also scale up rather than disappearing. Chris perception of "just dodge until domain refills" is better explained by dash volume (1 cast every ~3.2s late-game, an order of magnitude above any other verb) than by domain dominance. Do not file heuristic 10 (one-verb solved run) off this data -- it is refuted, not confirmed. If the feel report still stands, the next falsifying test is whether fire+dash together (the only two verbs available at novice-gated dash) crowd out the OTHERS proportionally at t>500 specifically, closer to the true end of the night, rather than the t>=400 bucket used here.
HP<35% crisis (full-shop ren@yard FINAL): competent (0.8) the elective (45 CE) is castable in only 4.0% of crisis ticks (70/1735, affecting 4/16 runs); novice (0.25) 15.4% (3452/22379, 14/16 runs -- more crisis exposure because novice runs spend far longer in danger before dying). The high-density 7+-simultaneous-contact crisis (I-054s stacking metric) is rarer (61 ticks competent, 1 tick novice, ~2s and ~0.03s of aggregate exposure across 16 runs respectively -- OPEN on a thin sample) but castable in exactly 0% of it in both cells. This directly explains why I-055 found the panic button (domain) is the reflex and the elective sits unloaded at death: CE is what both compete for, and by the time a fight is bad enough to count as a crisis, CE has usually already been spent on firing.
Proposal: Board #27s hypothesis holds directionally at both skills and is confirmed under the boards own ~10% bar at competent skill. Not a tuning proposal by itself (that would need to name a knob -- CIRCUIT cost, CE regen, or a crisis-triggered CE rebate -- and predict a size), but it upgrades I-055 from OPEN description to OPEN mechanism: the domain is not preferred out of habit, it is the only verb whose price is not CE. Worth a Chris-facing idea: should a crisis-priced discount exist for the elective specifically (paralleling the recovery valve, which already does something similar for loot), or is CIRCUITs 45 cost simply too close to a full bar for a panic button and wants a flat reduction? Either is a #12-style design question, not a measurement this loop can resolve alone.
Moved the existing dry(<35% CE)/loaded(bench domain ready) tag decision out of botLevel (level-up-only, per I-032: 773/773 tags landed at a level-up) into botInput, which runs every tick; swapCharacter is self-gated on TAG_COOLDOWN so this is safe. Also wired the freshT/freshCostMult free-cast window into the elective cast policy (I-032 point 2). Committed src/bot.js directly per playtest/OWNERSHIP.md self-land rules (npm test 83/83, contract-check green), sim moved bbe6467-lineage 9d12b3e -> 3596e62. Clean-sim ren+kaito+SHIKIGAMI FINAL skill 0.8: 11/16 (69%), matching I-033/I-034s exploratory arm C (70-75% pooled n=128) against the old shipped bots 48% (I-034) -- reproduces bit-for-bit against the same-day dirty-tree pre-commit run (11/16, 0/16 both skills), so nothing else moved with the commit. Skill 0.25 stays 0/16, consistent with I-033 (rotation is a competent-skill lever by construction, respects heuristic 4).
Proposal: CLOSES board #12 and answers I-032/I-033s open question: the lab can now measure LINE_CHANGE honestly without a harness override, on the shipped bot, for both headless play AND the title-screen attract mode (bot.js is shared). Everything measured on club configs before this commit (any FINAL/MIDTERM party>1 number in the ledger, principally I-018/I-033/I-034s exploratory-harness figures) used either arm-A shipped-bot behavior or a harness-only override and should be treated as superseded going forward -- re-baseline club cells opportunistically rather than as a dedicated iteration, since the direction (club now beats a good pairs solo reference) is already confirmed. Not a tuning proposal: the three LINE_CHANGE constants (freshWindow, freshCostMult, benchLullMult) are now honestly testable and are queue-able for the tuner, but this loop is not naming a number to change.
The CE-split (9b962b1: weapon free, CE earned by fighting) pins the cursed-energy pool near its ceiling at every period measured, not just under pressure, and win rates jumped hard everywhere except QUIZ (already at ceiling): MIDTERM 0.25 50%->81% (8/16->13/16), MIDTERM 0.8 75%->100% (12/16->16/16), FINAL 0.25 6%->12.5% (1/16->2/16, tuner ce-split-after), FINAL 0.8 44%->93.8% (7/16->15/16, tuner ce-split-after). CE avg sits at 96-100% median in every cell this iteration measured (QUIZ 100%/97%, MIDTERM 100%/96%).
Proposal: The commit message itself named this exact failure mode ("the naive version backfires -- with nothing draining it the pool pins at 100% and specials become spam") and believed perKill/perDamage earn-rates plus the regen-floor cut (11->1.5) fixed it. This re-baseline says it did not: the pool still pins near-full at every period this run touched. Bare-kit competent FINAL at 93.8% blows past heuristic 4's ~50% perk-invested target -- the game may now be trivialized for competent players well before they spend a single perk. Next: (a) a bespoke tick-level script logging ceFrac over time to see whether it EVER drains meaningfully or is monotonically saturating, (b) check whether perKill/perDamage rates are simply too generous relative to spend rate now that spend (weaponCostMult=0) is zero for the base attack, (c) do NOT treat this as VALIDATED yet -- one bank, one sha, gate 6 needs a second bank/sha agreement.
The CE pool never enters the heuristic-5 target band (27-40%) at any period or skill measured -- 0% of ticks fall below 40% everywhere, including the worst single run (43% minimum, FINAL skill 0.8). Novice CE is not merely high, it is INERT: min-ever-frac=1.000 across all 24 novice runs (3 periods x 8 seeds) because the bot never dashes below skill 0.3 (I-053) and nothing else in the bare kit spends CE, so passive regen alone holds it pinned at the ceiling the entire night. Competent CE does move -- dash spend (8810 CE across 8 FINAL runs) roughly matches what passive regen alone would supply over the same window (8640) -- but regen is fast enough (a full dash-cost of 10 refills in about 6s at the 1.5-1.7/s passive rate) that the pool spends almost no time away from ceiling even under the heaviest dash usage this lab has measured (I-061: 18.56 dashes/min at skill 0.8 late-game).
Proposal: This is now a mechanism, not just a symptom: ENERGY.regen=1.5/s (was 11 when CE was ammo) is still generous relative to the only two spend sinks left (dash 10, electives ~30-45, both cooldown-gated) once the weapon stopped drinking from the pool. Two independent levers could open the band without reverting the free-weapon design: (a) cut ENERGY.regen further (rough math: needs roughly 3-5x reduction, i.e. ~0.3-0.5/s, to let dash spend outpace income during a sustained dash streak), or (b) raise dashCost relative to max so a single dash is a bigger bite. Novice is the harder case -- CE there is not merely comfortable but literally never touched, since the bot is dash-gated below skill 0.3 (I-053) -- so any regen cut needs a companion novice-side spend (or the CE bar should just not be a novice-legible number at all, since nothing in the bare novice kit ever consumes it). Do NOT treat as VALIDATED: one bank (n=8, below gate-1's n>=16), one sha. Needs a confirming rerun at n>=16 before it moves past OPEN, and a second question this does not answer -- does a maxed perk kit (more electives, more dash charges) change the picture materially from bare kit?
The CE-split (9b962b1) win-rate jump generalizes to club (party>1) play, not just solo: club ren+kaito FINAL 0/16->4/16 (0%->25%) at skill 0.25, 11/16->15/16 (68.8%->93.8%) at skill 0.8, on the same rotation-every-tick bot (board #12/I-063) both before and after -- the delta is attributable to the CE-split alone. CE avg still pins 94-97% median with a 2-member party sharing/rotating the same pool, matching I-065's solo pattern.
Proposal: Competent club FINAL at 93.8% is now roughly tied with solo competent FINAL (I-064: 93.8%) -- the club no longer trades survivability for anything at the top end, which may flatten I-018's dilution finding (a mixed-strength club dilutes the stronger player) if CE was part of what made solo the stronger choice. Worth a dedicated club-vs-solo comparison once the CE tune (I-065's proposal) actually ships, since re-measuring against a moving target now would need redoing anyway.
THE HELD BELL (a3a75ba, committed this session) never triggers in either bare-kit ren@yard baseline population, at either skill: across all 32 FINAL runs measured (16/16 skill 0.25, 16/16 skill 0.8) every run either ends at exactly t=720 (nightLen, no overtime -- dawn fired cleanly with bossKills already at the scheduled max of 4) or the player dies before t=720 with bossKills<4. Zero runs show t>720, which is the only observable signature of a boss-held bell (overtimeSec exists precisely for this). Win rate and every other metric are consequently bit-for-bit identical to the pre-HELD-BELL CE-split baseline (I-064): FINAL 2/16 (12.5%) / 15/16 (93.8%) at 0.25/0.8.
Proposal: This is a coverage gap, not necessarily a game bug -- the finale may be reachable at a slower/weaker build (fewer perks, a party that under-kills bosses, a higher stage tier with tougher bosses, or a shorter effective night from a mod) that this lab's default bare-kit sweep does not represent. Two ways to actually observe it: (a) sweep boss HP/spawn timing directly via a config micro-experiment (snapshot BOSS_INTERVAL or boss HP up, remeasure, restore) to force a boss to still be alive at t=720 and confirm the sunburn/CE-bleed/no-floor mechanics behave as designed once reached; (b) ask Chris what population he expects to actually encounter it in live play -- if it's rare in the lab's bare/competent test population it may be similarly rare for real players building toward FINAL, which would undercut the finale as a moment players regularly experience.
The yui+sora 'trap' pairing (I-036: the lab's largest standing heuristic-7 violation, 14% vs ren+kaito's 50% at skill 0.8) is gone on the current sim -- yui+sora FINAL is now 1/16 (6.25%) novice, 16/16 (100%) competent, standard-16, bare kit, sim a3a75ba. Competent yui+sora (100%) is now equal to or ABOVE competent ren+kaito (93.8%, I-066) and solo ren (93.8%, I-064). CE avg still pins ~98-100%. The old 36-point spread has not narrowed toward the middle, it has been overrun: both the 'good' and the 'bad' pairing now sit at or near the win-rate ceiling.
Proposal: This reframes the entire "no dominant choice" heuristic under the current CE economy: it is not that pairings are now balanced against each other, it is that CE saturation (I-065) has pushed essentially everything to the ceiling regardless of underlying pairing quality, so heuristic 7 reads as satisfied for the wrong reason. Once the tuner's CE-band fix (I-065's proposal) actually cuts regen/raises spend, this comparison should be re-run -- if yui+sora's underlying weakness (whatever made it lose 86% of the time before) is still there mechanically, it should resurface once CE stops being an unlimited resource propping up weaker builds. Until then this reads as a symptom of I-064/I-065, not an independent balance fix, and should not be read as "the pairing problem is solved."
Not everything is saturated by the CE-split -- solo sora (the lowest-hp, highest-speed 'glass cannon' kit) is 0/16 (0%) novice FINAL, the only build this whole directed run found that still fully loses. Competent sora is 15/16 (93.8%), in line with every other competent cell measured this run (I-064 ren solo 93.8%, I-066 ren+kaito 93.8%, I-068 yui+sora 100%). So the CE-split's trivialization (I-064/I-065/I-066/I-068) is specifically a COMPETENT-skill effect -- novice play still shows real, large, character-dependent variance: sora 0% vs ren 12.5% (I-064) vs the ren+kaito club 25% (I-066) vs the yui+sora club 6% (I-068).
Proposal: This sharpens where the tuner should actually look: the CE-split proposal in I-065 (cut ENERGY.regen, raise dashCost) targets competent play, where the problem clearly is. It should NOT touch novice by construction if built around dash/elective spend (I-065: novice CE is inert, the bot never spends it below skill 0.3) -- so a regen cut alone should not make sora\u2019s novice wall any worse, but it is worth an explicit check once that tune ships, since 0% is already the floor and any regression there has no room to hide in noise.
roster INTRO TIMING is not the yard->gym cliff lever either; and the cliff survives all five new mechanics at n=64 with the perk tree MAXED
the anger debt's 2/16->5/16 benefit does not survive n=64 (13%->16%, paired p=0.77) — it lives entirely in the first 16 seeds of standard-64; the commit's XP-neutrality claim is however exactly right
Experiments
| id | agent | question | n | sim | gates |
|---|---|---|---|---|---|
2026-09-03-claude-skillsweep-final-05 | claude | skill sweep: does win rate keep climbing steeply past 0.4, or plateau | 16 | d63af7f |
fail |
2026-09-03-claude-skillsweep-final-04 | claude | board #55-era skill sweep: where does the fresh-save FINAL win-rate cliff actually sit between 0.25 (19%) and 0.8 (94%)? | 16 | d63af7f |
fail |
2026-09-03-claude-skillsweep-final-03 | claude | skill sweep: is the cliff between 0.25 and 0.4, or does it move even earlier | 16 | d63af7f |
fail |
2026-09-03-claude-rebaseline-bda12fb-quiz | claude | post-drift re-baseline: where does QUIZ sit after dashCost/tier-speed tunes, builds-per-student, spawn/quiz-timing changes since I-069 | 16 | b32d158 |
pass |
2026-09-03-claude-rebaseline-bda12fb-midterm | claude | post-drift re-baseline: MIDTERM after dashCost/tier-speed tunes since I-069 | 16 | b32d158 |
pass |
2026-09-03-claude-rebaseline-bda12fb-final | claude | post-drift re-baseline: FINAL bare-kit after dashCost 10->20 (I-414) and tier-speed tunes since I-069, does CE band open up | 16 | b32d158 |
pass |
2026-09-03-claude-ladder-n16-threebets | claude | Ladder: can a ren player get from the yard to the roof, where do they stall, and does the shop outlast the night? | 16 | d63af7f |
pass |
2026-09-03-claude-kittedtier3-final | claude | board #55 0f: KITTED TIERS power-ceiling cell, Night III — the hardest named tier, does it clear heuristic 4's ~50pct competent target better than tier 1/2 | 16 | d63af7f |
pass |
2026-09-03-claude-kittedtier2-final | claude | board #55 0f: KITTED TIERS power-ceiling cell, Night II — is heuristic 5 (CE, kitted-only 35-65% band) and heuristic 4's calibration question different from tier 1's I-071 reading | 16 | d63af7f |
pass |
2026-09-03-claude-kitted-bda12fb-final | claude | does the CE band open up for a maxed-perk kit post-drift (dashCost 20, builds-per-student shop rewrite) — I-065 only ever traced bare kit | 16 | b32d158 |
pass |
2026-09-03-claude-gymcliff-postcornertrap-final | claude | board #55 0ad2 / board #36: does the yard-gym FINAL cliff persist post corner-trap fix (38e5b1a)? Prior post-anger-debt reading was gym 0.8=5/16 vs yard 8/16 | 16 | d63af7f |
pass |
2026-09-03-claude-club-renkaito-bda12fb-final-v2 | claude | club ren+kaito FINAL post 'builds are per student' shop rewrite (20e0606) and dashCost 20 — does I-066's near-ceiling club story still hold | 16 | b32d158 |
pass |
2026-09-03-claude-2026-09-03-claude-ladder-threebets-s05 | claude | Ladder: can a ren player get from the yard to the roof, where do they stall, and does the shop outlast the night? | 16 | d63af7f |
fail |
2026-09-03-claude-2026-09-03-claude-ladder-threebets-bothskills | claude | Ladder: can a ren player get from the yard to the roof, where do they stall, and does the shop outlast the night? | 10 | d63af7f |
fail |
2026-09-02-claude-tune-tier3speed2-after | claude | Effect of further NIGHT III enemySpeedMult 1.44->1.6 on kitted win rate (board #46 continued) | 16 | 5a8e642 |
fail |
2026-09-02-claude-tune-tier3speed-before | claude | Baseline: tier 3 kitted win rate before enemySpeedMult change (board #46) | 16 | 7a7a6a2 |
pass |
2026-09-02-claude-tune-tier3speed-after | claude | Effect of NIGHT III enemySpeedMult 1.22->1.44 on kitted win rate (board #46) | 16 | 7a7a6a2 |
fail |
2026-09-02-claude-tune-tier2speed2-before | claude | Baseline at n=64: tier 2 kitted win rate at enemySpeedMult 1.34, before pushing to 1.44 (board #46, I-422 follow-up) | 64 | 156b1c2 |
pass |
2026-09-02-claude-tune-tier2speed2-after | claude | Effect of NIGHT II enemySpeedMult 1.34->1.44 at n=64 (board #46, I-422 follow-up) | 64 | 156b1c2 |
fail |
2026-09-02-claude-tune-tier2speed-before | claude | Baseline: tier 2 kitted win rate before enemySpeedMult change (board #46) | 16 | e3d016d |
pass |
2026-09-02-claude-tune-tier2speed-after | claude | Effect of NIGHT II enemySpeedMult 1.12->1.34 on kitted win rate (board #46) | 16 | e3d016d |
fail |
2026-09-02-claude-tune-tier2hp-after | claude | Effect of NIGHT II enemyHpMult 1.55->1.9 on kitted win rate, watching for I-417 overkill-clamp backfire (board #46) | 64 | 02d88d8 |
fail |
2026-09-02-claude-tune-speedramp-before | claude | Baseline: bare-kit tier1 FINAL win rate before speedRampSec change (board #39/#40, I-425) | 16 | f8f863d |
pass |
2026-09-02-claude-tune-speedramp-after | claude | Effect of DIFFICULTY.speedRampSec 1500->900 on bare-kit tier1 FINAL win rate (board #39/#40, I-425) | 16 | f8f863d |
fail |
2026-09-02-claude-sweep-kitted-final-full-t3-7bf8499 | claude | Standing kitted sweep: final at sim 7bf8499. | 16 | 7bf8499 |
pass |
2026-09-02-claude-sweep-kitted-final-full-t2-7bf8499 | claude | Standing kitted sweep: final at sim 7bf8499. | 16 | 7bf8499 |
pass |
2026-09-02-claude-sweep-kitted-final-full-t1-7bf8499 | claude | Standing kitted sweep: final at sim 7bf8499. | 16 | 7bf8499 |
pass |
2026-09-01-claude-verbmix-final-early-late | claude | Board #26: does late-night FINAL play collapse to move+domain, as Chris reports ("by the end I only dodge until the domain refills")? | 16 | 9d12b3e |
pass |
2026-09-01-claude-tune-speedlate-before | claude | Baseline before DIFFICULTY.speedLatePer30 0.06->0.09 (board #40, HP/speed lever) | 16 | a1c5cb3 |
pass |
2026-09-01-claude-tune-speedlate-after | claude | Effect of DIFFICULTY.speedLatePer30 0.06->0.09 on FINAL win rate (board #40) | 16 | a1c5cb3 |
fail |
2026-09-01-claude-tune-perkill-before | claude | Baseline before ENERGY.perKill 0.3->0.2 (board #44, untested income lever) | 16 | 86f21b8 |
pass |
2026-09-01-claude-tune-perkill-after | claude | Effect of ENERGY.perKill 0.3->0.2 on FINAL win rate, both skills (board #44) | 16 | 86f21b8 |
fail |
2026-09-01-claude-tune-ladderhold-before | claude | Baseline before SPAWN_LADDER.hold 180->140 (board #39) | 16 | 7eb8b6d |
pass |
2026-09-01-claude-tune-ladderhold-after | claude | Effect of SPAWN_LADDER.hold 180->140 on FINAL win rate, both skills (board #39) | 16 | 7eb8b6d |
fail |
2026-09-01-claude-tune-hpramp-before | claude | Baseline before DIFFICULTY.hpRampSec 240->210 (board #40, HP lever) | 16 | c893424 |
pass |
2026-09-01-claude-tune-hpramp-after | claude | Effect of DIFFICULTY.hpRampSec 240->210 on FINAL win rate, both skills (board #40) | 16 | c893424 |
fail |
2026-09-01-claude-tune-gym-wisp-yardref64 | claude | Reference cell n=64: yard FINAL, perks maxed, sim 3c31d02 — the top of the I-048 cliff; unaffected by a gym roster edit | 64 | 7b00588 |
pass |
2026-09-01-claude-tune-gym-wisp-base64 | claude | Baseline n=64: gym FINAL, perks maxed, sim 3c31d02, before the wisp-debut tune (I-040/I-048) | 64 | 7b00588 |
pass |
2026-09-01-claude-tune-gym-wisp-base | claude | Baseline: gym FINAL with the perk tree maxed, sim 3c31d02, before touching the wisp debut (I-040/I-048) | 16 | 7b00588 |
pass |
2026-09-01-claude-tune-gym-wisp-265 | claude | Effect of gym wisp debut 110s -> 265s on the yard-gym FINAL cliff (I-040/I-048)? | 64 | 7b00588 |
fail |
2026-09-01-claude-tune-dashcost2-before | claude | Bare-kit baseline before ENERGY.dashCost 20->30 (board #44 continuation, third lever step) | 16 | a36d6d5 |
pass |
2026-09-01-claude-tune-dashcost2-after | claude | Effect of ENERGY.dashCost 20->30 on bare-kit CE band and win rate (board #44, probing response curve) | 16 | a36d6d5 |
fail |
2026-09-01-claude-tune-dashcost-before | claude | Bare-kit CE/win-rate baseline before ENERGY.dashCost 10->20 (board #44 continuation, I-065) | 16 | 20e0606 |
pass |
2026-09-01-claude-tune-dashcost-after | claude | Effect of ENERGY.dashCost 10->20 on bare-kit CE band and win rate (board #44 continuation, I-065) | 16 | 20e0606 |
fail |
2026-09-01-claude-tune-crash-yard-150 | claude | Control on sim 0157b47 (anger debt + elite tiers): yard FINAL, perks MAXED, crash at its shipped 1.5 — vs the same cell on 3c31d02 | 64 | d2c5720 |
pass |
2026-09-01-claude-tune-crash-gym-fresh | claude | Who pays for the anger debt? Gym FINAL on sim 0157b47 with NO perks, to size the shop's value against the perks-MAXED cells | 64 | d2c5720 |
pass |
2026-09-01-claude-tune-crash-gym-30 | claude | Effect of PRESSURE_WAVE.crash 3.0 (shipped 1.5) on the anger debt's gym FINAL regression, perks MAXED | 64 | d2c5720 |
fail |
2026-09-01-claude-tune-crash-gym-150 | claude | Baseline on sim 0157b47 (anger debt + elite tiers): gym FINAL, perks MAXED, PRESSURE_WAVE.crash at its shipped 1.5 | 64 | d2c5720 |
pass |
2026-09-01-claude-tune-crash-gym-075 | claude | Effect of PRESSURE_WAVE.crash 0.75 (shipped 1.5) on the anger debt's gym FINAL regression, perks MAXED | 64 | d2c5720 |
fail |
2026-09-01-claude-tune-ce-regen-before | claude | CE baseline with circuit elective equipped, before ENERGY.regen cut (I-065 follow-up, board #44) | 16 | 20e0606 |
pass |
2026-09-01-claude-tune-ce-regen-after | claude | CE with circuit elective after ENERGY.regen 1.5->0.5 (I-065 follow-up, board #44) | 16 | 20e0606 |
fail |
2026-09-01-claude-steps-shiki-live-final | claude | Board #17/#21 (I-050/I-052): now that runNight() threads steps/shiki and casts the animal, does the full-shop surplus actually convert to wins at FINAL? | 16 | 21dd615 |
fail |
2026-09-01-claude-rebaseline-bbe6467-quiz-16b | claude | I-059 second-bank confirmation: QUIZ on standard-16b | 16 | bbe6467 |
pass |
2026-09-01-claude-rebaseline-bbe6467-quiz | claude | post-antikite-fix baseline: QUIZ both skills on sim bbe6467 | 16 | bbe6467 |
pass |
2026-09-01-claude-rebaseline-bbe6467-midterm-16b | claude | I-059 second-bank confirmation: MIDTERM on standard-16b | 16 | bbe6467 |
pass |
2026-09-01-claude-rebaseline-bbe6467-midterm | claude | post-antikite-fix baseline: MIDTERM both skills on sim bbe6467 | 16 | bbe6467 |
pass |
2026-09-01-claude-rebaseline-bbe6467-final-16b | claude | I-059 second-bank confirmation: FINAL on standard-16b | 16 | bbe6467 |
pass |
2026-09-01-claude-rebaseline-bbe6467-final | claude | post-antikite-fix baseline: FINAL both skills on sim bbe6467 | 16 | bbe6467 |
pass |
2026-09-01-claude-rebaseline-a3a75ba-solo-sora-final | claude | Does the presumed-weakest solo character (sora, glass cannon, 90hp) still lose under the current CE-saturated ceiling? Directed 10-iteration run, iteration 7. | 16 | 3dc0c1d |
pass |
2026-09-01-claude-rebaseline-a3a75ba-final | claude | Clean re-baseline vs THE HELD BELL (a3a75ba), just committed -- directed 10-iteration run, iteration 5. | 16 | a3a75ba |
pass |
2026-09-01-claude-rebaseline-a3a75ba-club-yuisora-final | claude | Club yui+sora FINAL re-baseline vs a3a75ba (CE-split + THE HELD BELL + rotation-every-tick bot) -- checking I-066/I-036 generalize, directed 10-iteration run, iteration 6. | 16 | a3a75ba |
pass |
2026-09-01-claude-rebaseline-9b962b1-quiz | claude | QUIZ re-baseline after the CE-split (weapon free, CE earned by fighting) + bot elective policy update, sim 9b962b1 -- directed 10-iteration run, iteration 1. | 16 | 9b962b1 |
pass |
2026-09-01-claude-rebaseline-9b962b1-midterm | claude | MIDTERM re-baseline after the CE-split + bot elective policy update, sim 9b962b1 -- directed 10-iteration run, iteration 1. | 16 | 9b962b1 |
pass |
2026-09-01-claude-rebaseline-9b962b1-club-renkaito-final | claude | Club ren+kaito FINAL re-baseline vs 9b962b1 (CE-split + rotation-every-tick bot both in effect) -- directed 10-iteration run, iteration 3. | 16 | 9b962b1 |
pass |
2026-09-01-claude-rebaseline-51285d2-final | claude | Confirm FINAL bare-kit win rate is unmoved after the sunburn-removal/canon-pass commits (03f6ed3, 51285d2) -- directed 10-iteration run, iteration 8. | 16 | 51285d2 |
pass |
2026-09-01-claude-oldsim-3c31d02-gym-fresh | claude | TRUE SIM IS 3c31d02 (pre anger debt) despite the HEAD label — src/ checked out backwards deliberately, hence dirty. Gym FINAL fresh kit n=64, the missing control for the commit's 2/16->5/16 improvement claim | 64 | d2c5720 |
fail |
2026-09-01-claude-ladder-env-before | claude | FINAL baseline before the spawn-ladder envelope (Boneyard wave falloff). | 16 | 6224f25 |
pass |
2026-09-01-claude-ladder-env-after | claude | FINAL after the spawn-ladder envelope, vs ladder-env-before. | 16 | 9d12b3e |
pass |
2026-09-01-claude-heldbell-probe-tier3-final | claude | Boss-timing probe for I-067: does NIGHT III's enemyHpMult=2.2 make a boss survive to bell time and actually trigger THE HELD BELL? | 16 | a3a75ba |
pass |
2026-09-01-claude-heldbell-dirty-informational-final | claude | Informational-only read of THE HELD BELL's effect on FINAL (Chris's WIP, uncommitted, tests green) -- explicitly not gate-eligible, for signal only. | 16 | 9b962b1 |
fail |
2026-09-01-claude-held-bell-midterm | claude | MIDTERM after the held bell (a3a75ba) — the cell where it fires (competent 4/16, heldT p50 26s). | 16 | a3a75ba |
pass |
2026-09-01-claude-held-bell-final | claude | FINAL after the held bell (a3a75ba). Expect digit-identical to ce-split-after: the 600s boss dies before the bell at both skills. | 16 | a3a75ba |
pass |
2026-09-01-claude-gymcliff-before-angerdebt | claude | Gym FINAL baseline before the anger-debt change (board: minute-10 box-in). | 16 | 7b00588 |
pass |
2026-09-01-claude-gymcliff-after-angerdebt | claude | Gym FINAL after the anger debt + elite tiers. | 16 | d2c5720 |
pass |
2026-09-01-claude-fullshop-9b962b1-final | claude | Full-shop FINAL sanity check on 9b962b1 before trusting the bespoke maxed-kit CE trace's 0/8 win rate -- cross-check against the official runner. | 16 | 9b962b1 |
fail |
2026-09-01-claude-edge-v2b-midterm | claude | Edge economy v2 SHIPPED (665519a): MIDTERM vs taper-post-midterm. Supersedes the dirty edge-v2-midterm. | 16 | 665519a |
pass |
2026-09-01-claude-edge-v2b-final | claude | Edge economy v2 SHIPPED (665519a): FINAL vs taper-post-final. Supersedes the dirty edge-v2-final. | 16 | 665519a |
pass |
2026-09-01-claude-edge-v2-midterm | claude | Edge economy v2 (pressure+damp+lull, late rally) on MIDTERM vs taper baseline. | 16 | 5424e98 |
fail |
2026-09-01-claude-edge-v2-final | claude | Edge economy v2 on FINAL vs taper baseline. | 16 | 5424e98 |
fail |
2026-09-01-claude-edge-post-midterm | claude | Edge economy pieces 3+2 on MIDTERM vs taper-post-midterm baseline. | 16 | 5424e98 |
fail |
2026-09-01-claude-edge-post-final | claude | Edge economy pieces 3+2 on FINAL vs taper-post-final baseline. | 16 | 5424e98 |
fail |
2026-09-01-claude-current-leak-midterm | claude | The current + leak SHIPPED: MIDTERM vs edge-v2b-midterm. | 16 | 21dd615 |
pass |
2026-09-01-claude-current-leak-final | claude | The current + leak SHIPPED: FINAL vs edge-v2b-final. | 16 | 21dd615 |
pass |
2026-09-01-claude-club-renkaito-rotation-live | claude | Board #12: with the rotation policy now built into bot.js, does the shipped bot reproduce I-033 arm C's club>solo effect on ren+kaito? | 16 | 9d12b3e |
fail |
2026-09-01-claude-club-renkaito-rotation-clean | claude | Board #12 clean-sim confirmation: club ren+kaito FINAL win rate with the rotation policy live in the shipped bot. | 16 | 3596e62 |
pass |
2026-09-01-claude-ce-trace-tick-level | claude | I-064 follow-up: does the CE pool (post-9b962b1 CE-split) ever meaningfully drain, or does it structurally saturate at every period/skill? What fraction of ticks fall in the heuristic-5 target band (27-40%)? | 9b962b1 |
fail | |
2026-09-01-claude-ce-split-before | claude | FINAL baseline before decoupling the weapon from CE (board #27 / I-062). | 16 | 3596e62 |
pass |
2026-09-01-claude-ce-split-after | claude | FINAL after the CE split, clean tree (supersedes the dirty attempt). | 16 | 9b962b1 |
pass |
2026-09-01-claude-ce-at-crisis | claude | Board #27: is the elective (CIRCUIT BREAK, 45 CE) priced out of the emergency it exists for -- crisis defined as HP<35% or 7+ simultaneous contact-range enemies (I-054)? | 16 | 9d12b3e |
pass |
2026-09-01-claude-antikite-before-midterm | claude | board #29 baseline: does the bot camp the CURRENT's quiet side on MIDTERM? | 16 | 3653be1 |
pass |
2026-09-01-claude-antikite-before-final | claude | board #29 baseline: does the bot camp the CURRENT's quiet side on FINAL? | 16 | 3653be1 |
pass |
2026-09-01-claude-antikite-after-midterm | claude | board #29 fix: does front-seeking after quietT>3s close the CURRENT camp exploit on MIDTERM? | 16 | 3653be1 |
fail |
2026-09-01-claude-antikite-after-final | claude | board #29 fix: does front-seeking after quietT>3s close the CURRENT camp exploit on FINAL? | 16 | 3653be1 |
fail |
2026-08-31-claude-valve-shipped-verify | claude | Does the shipped valve reproduce I-029: novice near-miss up, novice survival up, competent flat? | 16 | 3ae4e8a |
pass |
2026-08-31-claude-tune-iframes-045-mid | claude | Mid-ladder effect of PLAYER.iframes 0.55->0.45 — does it reach the I-006 target band at 0.6 without regressing 0.5? | 64 | aaf2ed9 |
fail |
2026-08-31-claude-tune-iframes-045-invested | claude | Invested 0.6 under iframes 0.45 — does I-006's other half (invested ~50%) survive the tune? | 64 | aaf2ed9 |
fail |
2026-08-31-claude-tune-iframes-045 | claude | Effect of PLAYER.iframes 0.55->0.45 on the FINAL ceiling (I-006), post late-shift? | 64 | aaf2ed9 |
fail |
2026-08-31-claude-tune-gym-spawnmult-1 | claude | Does raising gym spawnMult 0.95->1.0 narrow the yard-gym FINAL cliff (I-040/I-048)? | 16 | 3ae4e8a |
fail |
2026-08-31-claude-taper-post-midterm | claude | Board #28 after: density taper effect on MIDTERM. | 16 | 3ae4e8a |
fail |
2026-08-31-claude-taper-post-final | claude | Board #28 after: density taper effect on FINAL. | 16 | 3ae4e8a |
fail |
2026-08-31-claude-taper-baseline-midterm | claude | Pre-taper MIDTERM baseline on the valve build, for board #28 before/after. | 16 | 3ae4e8a |
pass |
2026-08-31-claude-surround-geometry | claude | Board #23 and #24: which knob produces the inescapable surround, and does a chained domain clear an escape route or refill too slowly to matter? | 20 | 3ae4e8a |
fail |
2026-08-31-claude-solo-ren-elective-gym | claude | Second-MAP reference: solo ren + SHIKIGAMI on THE GYM. | 64 | 9730eeb |
pass |
2026-08-31-claude-solo-ren-elective-9730eeb | claude | The matched SOLO reference for the club cells: ren alone WITH SHIKIGAMI at n=64. Without this the club-vs-solo comparison is confounded by the elective. | 64 | 9730eeb |
pass |
2026-08-31-claude-solo-ren-elective-64b | claude | Second-bank confirm of the SOLO reference cell (I-034): ren + SHIKIGAMI on the genuinely independent standard-64b. | 64 | 9730eeb |
pass |
2026-08-31-claude-rebaseline-lateshift-invested | claude | Invested 0.6 baseline at iframes 0.55 on current HEAD — the I-009 yardstick for judging the tune. | 64 | aaf2ed9 |
fail |
2026-08-31-claude-rebaseline-lateshift-final-mid | claude | Mid-ladder FINAL cells on current HEAD after the late shift + pressure waves — where does the I-006 ceiling sit now? | 64 | aaf2ed9 |
fail |
2026-08-31-claude-rebaseline-lateshift-final | claude | Did Chris's late shift (lurker/moth/warden) + pressure waves move the FINAL cells off the 246f428 baseline? | 64 | aaf2ed9 |
pass |
2026-08-31-claude-probe-iframes-050 | claude | I-407 mechanism probe: is the mid-ladder near-miss collapse a touchCd threshold effect (0.50 behaves like 0.55) or smooth dose-response (0.50 sits midway)? | 64 | f48a154 |
fail |
2026-08-31-claude-linechange-solo-final-carryforward | claude | Does the LINE CHANGE surface change SOLO runs at all? Solo has no bench and no tag, so freshT/benchLull cannot fire — this should replay tune-iframes-045 bit-for-bit. | 64 | 315ce64 |
fail |
2026-08-31-claude-ladder3-greedy-s08-elective | claude | Ladder: can a ren player at skill 0.8 get from the yard to the roof, and where do they stall? | 16 | fa72528 |
fail |
2026-08-31-claude-ladder3-greedy-s08 | claude | Ladder: can a ren player at skill 0.8 get from the yard to the roof, and where do they stall? | 16 | fa72528 |
fail |
2026-08-31-claude-ladder3-greedy-s05-elective | claude | Ladder: can a ren player at skill 0.5 get from the yard to the roof, and where do they stall? | 16 | fa72528 |
fail |
2026-08-31-claude-ladder3-greedy-s05 | claude | Ladder: can a ren player at skill 0.5 get from the yard to the roof, and where do they stall? | 16 | fa72528 |
fail |
2026-08-31-claude-ladder3-greedy-s025 | claude | Ladder: can a ren player at skill 0.25 get from the yard to the roof, and where do they stall? | 16 | fa72528 |
fail |
2026-08-31-claude-ladder3-breadth-s08 | claude | Ladder: can a ren player at skill 0.8 get from the yard to the roof, and where do they stall? | 16 | fa72528 |
fail |
2026-08-31-claude-ladder3-breadth-s05 | claude | Ladder: can a ren player at skill 0.5 get from the yard to the roof, and where do they stall? | 16 | fa72528 |
fail |
2026-08-31-claude-ladder2-yard | claude | Corrected ten-room ladder for the re-grade: room yard with a FULLY kitted progressed save (800 fragments AND a live elective). I-037 measured this ladder with no elective equipped, which understates a progressed player. | 64 | fa72528 |
pass |
2026-08-31-claude-ladder2-roof | claude | Corrected ten-room ladder for the re-grade: room roof with a FULLY kitted progressed save (800 fragments AND a live elective). | 64 | fa72528 |
pass |
2026-08-31-claude-ladder2-pool | claude | Corrected ten-room ladder for the re-grade: room pool with a FULLY kitted progressed save (800 fragments AND a live elective). | 64 | fa72528 |
pass |
2026-08-31-claude-ladder2-library | claude | Corrected ten-room ladder for the re-grade: room library with a FULLY kitted progressed save (800 fragments AND a live elective). I-037 measured this ladder with no elective equipped, which understates a progressed player. | 64 | fa72528 |
pass |
2026-08-31-claude-ladder2-lab | claude | Corrected ten-room ladder for the re-grade: room lab with a FULLY kitted progressed save (800 fragments AND a live elective). | 64 | fa72528 |
pass |
2026-08-31-claude-ladder2-halls | claude | Corrected ten-room ladder for the re-grade: room halls with a FULLY kitted progressed save (800 fragments AND a live elective). I-037 measured this ladder with no elective equipped, which understates a progressed player. | 64 | fa72528 |
pass |
2026-08-31-claude-ladder2-gym | claude | Corrected ten-room ladder for the re-grade: room gym with a FULLY kitted progressed save (800 fragments AND a live elective). I-037 measured this ladder with no elective equipped, which understates a progressed player. | 64 | fa72528 |
pass |
2026-08-31-claude-ladder2-detention | claude | Corrected ten-room ladder for the re-grade: room detention with a FULLY kitted progressed save (800 fragments AND a live elective). | 64 | fa72528 |
pass |
2026-08-31-claude-ladder2-cafeteria | claude | Corrected ten-room ladder for the re-grade: room cafeteria with a FULLY kitted progressed save (800 fragments AND a live elective). I-037 measured this ladder with no elective equipped, which understates a progressed player. | 64 | fa72528 |
pass |
2026-08-31-claude-ladder2-boiler | claude | Corrected ten-room ladder for the re-grade: room boiler with a FULLY kitted progressed save (800 fragments AND a live elective). | 64 | fa72528 |
pass |
2026-08-31-claude-ladder-yard-high800 | claude | Board #14: does the mid-game power curve meet the deep hours? A fully progressed ~800 fragment save on room yard of the new ten-room night. | 64 | b78caf6 |
pass |
2026-08-31-claude-ladder-pool-high800 | claude | Board #14: does the mid-game power curve meet the deep hours? A fully progressed ~800 fragment save on room pool of the new ten-room night. | 64 | b78caf6 |
pass |
2026-08-31-claude-ladder-onenight-skill05 | claude | Ladder: can a ren player at skill 0.5 get from the yard to the roof, and where do they stall? | 12 | fa72528 |
fail |
2026-08-31-claude-ladder-gym-high800 | claude | Board #14: does the mid-game power curve meet the deep hours? A fully progressed ~800 fragment save on room gym of the new ten-room night. | 64 | b78caf6 |
pass |
2026-08-31-claude-ladder-corrected-3skill | claude | Ladder: can a ren player get from the yard to the roof, where do they stall, and does the shop outlast the night? | 16 | fa72528 |
pass |
2026-08-31-claude-ladder-boiler-high800 | claude | Board #14: does the mid-game power curve meet the deep hours? A fully progressed ~800 fragment save on room boiler of the new ten-room night. | 64 | b78caf6 |
pass |
2026-08-31-claude-l5-steps-live | claude | Ladder: can a ren player get from the yard to the roof, where do they stall, and does the shop outlast the night? | 16 | |
fail |
2026-08-31-claude-l5-comp-s08-seedb | claude | Ladder queue 0n/0o/0p: shop=perks, policy=completionist, seed0=500000, skill 0.8. | 16 | fa72528 |
fail |
2026-08-31-claude-l5-comp-s05-seedb | claude | Ladder queue 0n/0o/0p: shop=perks, policy=completionist, seed0=500000, skill 0.5. | 16 | fa72528 |
fail |
2026-08-31-claude-l5-comp-s025-seedb | claude | Ladder queue 0n/0o/0p: shop=perks, policy=completionist, seed0=500000, skill 0.25. | 16 | fa72528 |
fail |
2026-08-31-claude-l5-comp-s025-seeda | claude | Ladder queue 0n/0o/0p: shop=perks, policy=completionist, seed0=90000, skill 0.25. | 16 | fa72528 |
fail |
2026-08-31-claude-l5-chris-econ | claude | Ladder: can a ren player get from the yard to the roof, where do they stall, and does the shop outlast the night? | 16 | fa72528 |
pass |
2026-08-31-claude-l4-seedb-s08 | claude | Ladder queue 0n/0o/0p: shop=perks, policy=greedy, seed0=500000, skill 0.8. | 16 | fa72528 |
fail |
2026-08-31-claude-l4-seedb-s05 | claude | Ladder queue 0n/0o/0p: shop=perks, policy=greedy, seed0=500000, skill 0.5. | 16 | fa72528 |
fail |
2026-08-31-claude-l4-seedb-s025 | claude | Ladder queue 0n/0o/0p: shop=perks, policy=greedy, seed0=500000, skill 0.25. | 16 | fa72528 |
fail |
2026-08-31-claude-l4-full-s08 | claude | Ladder queue 0n/0o/0p: shop=full, policy=greedy, seed0=90000, skill 0.8. | 16 | fa72528 |
fail |
2026-08-31-claude-l4-full-s05 | claude | Ladder queue 0n/0o/0p: shop=full, policy=greedy, seed0=90000, skill 0.5. | 16 | fa72528 |
fail |
2026-08-31-claude-l4-full-s025 | claude | Ladder queue 0n/0o/0p: shop=full, policy=greedy, seed0=90000, skill 0.25. | 16 | fa72528 |
fail |
2026-08-31-claude-l4-comp-s08 | claude | Ladder queue 0n/0o/0p: shop=perks, policy=completionist, seed0=90000, skill 0.8. | 16 | fa72528 |
fail |
2026-08-31-claude-l4-comp-s05 | claude | Ladder queue 0n/0o/0p: shop=perks, policy=completionist, seed0=90000, skill 0.5. | 16 | fa72528 |
fail |
2026-08-31-claude-i030-valve-confirm | claude | I-029's time-gated valve is the lab's one live ship proposal but was measured on ren@yard only. Does the containment hold for other characters, and does the result depend on the exact t=300 cutoff? | 64 | dd9ea8f |
fail |
2026-08-31-claude-i029-valve-time-gate | claude | I-028 proved the recovery valve's effect and its containment problem (competent 47% -> 83%). Time is the one gate competent players demonstrably do not share, since novices die at 3:35 and competent players at 7:38. Does gating panic drops on time keep the novice benefit while holding the competent ceiling flat? | 64 | dd9ea8f |
fail |
2026-08-31-claude-i028-recovery-valve-sketch | claude | I-026/I-027 concluded that a novice lever must have its value FALL as the player improves, and that the recovery valve is the only shape with that property by construction. Sim-sketch three valve shapes and test that claim. | 64 | dd9ea8f |
fail |
2026-08-31-claude-club-yuisora-armA-64b | claude | Second-bank confirm that yui+sora remains the trap pairing (I-016/I-018) post-LINE-CHANGE. | 64 | 9730eeb |
pass |
2026-08-31-claude-club-renkaito-armA-gym | claude | Second-MAP confirm of I-034: does club break-even with solo hold off the yard? | 64 | 9730eeb |
pass |
2026-08-31-claude-club-renkaito-armA-9730eeb | claude | Recorded arm-A club baseline at the clean LINE CHANGE surface: what does ren+kaito+SHIKIGAMI score under the SHIPPED bot, which per I-032 cannot rotate? This is the reference the rotation-capable rerun must beat. | 64 | 9730eeb |
pass |
2026-08-31-claude-club-renkaito-armA-64b | claude | Second-bank confirm of I-034: is the club still BREAK-EVEN with solo under the shipped bot on an independent bank? | 64 | 9730eeb |
pass |
2026-08-31-claude-carryforward-cloudsave-9730eeb | claude | Do the two cloud-save commits (9730eeb, ce6ddd6), which touch src/save.js on the sim surface, change SOLO runs? I-031 proved the uncommitted version inert; this re-pins it at the committed SHA. | 64 | 9730eeb |
pass |
2026-08-31-claude-blastradius-quiz-055 | claude | Counterfactual: QUIZ at iframes 0.55 on the same HEAD. | 64 | f44e438 |
fail |
2026-08-31-claude-blastradius-quiz-045 | claude | Blast radius of the shipped iframes 0.45 on QUIZ. | 64 | f44e438 |
pass |
2026-08-31-claude-blastradius-midterm-055 | claude | Counterfactual: MIDTERM at iframes 0.55 on the same HEAD, to separate my tune from the late shift. | 64 | f44e438 |
fail |
2026-08-31-claude-blastradius-midterm-045 | claude | Blast radius of the shipped iframes 0.45 on MIDTERM — I landed a global constant having measured FINAL only. | 64 | f44e438 |
pass |
2026-08-30-claude-upgrade-dominance-06 | claude | Rotation D: is any upgrade a dominant choice? Prefer-X policy per upgrade id vs botChoose baseline, FINAL ren@yard, skill 0.6 (the steep region), standard-16. | 16 | b001603 |
fail |
2026-08-30-claude-tune-sora-pierce1-b | claude | Effect of sora volley pierce 0->1 on bare-kit FINAL win rate (bank b)? | 16 | b001603 |
fail |
2026-08-30-claude-tune-sora-pierce1 | claude | Effect of sora volley pierce 0->1 on bare-kit FINAL win rate (bank a)? | 16 | b001603 |
fail |
2026-08-30-claude-tune-sora-hp100-b | claude | Effect of sora hp 90->100 (atop pierce 1) on bare-kit FINAL win rate (bank b)? | 16 | 34477c3 |
fail |
2026-08-30-claude-tune-sora-hp100 | claude | Effect of sora hp 90->100 (atop pierce 1) on bare-kit FINAL win rate (bank a)? | 16 | 34477c3 |
fail |
2026-08-30-claude-tune-sora-dmg14-b | claude | Effect of sora volley dmg 12->14 (atop pierce 1) on bare-kit FINAL win rate (bank b)? | 16 | 34477c3 |
fail |
2026-08-30-claude-tune-sora-dmg14 | claude | Effect of sora volley dmg 12->14 (atop pierce 1) on bare-kit FINAL win rate (bank a)? | 16 | 34477c3 |
fail |
2026-08-30-claude-tune-latedouble-70 | claude | Effect of hpLateDouble 100->70 on fresh-save FINAL win rate? | 16 | cc3a4a0 |
fail |
2026-08-30-claude-tune-iframes-055-b | claude | I-006 ceiling, bank b: does PLAYER.iframes 0.7->0.55 hold direction, or is it chaos-dominated like dmgRampSec (I-402)? Bank a gave 0/8/4/9 vs baseline 0/5/8/13 — non-monotone, pooled flips 14 W->L vs 9 L->W. | 16 | 34477c3 |
fail |
2026-08-30-claude-tune-iframes-055 | claude | I-006 ceiling: does PLAYER.iframes 0.7->0.55 (global post-hit intake cap, the first-order UNPINNED player-side lever never tried) move fresh FINAL down where hpLateDouble (I-401) and dmgRampSec (I-402) could not? | 16 | 34477c3 |
fail |
2026-08-30-claude-tune-hpquad-330 | claude | Effect of hpQuadSec 380->330 on fresh-save FINAL win rate? | 16 | 2f56ccd |
fail |
2026-08-30-claude-tune-dmgramp-520-b | claude | Effect of dmgRampSec 600->520 on fresh-save FINAL win rate (bank b)? | 16 | c9fbe18 |
fail |
2026-08-30-claude-tune-dmgramp-520 | claude | Effect of dmgRampSec 600->520 on fresh-save FINAL win rate (bank a)? | 16 | c9fbe18 |
fail |
2026-08-30-claude-sweep-ladder-quiz-5b6dd3d | claude | Standing ladder sweep: quiz at sim 5b6dd3d. | 16 | 5b6dd3d |
pass |
2026-08-30-claude-sweep-ladder-quiz-34477c3 | claude | Standing ladder sweep: quiz at sim 34477c3. | 16 | 34477c3 |
pass |
2026-08-30-claude-sweep-ladder-midterm-5b6dd3d | claude | Standing ladder sweep: midterm at sim 5b6dd3d. | 16 | 5b6dd3d |
pass |
2026-08-30-claude-sweep-ladder-midterm-34477c3 | claude | Standing ladder sweep: midterm at sim 34477c3. | 16 | 34477c3 |
pass |
2026-08-30-claude-sweep-ladder-final-5b6dd3d | claude | Standing ladder sweep: final at sim 5b6dd3d. | 16 | 5b6dd3d |
pass |
2026-08-30-claude-sweep-ladder-final-34477c3 | claude | Standing ladder sweep: final at sim 34477c3. | 16 | 34477c3 |
pass |
2026-08-30-claude-sora-postpierce-shiki | claude | Post-pierce sora + KITSUNE: does the animal's +44-point contribution shrink now that the kit is stronger (I-014 double-buff question)? | 16 | 34477c3 |
pass |
2026-08-30-claude-sora-postpierce | claude | Post-pierce sora bare re-mint (queue 3): current numbers after the tuner's pierce 0->1 so the I-014 double-buff question has a live baseline. Tuner measured 7/16 bank a at 0.8. | 16 | 34477c3 |
pass |
2026-08-30-claude-skill-calibration-final | claude | I-005 calibration: where on the bot skill knob does fresh-save FINAL cross 50% win rate? Decides whether lab-competent=0.8 is superhuman or the FINAL ceiling is soft. | 16 | 2f56ccd |
pass |
2026-08-30-claude-shiki2b-yui-final | claude | I-014 second bank: yui solo with SHIKIGAMI elective FINAL on standard-16b. Pair vs kit2b-yui-final (same seeds); pool with the bank-a shiki-live cells to n=32. | 16 | b001603 |
pass |
2026-08-30-claude-shiki2b-sora-final | claude | I-014 second bank: sora solo with SHIKIGAMI elective FINAL on standard-16b. Pair vs kit2b-sora-final (same seeds); pool with the bank-a shiki-live cells to n=32. | 16 | b001603 |
pass |
2026-08-30-claude-shiki2b-ren-final | claude | I-014 second bank: ren solo with SHIKIGAMI elective FINAL on standard-16b. Pair vs kit2b-ren-final (same seeds); pool with the bank-a shiki-live cells to n=32. | 16 | b001603 |
pass |
2026-08-30-claude-shiki2b-kaito-final | claude | I-014 second bank: kaito solo with SHIKIGAMI elective FINAL on standard-16b. Pair vs kit2b-kaito-final (same seeds); pool with the bank-a shiki-live cells to n=32. | 16 | b001603 |
pass |
2026-08-30-claude-shiki-yui-final | claude | Rotation H / queue 1: shikigami sidegrade check, yui solo with the SHIKIGAMI elective on FINAL. Heuristic 7: no >15% win-rate outlier across the four students at equal skill. First elective-equipped baseline. | 16 | cc3a4a0 |
pass |
2026-08-30-claude-shiki-sora-final | claude | Rotation H / queue 1: shikigami sidegrade check, sora solo with the SHIKIGAMI elective on FINAL. Heuristic 7: no >15% win-rate outlier across the four students at equal skill. First elective-equipped baseline. | 16 | cc3a4a0 |
pass |
2026-08-30-claude-shiki-ren-final | claude | Rotation H / queue 1: shikigami sidegrade check, ren solo with the SHIKIGAMI elective on FINAL. Heuristic 7: no >15% win-rate outlier across the four students at equal skill. First elective-equipped baseline. | 16 | cc3a4a0 |
pass |
2026-08-30-claude-shiki-live-yui-final | claude | Rotation H, real run on c9fbe18 (elective wire fixed): yui solo with SHIKIGAMI elective, FINAL. Judge vs the shiki-yui-final control cell (zero-cast, same seeds) — delta is the shikigami's contribution. Uptime from electiveCasts x dur / lived. | 16 | c9fbe18 |
pass |
2026-08-30-claude-shiki-live-sora-final | claude | Rotation H, real run on c9fbe18 (elective wire fixed): sora solo with SHIKIGAMI elective, FINAL. Judge vs the shiki-sora-final control cell (zero-cast, same seeds) — delta is the shikigami's contribution. Uptime from electiveCasts x dur / lived. | 16 | c9fbe18 |
pass |
2026-08-30-claude-shiki-live-ren-final | claude | Rotation H, real run on c9fbe18 (elective wire fixed): ren solo with SHIKIGAMI elective, FINAL. Judge vs the shiki-ren-final control cell (zero-cast, same seeds) — delta is the shikigami's contribution. Uptime from electiveCasts x dur / lived. | 16 | c9fbe18 |
pass |
2026-08-30-claude-shiki-live-kaito-final | claude | Rotation H, real run on c9fbe18 (elective wire fixed): kaito solo with SHIKIGAMI elective, FINAL. Judge vs the shiki-kaito-final control cell (zero-cast, same seeds) — delta is the shikigami's contribution. Uptime from electiveCasts x dur / lived. | 16 | c9fbe18 |
pass |
2026-08-30-claude-shiki-kaito-final | claude | Rotation H / queue 1: shikigami sidegrade check, kaito solo with the SHIKIGAMI elective on FINAL. Heuristic 7: no >15% win-rate outlier across the four students at equal skill. First elective-equipped baseline. | 16 | cc3a4a0 |
pass |
2026-08-30-claude-rebaseline-ec721ce-final | claude | Queue item 1: re-baseline fresh FINAL on ec721ce (per-student electives + shikigami landed; tests 48->63). Do the standard-16 cells replay the 2f56ccd numbers (0/16, 5/16, 8/16, 13/16 at 0.25/0.5/0.6/0.8)? If identical, rng consumption did not move and old baselines carry forward; if not, all 2f56ccd baselines are stale. | 16 | cc3a4a0 |
pass |
2026-08-30-claude-rebaseline-c9fbe18-final | claude | Carry-forward proof for c9fbe18 (runner gains the input.special -> castElective wire): fresh no-elective FINAL must replay the cc3a4a0/2f56ccd baseline bit-for-bit, since botInput leaves special=false with no elective equipped. | 16 | c9fbe18 |
pass |
2026-08-30-claude-rebaseline-b001603-final | claude | Carry-forward proof for b001603 (ELECTIVES gain a short label field - display only): fresh FINAL must replay the c9fbe18 baseline bit-for-bit. | 16 | b001603 |
pass |
2026-08-30-claude-rebaseline-246f428 | claude | The tuner landed PLAYER.iframes 0.7 -> 0.55, so every row in the ledger's baselines table describes a game that no longer exists. Re-measure all six baseline cells on 246f428, under the new I-019 rules. | 64 | 246f428 |
pass |
2026-08-30-claude-quiz-rebaseline-b | claude | Rotation A, bank b: QUIZ re-baseline confirmation cells for I-001 (flat threat) and I-002 (novice drift above the economy-table 50%). | 16 | b001603 |
pass |
2026-08-30-claude-quiz-rebaseline | claude | Rotation A: QUIZ re-baseline on standard-16 at gate-passing n, replacing the pre-lab quick-6 baselines. Settles I-002 (drift vs the MECHANICS.md economy table: novice 5/10, competent-0.5 10/10) and gives I-001 (flat threat for competent QUIZ) its first n=16 measurement. | 16 | b001603 |
pass |
2026-08-30-claude-perk-delta-mid-final | claude | I-006 follow-up: how many win-rate points does the canonical ~270-fragment mid-tier perk loadout add to FINAL at skills 0.25/0.6/0.8 vs the fresh-save curve? | 16 | 2f56ccd |
pass |
2026-08-30-claude-perk-delta-high-final | claude | I-006 follow-up: does the canonical ~800-fragment perk loadout move FINAL win rate where the ~270-fragment one did not (skills 0.25/0.6/0.8 vs fresh-save curve)? | 16 | 2f56ccd |
pass |
2026-08-30-claude-party-yuisora | claude | Rotation C: 2-club party, strong+weak pairing (yui captain + sora). Does the club flatten the I-012 spread — is sora carried, and does yui's novice rescue survive sharing the night? | 16 | 34477c3 |
pass |
2026-08-30-claude-party-renkaito | claude | Rotation C control pairing: ren captain + kaito, both mid-tier kits. | 16 | 34477c3 |
pass |
2026-08-30-claude-kit2b-yui-final | claude | I-012 second bank: bare-kit yui solo FINAL on standard-16b. Pool with the shiki-yui-final control cells (bank a) to n=32 for the heuristic-7 spread claim. | 16 | b001603 |
pass |
2026-08-30-claude-kit2b-sora-final | claude | I-012 second bank: bare-kit sora solo FINAL on standard-16b. Pool with the shiki-sora-final control cells (bank a) to n=32 for the heuristic-7 spread claim. | 16 | b001603 |
pass |
2026-08-30-claude-kit2b-ren-final | claude | I-012 second bank: bare-kit ren solo FINAL on standard-16b. Pool with the shiki-ren-final control cells (bank a) to n=32 for the heuristic-7 spread claim. | 16 | b001603 |
pass |
2026-08-30-claude-kit2b-kaito-final | claude | I-012 second bank: bare-kit kaito solo FINAL on standard-16b. Pool with the shiki-kaito-final control cells (bank a) to n=32 for the heuristic-7 spread claim. | 16 | b001603 |
pass |
2026-08-30-claude-i027-frontload-remeasure | claude | I-026 showed every shared enemy knob fails by construction, promoting the perk track — the axis novices lack — to the lab's best remaining novice lever. Does I-010's front-load still buy the novice rescue on the current sim, and does it leave the competent ceiling alone? | 64 | dd9ea8f |
fail |
2026-08-30-claude-i026-husk-threshold | claude | I-025 named husk contact as 51% of novice damage and the mechanism as a two-hits-to-kill threshold. Does tuning the husk move the novice wall — and does it cost the competent FINAL ceiling that I-021 just set at 47%? | 64 | dd9ea8f |
fail |
2026-08-30-claude-i025-what-kills-novices | claude | I-024 left the novice wall time-locked at ~215s with the bosses and the HP ramp ruled out, and the queue's next suspect was the HUSK PARADE surge at t=200. Rather than test suspects one config edit at a time: what is actually dealing the damage? | 64 | dd9ea8f |
pass |
2026-08-30-claude-i024-novice-wall-not-the-boss | claude | I-023 named THE JANITOR (boss #1 at 150s) as the killer of 17 of 64 novices and proposed measuring whether BOSS_INTERVAL or first-boss HP is the binding constraint. Which is it? | 64 | dd9ea8f |
fail |
2026-08-30-claude-i023-death-autopsy-postiframe | claude | I-021's iframe tune created 34 new competent FINAL losses. Are those deaths NARRATABLE — at a named boss, or limping toward dawn — or anonymous? This is what decides whether the tune bought retention or only difficulty (heuristic 6, and I-011's 0/97 near-dawn figure). | 64 | dd9ea8f |
pass |
2026-08-30-claude-i019-novice-variance | claude | I-017 died because one novice cell disagreed 4x between the two seed banks. Was that a bad bank, or is n=16 simply too small at novice? Measure the sampling error of a 16-seed cell directly. | 160 | 246f428 |
pass |
2026-08-30-claude-i018-club-dilution | claude | Does I-017 replicate on a second seed bank, and does the proposed fix (benched members earning a share of the active member's domain charge) recover the club's lost wins? | 16 | 34477c3 |
pass |
2026-08-30-claude-i017-domain-freeze | claude | Why does a club cost yui so much? Separate the two party-only domain rules — the 8s DOMAIN_SWAP_LOCK applied after every cast, and the freezing of a benched member's domain charge — by measuring domain casts per night across solo / no-swap / swap arms. | 16 | 34477c3 |
fail |
2026-08-30-claude-i016-yuisora-b | claude | I-016 mechanism cell 1: does yui+sora underperform solo yui on a second seed bank? | 16 | 34477c3 |
pass |
2026-08-30-claude-i016-sorayui-a | claude | I-016 mechanism cell 2: captain order. Does sora-captain + yui change the club result vs yui-captain + sora on the same bank? | 16 | 34477c3 |
pass |
2026-08-30-claude-i016-noswap | claude | I-016 mechanism cell 3: is 'the 2-club is a trap' a property of the party system, or of the bot's CE-triggered swap policy? Neutralize swapping and compare each club against its solo members. | 16 | 34477c3 |
pass |
2026-08-30-claude-i015-confirm | claude | I-015 confirmation: do regen/focus dominance and the step trap hold on bank b and at the skill edges? | 16 | 34477c3 |
pass |
2026-08-30-claude-highperk-0507-final-b | claude | I-009 resolution, bank b: ~800 diamond loadout at skills 0.5/0.7 on clean sim cc3a4a0. Pool with bank a cells for n=32 judgment of the invested curve. | 16 | cc3a4a0 |
fail |
2026-08-30-claude-highperk-0507-final-a-clean | claude | I-009 resolution, bank a: ~800 diamond loadout at skills 0.5/0.7 on clean sim cc3a4a0. Supersedes 2026-08-30-claude-highperk-0507-final-a (dirty sim, do-not-compare). Judge invested curve pooled n=32 with bank b. | 16 | cc3a4a0 |
fail |
2026-08-30-claude-highperk-0507-final-a | claude | I-009 resolution: ~800-fragment high loadout (reserve 4, honed 3, legs 2, flash 1) at skills 0.5/0.7 on standard-16, to judge the invested curve on pooled n=32 cells across both banks. | 16 | 5b6dd3d |
fail |
2026-08-30-claude-frontload2-rank1-b | claude | I-010 rank-1-only cell under the front-load schedule at 0.25, bank b. | 16 | b001603 |
fail |
2026-08-30-claude-frontload2-rank1-a | claude | I-010 rank-1-only cell (~135 diamonds: reserve 1, honed 1, legs 1) under the front-load schedule at 0.25, bank a — is the FIRST purchase felt? | 16 | b001603 |
fail |
2026-08-30-claude-frontload2-mid-b | claude | I-010 re-validation, bank b. Iteration 7 measured 6/16 at 2f56ccd. | 16 | b001603 |
fail |
2026-08-30-claude-frontload2-mid-a | claude | I-010 re-validation on current SHA (config experiment, front-load schedule applied to perkBonuses): mid ~270 diamond loadout at 0.25, bank a. Iteration 7 measured 3/16 here at 2f56ccd; identical replay expected if carry-forward holds. | 16 | b001603 |
fail |
2026-08-30-claude-frontload-perk-mid-final-b | claude | Config micro-experiment (I-008 front-load), second bank: with PERKS rank effects front-loaded in save.js perkBonuses (reserve cum [25,35,40,45,50] HP, honed cum [12,16,19,22,25]%, legs cum [6,8,9]%; max totals unchanged), does the ~270-fragment mid loadout (reserve 2, honed 2, legs 1) buy meaningful win rate vs fresh on standard-16b? | 16 | 5b6dd3d |
fail |
2026-08-30-claude-frontload-perk-mid-final-a | claude | Config micro-experiment (I-008 front-load): with PERKS rank effects front-loaded in save.js perkBonuses (reserve cum [25,35,40,45,50] HP, honed cum [12,16,19,22,25]%, legs cum [6,8,9]%; max totals unchanged), does the ~270-fragment mid loadout (reserve 2, honed 2, legs 1) buy meaningful win rate vs fresh on standard-16? | 16 | 5b6dd3d |
fail |
2026-08-30-claude-death-autopsy-final-midterm | claude | Rotation F death autopsy: where do novice/mid-skill deaths land relative to the 150s special-grade cycle, the scripted SURGES, and dawn? Analysis of archived raw runs from clean-sim manifests only — no new sim execution (working-tree sim surface is mid-edit by another session). | 97 | |
fail |
2026-08-30-claude-curves-midterm | claude | Engagement curves MIDTERM: does the mid-length night have a threat pulse and reward drip at both skills, or is it flat like QUIZ (I-001)? | 16 | 2f56ccd |
pass |
2026-08-30-claude-curves-final | claude | Engagement curves FINAL: threat pulse, reward drip, death-time clustering at both skills on standard-16; extends the QUIZ flat-threat finding I-001 to the long night. | 16 | 2f56ccd |
pass |
2026-08-30-claude-2026-08-30-claude-2bank-perk-mid-final | claude | Second-bank validation of I-008 mid cell: does the ~270-fragment loadout (reserve 2, honed 2, legs 1) still add ~zero win rate at 0.25/0.6/0.8 on standard-16b? | 16 | 2f56ccd |
pass |
2026-08-30-claude-2026-08-30-claude-2bank-perk-high-final | claude | Second-bank validation of I-008 high cell: does the ~800-fragment loadout still add a large delta at 0.6 (+31 pts on standard-16) and small deltas at 0.25/0.8 on standard-16b? | 16 | 2f56ccd |
pass |
2026-08-30-claude-2026-08-30-claude-2bank-fresh-final | claude | Second-bank validation of I-006 (and I-003/I-007 FINAL cells): does fresh-save FINAL still cross ~50% win at skill 0.6 on disjoint seeds (standard-16b), and do near-misses stay ~0? | 16 | 2f56ccd |
pass |
2026-08-30-claude-2026-08-30-claude-2bank-curves-midterm | claude | Second-bank validation of I-003/I-004 MIDTERM cells: flat competent threat (near-miss ~0 at 0.8) and the novice mid-night death wall (deathT p50 ~35-45% of night) on standard-16b. | 16 | 2f56ccd |
pass |
Shipped tuning changes
| date | commit | change |
|---|---|---|
| 2026-09-02 | b32d158 | Rooms pay more through the night; insurance per room, priced by the hour |
| 2026-09-02 | 7b59a3f | Three bets: insurance, the favor's price, rerolls |
| 2026-09-02 | 131c1fb | Short-night bosses carry less hp; the bot fights a held bell instead of kiting it |
| 2026-09-02 | f137f52 | Quiz boss at 2:00: a short night's first boss leads its bell by BOSS_LEAD |
| 2026-09-01 | 5f57340 | Determinism: the auto-aim lock survives a snapshot (I-426) |
| 2026-09-01 | 7bf8499 | Tune: DIFFICULTY.speedRampSec stays 1500 — 900 backfired hard AND exposed a determinism bug (I-425/I-426) |
| 2026-09-01 | f8f863d | Tune: STAGE_TIERS[2].enemyHpMult stays 1.55 — confirmed I-417 backfire, plus a test lock (I-424) |
| 2026-09-01 | 02d88d8 | Tune: STAGE_TIERS[2].enemySpeedMult stays 1.34 — 1.44 bought nothing at n=64, exhausted (I-423) |
| 2026-09-01 | 156b1c2 | Tune: STAGE_TIERS[2].enemySpeedMult 1.12 -> 1.34 — real pressure gained, ceiling unresolved at n=16 (I-422) |
| 2026-09-01 | e3d016d | Tune: STAGE_TIERS[3].enemySpeedMult stays 1.44 — 1.6 reversed the win rate to 88% (I-421) |
| 2026-09-01 | 5a8e642 | Tune: STAGE_TIERS[3].enemySpeedMult 1.22 -> 1.44 — kitted Night III win rate 94% -> 75% (I-046/#46) |
| 2026-09-01 | 82439d7 | Tune: perKill stays 0.3 — 33% income cut moved nothing (I-419) |
| 2026-09-01 | 86f21b8 | Tune: SPAWN_LADDER.hold stays 180 — faster type turnover also backfires (I-418) |
| 2026-09-01 | 7eb8b6d | Tune: hpRampSec stays 240 — raising enemy HP made BOTH skills win MORE (I-417) |
| 2026-09-01 | c893424 | Tune: speedLatePer30 stays 0.06 — locked invariant, out of tuner scope (I-416) |
| 2026-09-01 | a1c5cb3 | Tune: ENERGY.dashCost stays 20 — pushed to 30, bought zero further wins (I-415) |
| 2026-09-01 | a36d6d5 | Tune: ENERGY.dashCost 10 -> 20 — competent FINAL 15/16 -> 14/16, CE off the ceiling |
| 2026-09-01 | 20e0606 | Builds are per student: the club shop is gone, perks live on each sheet |
| 2026-09-01 | 51285d2 | Canon pass: a round's bell is not daybreak |
| 2026-09-01 | 03f6ed3 | Held bell: no sunburn — a round is an hour of the night, not daybreak |
| 2026-09-01 | a3a75ba | The Held Bell: First Bell waits for a live boss — a bounded, self-fueling finale |
| 2026-09-01 | 9b962b1 | Cursed Energy becomes the specials pool: the weapon is free, fighting earns it |
| 2026-09-01 | 9d12b3e | The spawn ladder: every enemy type has an era, not a permanent seat |
| 2026-08-31 | 21dd615 | The current: spawns arrive from a heading, not a closing circle |
| 2026-08-31 | 665519a | The Edge economy, pieces 3+2: pressure-charged domain and late-night rally |
| 2026-08-31 | 5424e98 | Density taper: the late night trades bodies for toughness |
| 2026-08-31 | 3ae4e8a | Recovery valve: panic heal drops, hard-gated to the first 300s |
| 2026-08-31 | fa72528 | THE SHIKIGAMI gets its own slot: shared CE pool, extreme cooldown |
| 2026-08-31 | 2c887f3 | Room dressing: the five new hours look like themselves |
| 2026-08-31 | b78caf6 | ONE NIGHT: the whole game is a single night — ten rooms, one hour each |
| 2026-08-31 | 315ce64 | The Line Change: tagging is a CE rotation, and the entrance is free |
| 2026-08-31 | f44e438 | Tune: record that iframes is a switch at touchCd, not a dial (I-408) |
| 2026-08-31 | f48a154 | Tune: PLAYER.iframes 0.55 -> 0.45 — I-006 met on both clauses |
| 2026-08-31 | aaf2ed9 | Three new curses for the late shift, and blood instead of blobs |
| 2026-08-31 | 691ad3a | Pressure waves: a resolved domain opens real room, on a 30s valve |
| 2026-08-30 | dd9ea8f | Flash step: per-student STEP TRAINING on the student sheet |
| 2026-08-30 | 246f428 | Tune: player iframes 0.7->0.55 — first lever to move the FINAL ceiling, -22 pts at 0.6 and 0.8 |
| 2026-08-30 | 34477c3 | Tune: sora volley pierce 0 -> 1 — I-012 fix-upward, spread 72 -> 53 |
| 2026-08-30 | b001603 | Student sheet: the timetable is four tiles in a row, and the sheet fits |
| 2026-08-30 | ec721ce | Electives enrol per STUDENT, and every student calls a different shikigami |