VOID APEX

Other Systems › Void Apex

The postgame zone above floor 100 — twenty floors of maxed-out wild creatures and ten über bosses behind consumable keys. Best rewards in the game, no shortcuts to reach them. Design settled 2026-08-10 (D rulings); LIVE on release since 0.48 (2026-08-13).

Shape of the zone

Wild creature tuning

Four dials ramp per grind floor. Floor 101 continues the live floor-99 wild exactly; floor 119 is a fully equipped, max-grade, optimized creature. Boss floors carry zero rows, matching the existing convention on floors 10…100.

Quality grade — codex/wild_quality_weights.csv (Apex bands)

Continues zone 10's live band (Epic 40 / Legendary 60) and marches to pure Void at 119. This is an enemy-side ladder only: the Legendary cap on wild quality for players, and the reward economy, are untouched — enemy quality has never fed drops.

FloorEpicLegendaryAbyssalDivinePrimordialVoid
101306010———
103156025———
105—553510——
107—354520——
109—1550305—
111——404020—
113——2045305
115———354520
117———104050
119—————100

Virtual gear — codex/apex_wild_gear.csv (the slot columns are intent, not engine; the AI tier column is live — see below)

Read this before building against the table below. The live implementation gives a wild creature ONE implicit tag value, scaled by tier and by its quality grade — wildTags() in the client. Wild tags have no gem, rune or enchant sockets at all, so the slot counts in this table describe something the engine does not have. As built today the Apex gear ramp is carried entirely by the quality ladder above (Void quality raises the tag through its grade factor). Treat the grades column as the intent and the slot columns as unbuilt. The AI tier column is LIVE since 2026-10-23 (T32): see AI tiers below.

Both combat tags as today (Fang + Carapace, T10), but now graded, with every slot the grade allows filled at that same grade.

FloorGear gradeGems / tagRunes / tagEnchants / tagAI tier
101Rare1111
103Epic2111
105Legendary2212
107Legendary2212
109Abyssal2222
111Abyssal2222
113Divine3223
115Divine3223
117Primordial3323
119Void3333
The optimization rule — deterministic, no per-species authoring. Every gem, rune and enchant on an Apex wild takes that species' dominant axis: Grade_Attack ≥ Grade_Defense → Garnet / Ruin / Attack enchants, otherwise Onyx / Aegis / Defense. It is the same comparison that already chooses Fang vs Carapace, so 300 lines need no hand-built loadouts. HP modifiers stay banned on wilds (Heart, Bloodstone, Vitality) — enemy HP scales through quality alone, which is what keeps a fully-geared floor-119 creature killable while its offensive and defensive numbers max out. D ruling 2026-08-10.

AI tiers

LIVE on release since 0.90 (2026-10-26); built 2026-10-23 (T32). The battle engine reads the tier off the enemy unit (aiPick in src/battle_round.js, shipped in play/battle_module.js, so the client and the server run one brain). The client stamps it from apex_wild_gear.csv AI_Tier (the row at or below the wild floor) and from bosses.csv AI_Tier for an über boss and both its actives. Every enemy without a tier — the tower below 101, Auto PVP, Competitive — keeps the random picker. Concretely: lowest HP = lowest current HP, ties in slot order; kill window = a ready attack that kills on the low roll, the lowest cooldown that does it; held = a move with cooldown 3 or more is not used outside a kill window unless it is the only ready move; Anti = a ready attack whose Anti clause names a living foe’s type is played into that foe; utility creature = the living foe with the most support and debuff moves; status opener = a debuff whose status a foe does not carry yet goes before plain damage. A kill window always comes first. Review: docs/void-apex-ai-2026-10.md in dfmc-client.

Tier 1

Focus the lowest-HP target. Floors 101–103.

Tier 2

Adds Anti-clause exploitation and holds high-cooldown moves for kill windows. Floors 105–111.

Tier 3

Adds priority targeting of the player's utility creature and status-opener sequencing. Floors 113–119, and every über boss.

The dice are never bent. The 0.9–1.1 damage roll, accuracy and every other chance stay exactly as they are at all tiers — difficulty comes from stats, kits and decisions. Battles are deterministic replays, so a biased roll would be provable from a log anyway.

Resulting power

Not generated (C17 sweep, 2026-10-23). A design projection for the graded-tag plan in the table above, not the live engine (see the note before it: the live wild creature carries one implicit tag value). No tool computes it; it is regenerated when that plan is built.

Grade-10 striker profile, dominant axis, compared against the equivalent floor-99 wild today (~840).

Floor101105109113117119
Dominant stat~1,470~2,250~2,670~3,440~4,270~5,000
vs floor 991.7×2.7×3.2×4.1×5.1×6.0×
HP612630647669698712

A floor-119 wild sits at the "maxed creature" end of the validated max-vs-max damage bands, so cap battles land around 10–16 turns; entry floors run ~8–14 turns for a fresh floor-100 player. Postgame-length fights, autoplay throughput broadly held.

Drops

Every Apex drop rolls one of four grades — Rare, Epic, Legendary, Abyssal. Rare is the floor: nothing worse ever drops in the Apex. Divine, Primordial and Void never drop and remain upgrade-only. Each drop reads its own floor's row; boss loot reads the boss floor's row. Existing rates are untouched: three independent 10% rolls per battle, and two guaranteed drops per boss kill.

Full curve in codex/drop_grade_weights.csv, one single-floor band per Apex floor. Boss floors:

Boss floorRareEpicLegendaryAbyssal
10267.5%29.0%3.4%0.12%
10454.6%40.9%4.4%0.15%
10644.1%50.1%5.6%0.20%
10835.7%56.9%7.2%0.27%
11028.9%61.5%9.2%0.36%
11223.4%64.3%11.8%0.48%
11418.9%65.3%15.2%0.64%
11615.3%64.4%19.4%0.85%
11812.4%61.6%24.9%1.13%
12010.0%56.5%32.0%1.50%

Simulated, grind drops and boss loot combined: a dedicated player (12 h/day) sees an Abyssal drop about once every nine days on the entry floors, once every three days mid-zone, and a little over one a day at the cap. A casual player (3 h/day) is roughly four times slower. This does not devalue the chase — Legendary → Abyssal already costs only ~40 Ichor in expectation, so an Abyssal drop is worth a Legendary base plus about four hours of income.

Eggs

Über keys

Über bosses

The ten über bosses are the tower's own ten bosses, returned in mutant form. Not new characters — Vargr comes back on floor 102 and Eskaton on floor 120, in the same order they were first met, each in mutant colouring at level 100 with Void quality, uplifted grades, tier-3 AI, and one signature rule that has to be solved rather than out-statted. Their two actives return with them at Void quality and Apex-grade virtual gear. Kits are inherited from the source boss and re-tuned; art is a mutant recolour of the approved boss portrait, so no new character design is needed. Data: codex/bosses.csv (rows 102–120).

FloorÜber bossReturns fromGradesHPSignature rule
102Über Vargr, the Alphafloor 10A9 D6 U6 S913,750Pack Without End — At the end of every round the Alpha calls one replacement active if a slot is empty; the call is refused for the rest of the battle once he has taken a hit from every unit on your side in a single round.
104Über Pelagos, the Trench Wardenfloor 20A8 D10 U7 S515,250Sealed Gate — Damage below 8% of his maximum HP in a single hit is reduced to zero. Chip, DoT and multihit components each check separately — a wall that only real hits get through.
106Über Sethek, the Ossuary Kingfloor 30A10 D6 U10 S617,250Ossuary Rebirth — The first time he is downed he stands back up at 40% HP with every debuff cleared. Kill the ossuary active first and the second rising never happens.
108Über Mother Vesk, the Broodmotherfloor 40A10 D7 U10 S519,500Brood Tithe — Every round she is not the target of at least one hostile action, she gains a permanent +12% Attack, uncapped. Ignoring her is the losing line.
110Über Ostrakon, the Carapace Despotfloor 50A9 D10 U9 S521,750Carapace Layers — Takes 75% reduced damage until five separate damaging hits land in one round; a hit from each side of a multihit counts. Once five land the armour is gone for the rest of the fight. Burst-once builds cannot open him.
112Über Keraun, the Stormcallerfloor 60A10 D6 U7 S1024,500Storm Priority — Acts first every round regardless of Speed, but every ultimate and priority action on your side resolves before his — speed loses its meaning and sequencing replaces it.
114Über Morast, the Bogfatherfloor 70A10 D10 U8 S527,500Bog Memory — Every named debuff that lands on him is remembered; from the second application of the same debuff onward it is refused. No repeat-debuff loop, one clean window per effect.
116Über Teloma, the Bloom Heraldfloor 80A9 D9 U10 S631,000Spore Inheritance — When one of her actives dies, she gains that active's full move kit for the rest of the battle. Killing her escort arms her — the order you kill in is the fight.
118Über Varkolan, the Undying Kingfloor 90A10 D9 U10 S634,750Two Deaths — The ring holds while any of the three is above 1 HP: a killing blow leaves that one at 1 HP instead. Bring all three to 1 HP and the ring opens — then one can fall each round, in order: Talos, then Ashwalker, then Varkolan.
120Über Eskaton, the Unfinished Godfloor 100A10 D10 U10 S639,000The Unfinished Work — Every 4 rounds the forge rebuilds him: all buffs on your side are stripped and he heals 10% of maximum HP. Landing 25% of his maximum HP in damage inside a single round cancels the next rebuild.

HP is budgeted from the live boss anchor (an on-progression party kills a floor-100 boss in ~10 turns at ~490 damage per turn). Apex budgets assume a party doing 2× that at floor 102 rising to 5× at floor 120, targeting 14–16 turns throughout — 2.8× the floor-100 boss at the entry and 8× at the cap.

Loot: no per-boss tables (D ruling 2026-08-10). Every über boss draws from the same Apex pool as everything else in the zone — what separates them is only the grade odds on their floor's row. There is no target-farming a particular boss for a particular item; the reason to climb is that the odds get better.

Portraits are done and cost nothing. Each über portrait is the deterministic mutant recolour of the approved boss art, produced by tools/make_mutants.py — the same hue-cluster remap that makes every creature mutant, seeded from the boss id, luminance untouched. Run it with python3 tools/make_mutants.py codex/images/mutants bosses; output is codex/images/mutants/BOSS-0X0.webp, exactly where anything already looks for the mutant of that id. No image generation, no matte pass, no credits.

Move powers are deliberately NOT inflated. The authored power bands top out at 160 (Nuke, CD3–4) and every one of these bosses already sits on that ceiling, so the über kits carry over from bosses.csv verbatim — same four moves, same powers, same cooldowns, same synergy text. Raising them would put numbers outside the band system every other move in the game is balanced against. The uplift lives entirely in grades, HP, AI tier and the signature rule. Kits and synergy strings are copied into codex/bosses.csv (rows 102–120) so the über row is self-contained and can be retuned later without touching the tower boss. Overturn this if you want über-only powers above the band.

Where the data lives

The Apex extends the tables the game already reads — it does not add its own. Floors 101–120 are just more rows, so the server picks them up with no change to its data layer:

TableWhat the Apex adds
floors.csv20 rows, zone Void Apex, Is_Boss alternating — this is what makes every even floor a boss room, not a floor-number rule — plus a new Wins_To_Clear column on all 120 rows: ceil(floor^0.65) for 1–100 so the tower is byte-identical to before, and a flat 30 for 101–120
encounter_weights.csv20 rows: the SR/SSR ramp on grind floors, zeroed on boss floors
wild_quality_weights.csv4 new grade columns (Abyssal–Void, zero on every pre-existing band) and 10 per-floor Apex bands
drop_grade_weights.csv80 rows — a single-floor band per Apex floor, Rare through Abyssal
drop_chances_by_floor.csv20 rows — without a row here the drop roller returns no_floor_row and an Apex floor pays nothing at all. Rates match the live per-battle rate exactly; boss floors zeroed as floor 100 already is
key_drop_rates.csv10 rows, one per über key, each tuned to 1 per 360 battles
floor_creature_rarity.csv1,000 rows — all 100 lines on all 10 grind floors, which is the “anything can spawn here” ruling in data
items.csvthe ten über keys
bosses.csv10 rows, floors 102–120 — the same file the game already reads for every boss, so the client resolves an über boss by floor with no new lookup. Three additive columns: Signature_Name, Signature_Rule, AI_Tier, blank on the ten tower bosses

What needed code — all of it built (2026-08-10)

The server half landed on dev 2026-08-10 (dfmc-client dev 74f68de, additive, main untouched). Six places restated the 100-floor tower in code and now read authored data: a named TOP_FLOOR replaces the literal 100 in four floor clamps and the save gate (the three level clamps stay at 100 — levels really do cap there); chanceTables builds a _bossFloors map from the floors.csv rows it already parses, and both floor % 10 === 0 boss tests read it; wild quality's separate six-entry ladder became LEGAL_GRADES so quality can run to Void; item tier is clamped at 10 so the eleventh zone cannot ask for a tier-11 item. Probed on a real worker 2026-08-10 — 14/16. The server half is verified. Floor 119 pays, with grades from the authored Apex band only, item tier 10 so the eleventh zone clamps correctly, and no Divine or above. Floor 102 is a boss floor and 101 is not — the retired every-tenth rule had both backwards — and a floor-102 kill grants exactly the guaranteed gear and egg its loot table authors. The floor is not clamped to 100: floor 100 authors zero drop chance, so a drop at 119 could not have come from a clamped floor. Floor 1 is unaffected. The single remaining failure is the probe running out of rate-bank credit, not the game. A probe must run the worker with ENV_NAME:dev or it reads the pinned codex and measures the previous release.

Four hardcoded assumptions blocked the Apex when it was designed. Each was small, and each was a place where the code of the day restated “the tower is 100 floors of 10-floor zones” instead of reading it. All four are closed:

Data note — there is no second copy. Every Apex table lives in this repo and nowhere else, exactly like the rest of the game data. Dev reads live main, so Apex tables are visible on /dev/ as soon as they are committed; release reads the immutable DATA_PIN snapshot, so nothing here can reach live players until a release advances the pin. That is why the design and its data can land in full while the code is still unwritten.

Signature rules in battle

Built and live on dev 2026-08-10. A signature rule is not a hidden script — it is a status on the boss, visible from the moment the fight starts, sitting on the buff side of its plate like anything else happening to a unit. It carries a red screaming skull in place of the usual effect icon, and its parchment is recoloured dark grey and black so it cannot be mistaken for an ordinary buff. Hovering it shows the rule in full, ending with “This cannot be removed.” There is no duration line, because it never expires, never stacks and cannot be cleansed.

ENFORCED, all ten, on dev since 2026-08-10. The engine reads the rule and acts on it. Handlers hang off four hooks — incoming damage, the killing blow, the end of a round, and the door every named status passes through — plus one bracket in the action ordering. Authored per boss row as Signature_Name and Signature_Rule; a boss whose rule has no handler is simply a boss with a chip, so nothing breaks by being unauthored. ONE CORRECTION, 2026-09-17 (#955). “Enforced” meant “the handler is written and the dispatcher reaches it”, and for the KILLING-BLOW hook that was not the same thing as “the engine asks”: sigLethal was consulted at one of the six places a killing blow lands (the single-target attack branch) and the other five — area, the end-of-round damage-over-time tick, thorns, retaliation and the buff-removal nuke — wrote the unit down without asking. That is corrected for Two Deaths and for every rule that hangs off the same hook. AND THE SAME CORRECTION, 2026-09-17, FOR THE DAMAGE HOOK. The area branch asked neither hook: it computed its per-target damage and subtracted it with no sigDmg call at all, so three rules that hang off incoming damage were blind to area moves — Sealed Gate (104) refused a sword’s chip and took the identical chip from a sweep, Carapace Layers (110) neither priced an area hit at its 25% nor counted it toward the five, and The Unfinished Work’s 25% counter (120) never saw a point of it, so a cancel the party had earned did not happen. Pack Without End (102) reads the same hook for its “who hit him this round” record and now counts an area hit as the hit it is. The area branch asks; the end-of-round and status hooks and the ordering bracket were never in doubt.

FloorRuleHow it is enforced
102Pack Without End
Vargr
Refills one empty enemy slot at the end of each round. Shuts off permanently the moment every living unit on your side has hit him inside a single round — the damage hook records who hit him, keyed on the round, so the check is exact.
104Sealed Gate
Pelagos
Every damage component is tested on its own as it lands. The damage-over-time tick is routed through the same call, so chip, DoT and multihit each check separately exactly as the chip says.
106Ossuary Rebirth
Sethek
Refuses the killing blow once, restoring 40% HP and stripping every debuff while keeping his buffs. Refused outright if Nosferatu is already down.
108Brood Tithe
Vesk
At the end of each round, if she was neither damaged nor hit by a hostile status, a permanent uncapped stack is added. Damage marks her through the engine’s own hit record; a status marks her at the status door.
110Carapace Layers
Ostrakon
Counts damaging hits within the round and cuts everything to 25% until the fifth lands; the count resets each round, but once five land in one round the armour is gone for the rest of the fight. One enormous hit can never open him.
112Storm Priority
Keraun
A flag in the action ordering, ranked below the ultimate bracket and above Speed. Outrunning him is impossible; out-sequencing him is the fight.
114Bog Memory
Morast
One guard at the single door every named effect passes through. Identity is the ability, so a different ability with a similar effect still earns its own window. Buffs are never refused.
116Spore Inheritance
Teloma
At the end of each round, any newly dead escort’s kit is appended to hers, once per escort, duplicate names filtered.
118Two Deaths
Varkolan
A killing blow on any of the three is refused and leaves that one at 1 HP, at every site one can arrive by — attack, area, damage-over-time tick, thorns, retaliation and the buff-removal nuke. The ring latches open at the end of the round in which all three stand at exactly 1 HP; from there the next death in the order Talos → Ashwalker → Varkolan is allowed, one per round, and every other is still refused. Runs after his inherited Soul Elsewhere, which keeps its own single use.
120The Unfinished Work
Eskaton
On every fourth round he strips every ally buff and heals 10%, unless 25% of his maximum HP landed inside that round. The damage hook counts it.

Verified 24/24 against the running client (tools/probe_apexrules.py) rather than against extracted code: floor 102 resolves through the real boss lookup to Vargr carrying his rule out of bosses.csv and his virtual gear; the chip returns the skull icon, types as its own kind, hangs on the buff side, and its hover ends “This cannot be removed.”; and every rule behaves through the same dispatchers the battle path itself calls. What that probe does NOT prove, and did not (#955): it calls sigLethal directly and never through a battle round, so it pins the handler and not the WIRING — which is how the killing-blow hook sat unasked at five of its six sites with a green gate on top of it. Two Deaths is now proved through the resolver instead: tools/probe_955.py 13/13 (3/13 on the tree before it) lands a real killing blow on the ring through each of the six paths and then plays the opened ring out round by round against DFMC_BATTLE.resolveRound. The other nine rules still rest on the 24/24 above.

Server authority

The most valuable content in the game is also the first content built server-authoritative end to end: the key drop roll, the key debit on entry, the Apex floor clear, and every über reward are all server-side, granted only against an open server-held boss session. A disconnect pauses and resumes through the deterministic replay; no refund, no offline credit. All five Apex tables ship pinned like every other data file.

Art

Status

LIVE on release since 0.48 (2026-08-13); playable on /dev/ since 2026-08-10. The über bosses are wired: they live in bosses.csv alongside the tower’s ten, so the existing boss lookup finds them by floor and the existing key lookup finds their key. Design, data, server and client are all landed on the dev branch and verified in the bytes the browser actually receives — the dev bundle carries the new floor ceiling, the authored boss test and the authored win threshold, and the release bundle carries none of them. All three of the things this once waited on have landed: probe coverage for the client rules, D's pass on /dev/, and the release merge, which advanced DATA_PIN so live players read the Apex tables. One propagation note: the dev client reads codex CSVs from GitHub (the raw tree, Pages for a couple of reads), which lags the commit by a few minutes — during that window a new column is silently absent and the client falls back to its old rule, so a freshly authored value can read stale on /dev/ for a short while after a codex push. The release client reads the pinned snapshot (DATA_PIN); from 0.93 (on dev today) it reads it out of the game’s own bucket, art.playdfmc.com/<pin>/, instead of GitHub. The codex players open is codex.playdfmc.com.

Rulings log

The Infinite Abyss — floor 121 and beyond

Built 2026-09-28 on D’s order (report #988, 0.86 board Q9: “Build it.”). SHIPPED IN 0.87. The postgame challenge above the summit. It is not a floor of floors.csv — TOP_FLOOR stays 120 and every clamp in the section below still reads it. The Abyss is a number the server owns on top of a floor-119 fight.

Server authority. The player object keeps one row per account (abyss: number, streak, best, an armed flag, standing-in). Doors under /api/floor/abyss: enter, fight (arms the next fight), loss, leave, and a read. An Abyss battle is credited as an ordinary floor-119 battle carrying abyss:1; only a credited win on an armed fight counts, and the 100th is the floor-up — decided in the battle credit and nowhere else. Arming a fight while the last one is still open (a PvP match went live over it, a reload, a dropped connection) simply re-arms it: only loss resets the number (#1058). leave keeps the number and streak with standing-in off, and enter resumes them. The client never adds a win or a floor; it draws what the server answers.

The tower is 120 floors — the travel clamp, the autoplay gate and the board bound

Shipped in 0.46 as a silent hotfix on 2026-08-10. LIVE on release. Void Apex raised the tower from 100 floors to 120: floors.csv authors floors 1–120 and TOP_FLOOR = 120 is declared in both play/app.js and src/worker.js. Three places still restated the retired 100-floor tower as a literal, and each one is its own failure.

1. travel() clamped to the old ceiling — players were hard-stuck on floor 100

travel() computed its target and then clamped it with Math.min(100, target), left over from the 100-floor tower. The order of operations is what made this fatal rather than merely wrong:

The observable symptom is a portal that draws, accepts the click and does nothing at all — no error, no toast, because the guard is a legitimate no-op path and reports nothing. 0.46 had already moved the portal LABEL to TOP_FLOOR and left the clamp behind, so the tower advertised a floor on a button that could not reach it. This was an incomplete migration, not an unattempted one, which is why the surface looked correct.

2. The autoplay advance gate carried the same literal

Autoplay's advance test read fn < 100 — the same retired constant written a second time in a second place — so autoplay stopped dead at exactly the floor the travel clamp stuck on. Both sites now read TOP_FLOOR.

3. Leaderboard plausibility rejected an Apex climb

The plausibility check bounded a climb entry at 1–100, so an Apex player's board write was refused as lb floor: a legitimate score against a stale bound. Widened to TOP_FLOOR.

Edge cases, verified

TransitionBehaviour
100 → 101Leaving the Godforge den lands on 101 instead of clamping back onto the den.
101 → 103, 103 → 105An ascend skips the even floor. Even Apex floors are boss floors and are never landed on by an ascend.
119 → 120Permitted — 120 is the authored top floor.
120 → ascendRefused. 120 is the true summit; this is the one floor where the ceiling and the no-op guard are supposed to agree.
101 → descendRoutes through the Godforge den at 100 and does not refuse. Descending onto a boss floor is legal; only an ascend skips one.
Do not “fix” the ground plate clamp. Ground plate art exists only to floor 100. Math.min(100, fn) on the plate URL is a deliberate fallback so an Apex floor draws floor 100's plate instead of requesting an asset that was never authored. It is the same expression as the retired travel clamp, and it is the one place that expression is correct. It is not a leftover. Removing it breaks the ground on every Apex floor.
Correction to earlier text on this page (2026-08-10; the first two applied in place 2026-09-09). Three statements above predated 0.46 and were wrong. The first two were still telling readers a shipped zone did not exist, so on 2026-09-09 they were corrected where they stand rather than only here:

Changelog

2026-11-03 — codex review (dfmc-client lane codexreview-a; D 2026-11-03 “review the codex, clean it up, update whatever needs updating”). WIKI ONLY. Headers that still read as open work are closed: What still needs code listed four items all marked done, the virtual-gear table said “not yet implementable” while its AI column is live, the AI tiers said “on dev” (they shipped in 0.90, 2026-10-26) and the boss-egg mechanics said “on release at the next push”. The ten boss-egg weights are filled from apex_boss_egg_rarity.csv like the other tables. The propagation note names where each client reads the data now (GitHub on dev, the pinned snapshot on release, R2 from 0.93) and that players read the codex at codex.playdfmc.com. Checked against dev HEAD: ABYSS_BASE 121 / ABYSS_WINS 100 / pool floor 119, Wins_To_Clear 30 on 101–120, ten über keys and ten boss rows at AI_Tier 3, all as written.

2026-10-23 — hardcode-3: the signature numbers and the abyss step are stat_model.csv rows (dfmc-client lane hardcode-3; D: “The csvs need to be the source of all truth. Hardcoded NEVER.”). Held for release 0.90. Sealed Gate Sig_Sealed_Gate_Frac 8%; Ossuary Rebirth Sig_Ossuary_Rise_Frac 40%; Carapace Layers Sig_Carapace_Hits 5 / Sig_Carapace_Cut 25%; The Unfinished Work Sig_Forge_Every 4 rounds / Sig_Forge_Cancel_Frac 25% / Sig_Forge_Heal_Frac 10%; the Infinite Abyss Abyss_Stat_Step ×1.01 per floor past 121. No number changed. A pin that predates the row keeps the old value and names it (never a refusal); it reaches players when DATA_PIN advances and the bake runs. Gate tools/probe_hardcode3.mjs 33/72 → 72/72.

2026-10-23 — C17 part 3 (dfmc-client lane c17-gen-2): the über bosses’ grades read bosses.csv. WIKI ONLY. The forty A / D / U / S grades are bound to Grade_Attack / Grade_Defense / Grade_Utility / Grade_Speed (all matched). “Resulting power” carries a note: it is a design projection with no generator.

2026-10-23 — the tables on this page read the CSVs (dfmc-client backlog C17). WIKI ONLY; no game code changed. The 120 numbers in the wild-quality, wild-gear, drop-grade and boss-HP tables are now filled from wild_quality_weights.csv, apex_wild_gear.csv, drop_grade_weights.csv and bosses.csv when the page loads (csv-bind.js), so a CSV edit can no longer leave them behind. Two were already wrong: the Epic weight at floors 110 and 112 showed 61.6% and 64.4%; the CSV says 61.5% and 64.3%.

2026-10-23 — the AI tiers are built (dfmc-client backlog T32, D: “Void Apex AI tiers: review and build”). On dev. The three tiers above were design that nothing read: every enemy on every floor took a random ready move on a random target. Now an Apex wild fights at its floor’s AI_Tier (101–103 tier 1, 105–111 tier 2, 113–119 tier 3; the Abyss is fought on 119, so tier 3) and an über boss fight at its row’s (3 on all ten, actives included). The brain draws exactly the rolls the random picker drew, so the dice, the order and every chance are unchanged; untiered enemies and every PvP fight are byte-identical, and the battle door’s credit check (T44) is untouched. Measured on the real engine (every saved account at floor 100+, 48 seeds a floor): win rates move by at most 1 point (119: 92% → 91%, 117: 93% → 94%) — a 3–4 round fight leaves little room for decisions, so difficulty still comes from stats, kits and the signature rules. Probe: tools/probe_t32.py, 3/14 → 14/14.

2026-10-22 — a Competitive match waits for an armed Abyss fight (Tower rulings form card T12, D: “Block PvP during an Abyss fight”). LIVE on release since 2026-10-23 (0.89). The fight resolves first: while the row is armed (open) the player’s PvP ticket is held in the queue and /ready is refused, and the client says so; the credit or the /loss clears the arm and the match is made on the next poll. The number is untouched (#1058 stands: only a death resets it) — what changes is that a match can no longer tear an armed fight down without its loss being recorded. Mechanics and the Worker hop in system-pvp.html (2026-10-22). Probe: tools/probe_t12.py.

2026-10-01 — the AI tier is marked NOT BUILT (Rulings board card aitier, D: “what?? review”). WIKI ONLY; no code changed. The page listed AI tiers 1–3 per Apex floor as if live. Checked: no file in the client or the worker reads AI_Tier (apex_wild_gear.csv, bosses.csv), and every enemy on every floor picks a random usable move and a random target. The table column and the AI tiers section now say so. Whether to build it is open for D.

2026-10-01 — the über bosses are named Über, never Mutant, and the floor map agrees with the den (dfmc-client NAMES, Rulings board card apexnames, D: “their names should not have MUTANT in front of the title. This should be reauthored to Über everywhere for the void apex bosses”). LIVE on release since 2026-10-23 (0.89). The Atlas row of an apex floor read floors.csv Boss_Name, which held the character (“Mutant Vargr, the Alpha”), while the den plate read bosses.csv Boss_Name, the den (“The Alpha’s Den, Unmade”) — two names on all ten floors. One name now, authored once in bosses.csv: Boss_Name and Boss_Short_Name are “Über Vargr” (den plate, floor map, battle plate), Boss_Character is “Über Vargr, the Alpha” (den, entrance card, codex, key text); the Atlas row reads the bosses row and keeps floors.csv only as a fallback (its ten apex cells now match). Adventure-log lines already written keep the name they were written with. Gate: tools/probe_names.py, 1/6 → 6/6.

2026-10-01 — the Void Apex aura is baked art that moves on the compositor: no blur, no blend, and more alive (dfmc-client Bug Run 0.89 board Q8, D: “add something like the portal effects to the auras. Make them seem more alive, but make it cheap and smart like the aether website.”). LIVE on release since 2026-10-23 (0.89). The #196 aura on the enemies of floors 101–120 was a halo and a flare drawn with blur() and a screen blend on every enemy (PREP_PERFORMANCE § 3.5, PREP_ZOOM_FLICKER Layer 4); a blur re-rasters at every zoom and the flare read as a blurred rectangle. It is now the #1052 portal technique: per grade colour, a ring of streaming wisps and a flame column are baked once (tools/make_aura_art.py, play/img/aura/), and only rotation, scale and fade animate. Each apex enemy wears the breathing halo in its grade colour, the wisp ring turning around it, and a flame column that flickers by cross-fading with its mirror. Unchanged: the colour still steps one grade per odd floor (Worn at 101, Void at 119), it still grows stronger floor by floor, and Auto PVP / Competitive opponents still wear none (#516).

2026-10-01 — only a death resets the Abyss: a PvP match, a reload or leaving no longer sends the number back to 121 (#1058, D: “A PVP match should not reset the climb. ONLY DEATH during the climb, PVE.”). LIVE on release since 2026-10-23 (0.89). A competitive match going live over an armed Abyss fight left the fight open on the server, and the next arm counted it as a loss (abyss_unclosed, back to 121). Re-arming over an open fight now keeps the number and the streak; leave keeps them and enter resumes them; only a reported loss (a lost or forfeited Abyss fight) resets. The skull tip says so. Best number on the climb board and the autoplay “Go Down” exit on death are unchanged.

2026-10-01 — the 120 → 121 portal is dark purple, and gray and still while Eskaton stands (#1052, D). LIVE on release since 2026-10-23 (0.89). Part of the portal rework on system-party: the summit den’s door into the Abyss carries the same spinning rune circle over a slow waves well as every other portal, in D’s dark purple; while the floor-120 boss stands it is gray, its ring does not spin and its waves barely crawl — the old grayscale filter over the wrapper is gone (abyssPal / abyssShut replace abyssPortalDim). The gate itself (F272: the floor-120 boss unseals it, not the Alpha) and the transit are untouched. Gate tools/probe_01052.py P5a/P5b, 14/14.

2026-10-01 — the miasma drifts on the compositor, and the battle spots are no longer promoted for good (dfmc-client 0.89 carry-over s4.6, PREP_PERFORMANCE § 3.4 and § 3.7, PREP_ZOOM_FLICKER § 4 layers 2–3). LIVE on release since 2026-10-23 (0.89); the fog’s look is on the board for D. The #686 miasma over floors 101–120 (floor and battle) was three full-screen radial gradients whose background-position drifted every frame under a screen blend: a repaint of the whole screen sixty times a second, a third of the floor’s idle repaint and the layer a pinch-zoom had to re-raster. It is now two seamless fog tiles, violet and cyan (value-noise fbm, tinted and alpha-shaped, drawn in code by tools/make_perf_tiles.py), on oversized layers that move by transform only, opposite ways over 90 s and 140 s, the cyan one breathing by opacity over 23 s; the blend stays on the static box and the floor’s intensity still sets the opacity, so 101 is a wisp and 120 is thick. What changes for the eye: cloud-like fog in place of three soft blobs, and a slower drift. Separately, every battle creature spot carried an unconditional will-change:transform + translateZ(0) + backface-visibility:hidden, six permanent render surfaces with the blurred apex auras inside them; the spot is promoted only while it floats (the ticker moves it) or runs a move animation, and a dead spot has no layer. Measured on a frozen frame, the auras’ screen blend is pixel-identical without the promotion. The blurs themselves (Layer 4) are untouched and wait for D’s phone. Gates tools/probe_zoompaint.py and tools/probe_perf_6.py.

2026-09-30 — a boss floor is a boss battle whatever the event says (dfmc-client review P6 F6-041). On dev. The key gate (F081) ran only when the battle event carried boss exactly equal to 1, so boss:true, "1" or 0 on an authored boss floor skipped the key, was credited as an ordinary battle and moved the ratchet past the boss; a fractional floor (9.5, then 10.5) did the same through the clamp. The battle door now decides bossness from the floor table alone: every battle on a boss floor needs and spends the zone key, a claim clamped down onto a boss floor is not credited (flag boss_floor_clamped), and a non-integer floor is refused 400. Honest clients see no change. Probe tools/probe_lanem_doors.py.

2026-09-30 — the boss egg weight table adds up (review P6 F6-038). DATA ONLY. codex/apex_boss_egg_rarity.csv rows 110 and 114 summed to 99.99 and row 118 to 100.01. The largest cell of each (the SSR weight) took the 0.01: 110 SSR 35.29 → 35.30, 114 SSR 41.45 → 41.46, 118 SSR 47.27 → 47.26; every row now sums to 100. No change in play: the server normalises the weights before it rolls.

2026-09-30 — review drift fixes: F076. WIKI ONLY. The Carapace Layers enforcement row still said the 25% cut resets with the round; since #798 five hits in one round open the armour for the rest of the fight (the chip and the 09-09 entry already said so). DESCRIPTIVE ONLY.

2026-09-30 — the Abyss run ends where the rules say it does, and only there (client review C24: F266, F267, F269, F270, F272; C27: autoplay at the summit, forfeit). CODE FIX, dev. Map travel ends the run. The floor-map TRAVEL button was the one floor change that did not leave the Abyss: the run stayed on, every fight on the destination floor was armed and scaled, and the next Abyss arm filed abyss_unclosed. It now ends the run like the other doors. The run ends after the forfeit question, not before it. The den door, a key’s boss button and LEAVE THE ABYSS ended the run and then asked whether to forfeit the fight in progress, so answering no kept the fight and lost the run anyway. The run now ends only once the trip really happens. A forfeit is an Abyss loss. Forfeiting an Abyss fight counts “exactly as if you were slain” and now reports the loss (back to 121) the way being slain does; before, the armed fight stayed open and the next engage flagged an honest player. Autoplay farms 119. With Auto-Advance on and the summit boss down, autoplay on floor 119 tried to climb, landed on the 120 boss floor (no wild pool) and idled — and in the Abyss ended every run. There is nothing above the summit boss to advance to, so it now farms 119 in place. A wiped account starts the Abyss from nothing. An account reset kept the abyss row (standing-in flag and best); it is deleted with the rest of the progress now. A retried floor-up still floors up. The stored replay of a credited battle did not carry the Abyss answer, so a credit retried after a lost reply never showed the floor-up; it does now. The sealed portal names Eskaton (the floor-120 boss that unseals it), not “the Alpha”. Gate: tools/probe_c24_abyss.py 1/8 → 8/8.

2026-09-30 — the server spends the boss key (client review F081). CODE FIX, dev. The key debit on entry this page describes was the client’s alone: the battle door never checked that a key was held and never spent one, so the boss den’s guaranteed gear and native egg did not actually depend on a key. The server now spends it. A credited boss battle spends one key the server itself minted for that den’s zone (the zone of the floor below the boss, the same one the den asks for), and a boss battle with no such key is not credited at all: no XP, no Ichor, no drops, no floor unlocked, and no rate allowance spent. A key the client spent when the fight started still counts when the victory lands, even if a save in between already dropped it from the bag; a key the server never minted never counts, and a spent key stays spent. Applies to every boss floor, tower and Apex alike. Nothing changes for a player who fights a boss with a key in hand.

2026-09-30 — no first-clear key on the Apex (client review F091). CODE FIX, dev. The tower’s first-clear key is granted on the floor directly below a boss floor. The Apex authors a boss on every even floor, so the server granted one guaranteed Apex key on each odd floor 101–119, ten in all, against D’s 2026-08-10 ruling above: pure roll, no pity, no timer, no guaranteed key. The first-clear key is now granted on tower floors (1–100) only. Apex keys come from the roll alone. Gate: tools/probe_f090_f091.py.

2026-09-28 — the Infinite Abyss is built: floor 121 and beyond, entered from the summit den, numbered by the server (#988, D: “Build it.”). SHIPPED IN 0.87. The rules are in the section above. The server owns the number: a per-account abyss row and four doors under /api/floor/abyss (enter, arm, loss, leave), and one branch in the battle credit that counts an armed floor-119 win and makes the 100th a floor-up, relayed to the Highest Climb board. Abyss fights are priced, spawned and paid as floor 119. The client adds the summit-den portal, the title and number, ABYSS STREAK n / 100, the skull and its rules, the ×1.01(n−121) monster uplift, the lapping hue-shifted plates, and Abyss N on the board. The 120 → ascend refusal below is unchanged: the Abyss is its own door, not an ascend. Gate tools/probe_988.py (the real worker under wrangler dev plus the painted client): 1/10 on the pre-fix tree → 14/14.

2026-09-17 — the area branch asks the damage hook, and three signature rules stop being blind to sweeps (carry-over from #955, D ordered). ON DEV (0.84). The companion to the killing-blow wiring above, and deliberately held back from it because it changes three OTHER bosses and each was owed its own reproduction. The engine’s area path computed its per-target damage and subtracted it from the target with no sigDmg call in it at all, so every rule hanging off incoming damage simply did not see an area move. What that cost, per boss. Sealed Gate (104) is a wall that only real hits get through — it refused a sword chipping him for 2% of his maximum and took the identical chip in full from a sweep, a wall with a door in it, and floor 104’s whole shape was optional for anyone carrying an area move. Carapace Layers (110) lost twice over: the sweep ignored the 75% cut, so it was the cheapest way through armour built to refuse everything but five real hits, and it counted for nothing, so a team that landed four sword hits and a sweep — five separate hits by the chip’s own words — was told it had landed four. The Unfinished Work (120) was the loudest, because the damage was never wrong and the ledger was: area damage never reached the 25% counter, so the forge rebuilt anyway — buffs stripped, 10% healed — in front of a party that had earned the cancel. Pack Without End (102) reads the same hook to record who touched him inside a round and now counts a sweep as the hit it is. The fix is the one call the branch was missing, in the client engine and in the server twin it is transcribed from. It passes no fx, on purpose: the area branch calls the damage core ONCE per target with the move’s authored power and never splits it across a multihit’s components the way the single-target branch does (D’s per-target ruling, 2026-07-31, which is untouched here), so crediting a multi-hit sweep with four hits would hand it full power and multihit counting for one application. One application is one hit. Nothing about per-target power, and nothing about any killing-blow site, changed. Gates — one boss, one reproduction, each driving the real DFMC_BATTLE.resolveRound: tools/probe_aoesig_104.py 3/4 red on the pre-fix tree → 4/4, tools/probe_aoesig_110.py 3/5 → 5/5, tools/probe_aoesig_120.py 2/4 → 4/4.

2026-09-17 — the Two Deaths ring has a break, and it is enforced at every killing-blow site (#955, after #910, D). ON DEV (0.84). D twice: “the void apex varkolan boss special mechanic is very confusing. From its text it seems it is impossible to kill any of them”, then “his special ability still doesn’t make sense. Looks like he is unkillable.” Both halves were real and they were different defects. The wiring: sigLethal was asked at ONE of the six places a killing blow lands — the single-target attack branch — so the ring held against a sword and folded to a sweep, which is exactly D’s #910 sighting of Talos dying while the other two stood. Area, the end-of-round damage-over-time tick, thorns, retaliation and the buff-removal nuke all wrote ko = true without asking; all five now ask, in the client engine and in the server twin it is transcribed from. A second, quieter one went with it: the dispatcher’s “is this the boss himself?” test compared object identity, and every death site hands it a COPY, so the boss’s own killing blow fell through into his escort clause and was refused twice — he was unkillable in the literal sense, whatever the escorts were doing. The rule: the authored text promised a break that was never authored, so D ruled one (Rulings log above). The ring now holds while any of the three is above 1 HP; bring all three to exactly 1 and it latches open at the end of that round; then they fall in the fixed order Talos, Ashwalker, Varkolan, one per round, so the finish is three rounds minimum and an out-of-order blow is still refused. The order is read off the names, not the slots. The chip text, bosses.csv Signature_Rule and the tables on this page now say the same thing. His inherited Soul Elsewhere (P0 CD4, one free killing-blow survive) is untouched and still runs first. NOT in this pass and reported separately: the area branch also skips sigDmg, so Sealed Gate, Carapace Layers and The Unfinished Work’s counter never see area damage — three other bosses, its own reproduction. Gate tools/probe_955.py 3/13 red on the pre-fix tree → 13/13, driving the real DFMC_BATTLE.resolveRound: a killing blow through all six paths, the ring refusing to open until all three sit at 1, an out-of-order kill refused, the one-per-round limit, and the three-round finish.

2026-09-16 (b) — the Void floors get the floor-map treatment every other floor had: no repeated section line, buttons on the edge, their own art in the card (#880, D). ON DEV (0.81). “It just repeats The Void Beyond every floor. Remove that line from all of them in that UI. Shift the travel and enter den buttons slightly to the right so they touch the edge of that container. Each of those floors has its own art, so it should get the same treatment every other floor in the game already has in the floor map — no stretching and no loading the entire image.” The card’s theme line is floors.csv Visual_Theme, and for 101–120 that column carries The Void Beyond on every row, so twenty cards printed the section name under the section name; the floor map now blanks a card’s theme line when it is the one theme every floor of the zone shares, and prints it wherever floors carry their own (1–100 unchanged; the sheet’s per-floor Void names — the First Drift, the Chain Bridge… — live in floor_assets.csv, not in floors.csv, and were not asked for). The TRAVEL / ENTER DEN / BOSS GATE column gives back the row’s 16px of right padding and sits on the card’s edge. The art was never a code gap: every floor card is painted from a pre-cut 1536×96 strip under play/atlas_rows/ — the plate scaled to 1536×864 with its aspect kept, then the middle 96 rows — painted center/cover, so the browser fetches 96 rows of the floor and never the 1920×1080 plate. The client already asked for floor_101.webp…floor_120.webp and prefetched them on opening the zone; the shipped set stopped at 100. The twenty Void strips were cut the same way from the 2026-09-02 ground plates at the release pin and ship with the client. Gate tools/probe_880.py 7/7: no theme line on any Void card, buttons flush to the edge on the Void zone and on 91–100, each card naming its own floor’s strip, all twenty served at 1536×96, and a per-floor-themed zone keeping its lines.

2026-09-16 — the Unmade Teloma faces his challenger (#908, D). ON DEV (0.81). The floor-116 boss faced right in his den and in the fight, and so did the regular floor-80 one: the Apex portrait is the mutant recolour of the same file, and that file is the one boss portrait painted facing right. The client now mirrors it on every surface, keyed on the art file’s boss id so the regular and the Unmade are corrected together. The full account, and the art fix that retires the client mirror, are on bosses.html.

2026-09-09 — the lead and the Status block stop saying this zone does not exist (D). WIKI ONLY. The lead read “not yet implemented” and Status read “nothing on release”; the Apex has been on release since 0.48 (2026-08-13). Both are corrected where they stand rather than only in the correction note below them, which had carried the truth since 2026-08-10 with nobody reading that far. The same marker is flipped on Bosses, Drop Tables, Eggs and Streak. The “not yet implementable” note on the virtual-gear slot columns is LEFT ALONE — wild tags still have no gem, rune or enchant sockets, so that one is true. DESCRIPTIVE ONLY: no game behaviour changes.

2026-09-09 — breaking Ostrakon’s carapace now lasts the whole fight (#798, D). LIVE on release since 2026-09-09 (0.73). Five separate damaging hits inside one round still open him — each side of a multi-hit move counting on its own, so a four-hit move plus one more does it — but the armour used to come straight back when the round ended, so a team that opened him on round one paid the same price again every round after. Measured before the change: four moves in a round landed a quarter, a quarter, then full, and the next round opened back at a quarter. Now the five that break it break it for good. The condition is unchanged: they have to land inside a single round, so four hits a round forever still never opens him. His chip says so. Gate tools/probe_ostrakon.py 7/7, red 6/7.

2026-09-03 — the Void Apex key icons get their alpha back (#712, D). Art on the codex now; the label fix is ON DEV. The 2026-08-10 pass derived the ten Apex keys from the floor keys by recolour and then flattened them onto black with a painted violet swirl, so each icon was an opaque square and the Void grade effect — drawn between the tile backing and the art, as on every other icon — had nowhere to show. Re-derived with the same seed (hue within one degree of what shipped) and the cut-out kept; the 128px derivatives regenerated. On dev, a key’s tooltip and detail window now name its real grade (“Void · T10” instead of “Common · T10”): a key’s grade is its tier. Gate tools/probe_keygrade.py 3/3.

2026-09-02 — onboarding 11.2: a letter waits at the foot of floor 101 (D). LIVE on release since 2026-09-02 (0.68). On the first floor scene at 101 or above, an in-world parchment opens once — sealed in black wax, in the voice of a previous climber: the lords of the Void Beyond carry a mark that cannot be stripped, stolen or outlasted; do not let the fight run itself up here, hover the skull before you commit an order. FOLD THE LETTER sets a grow-only save flag (ftue.letter101) and the letter leaves an Adventure Log entry (“A letter was waiting on floor 101. Click to read it again.”) that re-opens it any time. Accounts already past 101 read it once on their next visit to the floor scene. Gate tools/probe_letter101.py 8/8 (red before).

2026-09-02 — onboarding 11.1b/c: the first skull locks the fight until it is read; losing to a skull explains itself (D). LIVE on release since 2026-09-02 (0.68). 11.1b, the first Apex boss: the moment a boss fight reaches the order phase and the boss carries a signature (skull) status the player has never hovered, the stage dims, a red ring and a pulsing arrow point at the skull chip under the boss's feet with HOVER THE SKULL — This boss has a unique mechanic. Read it before you fight, the move menu and the ultimate plate are hidden, autoplay waits at round 1 if it was already on and the autoplay button refuses with HOVER THE SKULL FIRST if pressed. Hovering the chip (a tap on touch) opens the tooltip as always and sets a grow-only save flag; the fight resumes on the spot and no later boss is gated. Wild fights carry no signature, so the gate cannot fire there. 11.1c, the skull defeat: losing a boss fight while that flag is still unset raises a popup above everything on screen — the skull icon, THE SKULL BEAT YOU, the mechanic's name and its rule, the Apex hint — dismissed only by OK, which sets the same flag. Autoplay waits while it is up. The flag: a new save map ftue ({skull:1}), grow-only by union at the save door like a cleared floor, in the run split key. Gates: tools/probe_skullftue.py 12/12 on the real client (red on the previous tree), tools/probe_ftuemerge.mjs 5/5 on the real worker; probe_bosssig 6/6 and probe_loadtip 5/5 unchanged.

2026-09-02 — onboarding 11.1a: the loading screen tells players about the skull (D). LIVE on release since 2026-09-02 (0.68). The between-floors veil now draws its tip at random from a pool on every loading screen (it used to hold one pick per direction+floor), the tip line is 22px instead of 16px, and the new Apex tip carries the skull status icon inline: “Apex bosses past floor 100 carry a skull status with a unique mechanic — hover the skull to read it.” Adding a tip is one line; a tip may carry an icon. Gate tools/probe_loadtip.py 5/5 (1/5 before). Parts 11.1b (the first-skull lock) and 11.1c (the skull defeat popup) follow.

2026-09-02 — the Void Beyond has its own ground plates, and the miasma thickens floor by floor. LIVE on release since 2026-09-02 (0.67) — the data pin advanced with the release, plates and miasma both. Player report #686. Floors 101–120 had shared one starfield placeholder plate. Twenty plates were authored the way every other floor was — a prompt per floor in the floor-assets sheet, the same fixed camera block, ten drifting wild islands and ten boss arenas with the central platform — generated, approved by D, and shipped as 2560×1440 masters plus 1920×1080 derivatives; the sheet marks them generated and carries each floor’s theme (The First Drift, the Chain Bridge, the Skull Brow, the Echo of the Godforge, the Drowned Throne, the Glass Heart, the Last Stair, the Apex…). On top of the plate, a drifting void-miasma layer — violet and cyan fog, screen-blended, under the creatures — whose strength climbs from faint at 101 to near-total at 120; floors 1–100 carry none. Gate tools/probe_miasma.py 1/6 before, 6/6 after.

2026-09-02 — #664: Carapace Layers now counts HITS, as this page always said. LIVE on release since 2026-09-02 (0.66). A player with a 5-hit, a 3-hit and a 2-hit move in one round reported the 75% cut never lifting. The engine reports each move to the boss’s hook once, with the summed damage, and the hook counted one per report — so ten hits counted as three and the fifth never landed. The hook now counts the move’s hits and prices the crossing move exactly: the hits before the fifth are cut, the rest pay in full (multi-hit splits its power equally, so the share is by hit count). A DoT tick and an ultimate still count as one hit each. Client-only — boss hooks live in the client and bosses are PvE. Gate tools/probe_carapace.py: ratio 0.250 before (the cut all round), 0.640 after against 0.650 expected from the round’s real act order.

2026-08-29 — the Void Apex key tile (#629). On release. Key art was drawn at just over half the tile, the size used for every category except eggs — a key is a single tall object rather than a portrait, so it sat lost in its frame. Keys now get their own size. And an Apex key carries no grade, so the effect that animates every other high-end tile never applied to it; it now uses the same layer, so future changes to those effects reach keys as well. Keys below floor 100 keep their still frame. Still outstanding and not a code matter: there is no Void Apex key art. The ten images for floors 102–120 do not exist, so the tile has nothing to show but its frame.

2026-08-29 — a boss key can no longer walk you out of a fight (#630). LIVE on release since 2026-09-01 (0.65). Travelling to a boss room already stopped mid-fight and asked whether you meant to forfeit. Using a boss key from the inventory took a second route into the same room — and that one asked nothing, so a key click abandoned the fight you were in. Both routes now ask the same question, and answering it takes you where you were going.

Related: Win Streak & Floors for the main-tower threshold this zone overrides, Droptables for the floor 1–100 grade weights, Eggs for the hatch-weight matrix that Apex eggs feed, and Mutant Variants for the cosmetic roll the über bosses borrow their look from.