The twelve-rung ladder: director, champion, physio and mascot walk on

Oliver's four picks, each rolled off its own settled BOSS frame through the
family pipeline (rows in _famroll.py) — the rung and the chapter boss are the
same person. matchFoe decoupled from bossArt's cycling on his call: the match
ladder is 12 with the champion capping rung 12; chapters keep their ten.

The champion refused to bulk through four rolls (words lost, then a new
pair-reference in char_ref only half-won), so his mass is stature: OPPONENTS
rows carry an optional world height h read by zombieH — champion 2.1 m, the
Bulk 2.0 m — and the serve aims at the body actually drawn. HEAD_CROP measured
for all four; ramp test extended to 12 rungs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Fable 5 committed 2026-08-13 18:37:43 +02:00
1 parent 99a87115b3
commit 9a49acff51
130 files changed
+98 -22

No files matched your search

+6 -2
View File
@@ -666,7 +666,7 @@ test('the opponent card is a RAMP: it starts easy and only gets harder', () => {
// invisible until someone plays ten opponents deep.
const { matchFoe, TUNE } = cfg;
let lastSpeed = 0, lastWhiff = 1e9;
for (let n = 1; n <= 10; n++) {
for (let n = 1; n <= 12; n++) { // twelve rungs since 2026-08-13 (champion caps 12)
const f = matchFoe(n);
const speed = (TUNE.matchSpeedBase + (n - 1) * TUNE.matchSpeedPer) * (f.speed ?? 1);
const whiff = TUNE.matchFlub * Math.pow(TUNE.matchFlubKeep, n - 1) * (f.flub ?? 1);
@@ -682,7 +682,11 @@ test('the opponent card is a RAMP: it starts easy and only gets harder', () => {
assert.ok(f.short.length <= 8, `${f.short} fits the board's 8-char slot`);
}
// ...and the opening must actually be gentle: opponent one is the softest thing on the card.
assert.ok((matchFoe(1).speed ?? 1) < (matchFoe(10).speed ?? 1) * 0.6, 'the shambler is no champion');
assert.ok((matchFoe(1).speed ?? 1) < (matchFoe(12).speed ?? 1) * 0.6, 'the shambler is no champion');
// the four 2026-08-13 families wear their own bodies, and the big two carry real stature
for (const [n, fam] of [[5, 'ma'], [8, 'ph'], [11, 'dr'], [12, 'ch']])
assert.equal(matchFoe(n).fam, fam, `rung ${n} wears its own family`);
assert.ok(matchFoe(12).h > 1.85, 'the champion stands taller than a stock body');
});
test('the first opponent cannot paint lines: its returns are width-clamped', () => {