Diablo II, days twelve to seventeen
Days seven to eleven stopped at 12:11 on 21 October with 36 rows on the research map, 35 of them reviewed, and the first end-to-end run of the core specs short of its bar by about sixteen sessions. This post runs to 18:44 on 27 October. The map has 42 rows now and 38 are reviewed. The chain from the game seed to the item on the floor passed its bar that same afternoon. The skills phase, the third of the simulation, has a reviewed spec. The fourth, animation and frame timing, has findings and its first run. The fifth, monster AI, is approved, and a sixth was added behind it.
Six days, and three of them worked. The lanes ran on the 21st until a little after half past seven in the evening, on the 25th for about an hour and a half in the evening, and on the 27th from 06:42 to the cut-off. On the 22nd, 23rd, 24th and 26th nothing was committed: my weekly usage limit had run out. Most of what follows happened on the 27th: of the 146 rows the review ledger gained in the window, 117 are dated that day. Summer time ended in between, at three in the morning of the 25th, so the times on the 21st are UTC+2 and the rest UTC+1.
I did not play this time either. What I did, from the records: on the 21st I asked for the lanes to be paused, six times after the last postβs cut-off, because the weekly limit was running out. On the 25th I approved two plans and the order of the work, held a third, and dropped one of the sessions set aside for me to play, an entry left over from plan 0042. That evening my usage limit stopped the lanes. On the 27th I wrote one note into the run order, asked for the commit gate to be made fast, approved the monster AI plan and its scope decision, accepted a trial of a new review scheme, and approved the plan that fixed the gate.
The map of the work
The research map at each cut-off
- not started
- planned
- findings
- draft spec
- reviewed spec
3 reviewed spec 1 findings 1 planned 23 not started of 28
Core
- rng reviewed spec
- items/tc findings
- items/quality not started
- items/affixes not started
- items/uniques-sets not started
- items/properties not started
- monsters/pool not started
- monsters/spawn not started
- monsters/special not started
- drlg/overview planned
- drlg/preset not started
- drlg/maze not started
- drlg/outdoor not started
- drlg/warps not started
- objects not started
Enablers
- data/excel reviewed spec
- data/calc not started
- data/strings not started
- rng/seeds reviewed spec
- drlg/collision not started
- save/d2s not started
Creation paths
- items/vendors not started
- items/cube not started
- items/sockets-runewords not started
- items/quest-drops not started
- monsters/stats not started
- hirelings not started
- player/creation not started
28 reviewed spec 1 planned of 29
Core
- rng reviewed spec
- items/tc reviewed spec β
- items/quality reviewed spec β
- items/affixes reviewed spec β
- items/uniques-sets reviewed spec β
- items/properties reviewed spec β
- monsters/pool reviewed spec β
- monsters/spawn reviewed spec β
- monsters/special reviewed spec β
- drlg/overview reviewed spec β
- drlg/preset reviewed spec β
- drlg/maze reviewed spec β
- drlg/outdoor reviewed spec β
- drlg/warps reviewed spec β
- objects reviewed spec β
Enablers
- data/excel reviewed spec
- data/calc reviewed spec β
- data/strings reviewed spec β
- rng/seeds reviewed spec
- drlg/collision reviewed spec β
- save/d2s reviewed spec β
Creation paths
- items/vendors reviewed spec β
- items/cube reviewed spec β
- items/sockets-runewords reviewed spec β
- items/quest-drops reviewed spec β
- monsters/stats reviewed spec β
- hirelings reviewed spec β
- player/creation reviewed spec β
Simulation
- combat/formulas planned
35 reviewed spec 1 findings of 36
Core
- rng reviewed spec
- items/tc reviewed spec
- items/quality reviewed spec
- items/affixes reviewed spec
- items/uniques-sets reviewed spec
- items/properties reviewed spec
- monsters/pool reviewed spec
- monsters/spawn reviewed spec
- monsters/special reviewed spec
- drlg/overview reviewed spec
- drlg/preset reviewed spec
- drlg/maze reviewed spec
- drlg/outdoor reviewed spec
- drlg/warps reviewed spec
- objects reviewed spec
- chain findings
Enablers
- data/excel reviewed spec
- data/calc reviewed spec
- data/strings reviewed spec
- rng/seeds reviewed spec
- drlg/collision reviewed spec
- save/d2s reviewed spec
- drlg/lifecycle reviewed spec
Creation paths
- items/vendors reviewed spec
- items/cube reviewed spec
- items/sockets-runewords reviewed spec
- items/quest-drops reviewed spec
- monsters/stats reviewed spec
- hirelings reviewed spec
- player/creation reviewed spec
Simulation
- combat/formulas reviewed spec β
- stats/aggregate reviewed spec
- stats/states reviewed spec
Game rules
- quests/progression reviewed spec
- quests/travel reviewed spec
- items/economy reviewed spec
38 reviewed spec 3 findings 1 planned of 42
Core
- rng reviewed spec
- items/tc reviewed spec
- items/quality reviewed spec
- items/affixes reviewed spec
- items/uniques-sets reviewed spec
- items/properties reviewed spec
- monsters/pool reviewed spec
- monsters/spawn reviewed spec
- monsters/special reviewed spec
- drlg/overview reviewed spec
- drlg/preset reviewed spec
- drlg/maze reviewed spec
- drlg/outdoor reviewed spec
- drlg/warps reviewed spec
- objects reviewed spec
- chain reviewed spec β
Enablers
- data/excel reviewed spec
- data/calc reviewed spec
- data/strings reviewed spec
- rng/seeds reviewed spec
- drlg/collision reviewed spec
- save/d2s reviewed spec
- drlg/lifecycle reviewed spec
Creation paths
- items/vendors reviewed spec
- items/cube reviewed spec
- items/sockets-runewords reviewed spec
- items/quest-drops reviewed spec
- monsters/stats reviewed spec
- hirelings reviewed spec
- player/creation reviewed spec
Simulation
- combat/formulas reviewed spec
- stats/aggregate reviewed spec
- stats/states reviewed spec
- skills/dispatch reviewed spec
- skills/missiles reviewed spec
- skills/catalogue findings
- anim/timing findings
- anim/movement findings
- monsters/ai planned
Game rules
- quests/progression reviewed spec
- quests/travel reviewed spec
- items/economy reviewed spec
The arrow marks a row that moved since the previous snapshot. Source: docs/specs/README.md at commits 8faba4f2, 33dc648, 483728e and a2d31a99. The six new rows are all in the Simulation band.
Show as a table
| Subsystem | Day 1 | Day 6 | Day 11 | Day 17 |
|---|---|---|---|---|
rng | reviewed spec | reviewed spec | reviewed spec | reviewed spec |
items/tc | findings | reviewed spec | reviewed spec | reviewed spec |
items/quality | not started | reviewed spec | reviewed spec | reviewed spec |
items/affixes | not started | reviewed spec | reviewed spec | reviewed spec |
items/uniques-sets | not started | reviewed spec | reviewed spec | reviewed spec |
items/properties | not started | reviewed spec | reviewed spec | reviewed spec |
monsters/pool | not started | reviewed spec | reviewed spec | reviewed spec |
monsters/spawn | not started | reviewed spec | reviewed spec | reviewed spec |
monsters/special | not started | reviewed spec | reviewed spec | reviewed spec |
drlg/overview | planned | reviewed spec | reviewed spec | reviewed spec |
drlg/preset | not started | reviewed spec | reviewed spec | reviewed spec |
drlg/maze | not started | reviewed spec | reviewed spec | reviewed spec |
drlg/outdoor | not started | reviewed spec | reviewed spec | reviewed spec |
drlg/warps | not started | reviewed spec | reviewed spec | reviewed spec |
objects | not started | reviewed spec | reviewed spec | reviewed spec |
chain | β | β | findings | reviewed spec |
data/excel | reviewed spec | reviewed spec | reviewed spec | reviewed spec |
data/calc | not started | reviewed spec | reviewed spec | reviewed spec |
data/strings | not started | reviewed spec | reviewed spec | reviewed spec |
rng/seeds | reviewed spec | reviewed spec | reviewed spec | reviewed spec |
drlg/collision | not started | reviewed spec | reviewed spec | reviewed spec |
save/d2s | not started | reviewed spec | reviewed spec | reviewed spec |
drlg/lifecycle | β | β | reviewed spec | reviewed spec |
items/vendors | not started | reviewed spec | reviewed spec | reviewed spec |
items/cube | not started | reviewed spec | reviewed spec | reviewed spec |
items/sockets-runewords | not started | reviewed spec | reviewed spec | reviewed spec |
items/quest-drops | not started | reviewed spec | reviewed spec | reviewed spec |
monsters/stats | not started | reviewed spec | reviewed spec | reviewed spec |
hirelings | not started | reviewed spec | reviewed spec | reviewed spec |
player/creation | not started | reviewed spec | reviewed spec | reviewed spec |
combat/formulas | β | planned | reviewed spec | reviewed spec |
stats/aggregate | β | β | reviewed spec | reviewed spec |
stats/states | β | β | reviewed spec | reviewed spec |
skills/dispatch | β | β | β | reviewed spec |
skills/missiles | β | β | β | reviewed spec |
skills/catalogue | β | β | β | findings |
anim/timing | β | β | β | findings |
anim/movement | β | β | β | findings |
monsters/ai | β | β | β | planned |
quests/progression | β | β | reviewed spec | reviewed spec |
quests/travel | β | β | reviewed spec | reviewed spec |
items/economy | β | β | reviewed spec | reviewed spec |
One row moved and six are new. chain went from findings to reviewed. Two skills rows, dispatch and missiles, are new and already reviewed: they were added during the skills phase and their spec was reviewed on the 27th. The third, the catalogue of every numbered skill function, has its findings complete and no spec yet. The animation phase has two rows with findings, timing and movement. And monsters/ai is on the map as planned: an approved plan, a first phase reviewed, no findings.
Seed to world, run 2
The previous post left plan 0048 with 1,222 room populations against a bar of 2,000, two mismatches in the objects model, and a reviewβs reading of them: monsters re-created after their room was released and returned, with no logged mark. Run 2 settled both. The re-creations go through RoomInactiveUnitsRestore and mark the collision map through the same UNIT_CollMark calls as a first creation; the logger had missed them because they run outside its window. Once it caught them, the run on the 21st finished at 37 logs and zero failed checks:
Of the 7,290 re-creations, 1,903 were compared line for line with the gameβs own: 1,729 alive, 174 dead. The control: run with --cf recreation-off, the model βrestores exactly run 1βsβ two mismatches, and switching off a different mechanism, the monster equipment, breaks two new cases, both Blood Raven. The review closed the phase at 13:11 and ruled how far the unchecked part counts: the 5,284 re-creations applied on run 1βs logs without a line to compare are βadmissible for 0 mismatches and populations, not as mark evidence.β
The spec, specs/chain/README.md, was reviewed at 13:51 with 89 confirmed claims, [C], read in the code and confirmed by a run, against 7 inferred, [I], read in the code only, and the wiki page at 14:19. The wiki reviewβs first fix took out the phrase I had used in the last postβs chart: βfrom the game seed alone.β The page says now that 37 games were rebuilt with zero mismatches βgiven the recordingβs walk and fight results and a few counted values still read from it.β So: the chain predicts the world from the seed, and takes what the player did in it, the walk and the fights, from the recording. Plan 0048 closed at 14:23 on the 21st.
Skills
Plan 0045 is the machinery of skills and missiles: dispatch, packets, missiles, event handlers. The previous post had its static phase done and five community claims contradicted on paper. Phase 2 started on the 21st, was paused twice at my request, and ran on the 25th: 18 sessions with eight characters, 335,618 checks, zero mismatches. A second part on the 27th added 15 sessions, also zero, and re-checked the first partβs 18 logs. The sessions are played by the pilot, the projectβs script that drives the game from screenshots, and a skill shows up in the logs as two functions: a start function, run when the cast begins, and a do function, run on its action frame.
The five contradictions, as the runs met them:
- Raise Skeletonβs level. The community says a skeleton is raised at the casterβs level. The code gives
min(max(L Γ 3/4 + skill level, 1), L). A caster of level 86 with the skill at 20 raised every skeleton at 84. - Missile range. The community adds
LevRangefor each level beyond the first; the code multiplies it by the level. The case was Blaze, whoseLevRangeis 25, and the first part could not get it: βthe pilot teleportsβ, so no walking trail of fire was logged. The second part walked: 271 Blaze creations at skill level 2, each with the codeβs range and not the communityβs, which counts from level two and would give oneLevRangeless. - Acceleration is added on every fifth step of a missileβs path, not on every frame: 1,657 accelerating steps, 278 of them fifth steps, 60 at the cap.
- A piercing missile that misses its to-hit keeps flying and does no damage, the community says. The code ends it at that unit.
- Missile velocity,
((VelLev Γ lvl) / 8 + Vel) << 8, is the one the runs could not show. The monsters that fire the right missile were all met at level one, where the level term is zero: β22spike2creations β¦ all at level 1.β The ruling was not to send the pilot to Nightmare for quill rats; the Blood Moor ones stay an opportunistic check.
The run also corrected the reading in one place. The static spec had said that Raise Skeleton draws nothing from the casterβs seed. The first dev sessions on the 21st saw the seed step once after the spawn, three times out of three, and the run on the 25th located the draw at 0x005C4430.
The Barbarian's hands in the second skills run
-
Fleshripper
-
Lacerator
From the project's tools/item_art.py. The recipe SkillsBarH dual-wields the two, with a unique at its best roll in every other slot. Diablo II art Β© Blizzard Entertainment.
Fleshripper was the knife that broke the combat model a week earlier, 101 mismatches in a kill handler nobody had read. The handler model now replays all 3,461 old fires, that sessionβs log included, and the second skills run gave a Barbarian the knife in one hand and Lacerator in the other. The prevent-heal state was applied 86 times.
One finding is about the client. A refused skill never reaches the server: βthe client runs the same SKILLS_CanUse on its own copy of the player every frame (0x004D9FC5) and sends no request for a refused skillβ, so the refusal cases are a shortfall that cannot be closed from the serverβs side. Another is about Kick. The stock Kick row has a minimum and maximum damage of zero, so its own hit does zero physical damage: 25 deliveries reached COMBAT_ApplyDamage βwith result 9, physical 0 β¦ where GetPhysMinβs Kick branch would give at least 49 920.β The strength-and-dexterity branch for kicks is real, but it is reached by the Assassinβs Dragon Talon, Dragon Tail and Dragon Flight, and among monsters only the Shadow Warrior and the Shadow Master hold a skill with the kick bit.
The phase closed on the 27th: the specs at 09:30, with nine fixes, among them that the pet limit removes βthe first of its listβ, not βthe oldestβ, and the wiki page at 09:58, with nine more, among them βKick βbuilds a fixed hitββ as an overclaim.
The catalogue, 310 of 310
Plan 0046, the catalogue of every numbered skill function, runs them one by one in Ghidraβs processor emulator, as the previous post described. The last four batches ran on the 21st, 42,600 cases, zero mismatches, and Phase 1 closed at 310 of 310 entries. What the emulator showed:
- A monster function, do 152, βis do 95 β¦ instruction for instructionβ: 147 instructions, none different.
- Do 112 casts one of five fixed curses, chosen by the casterβs seed modulo five. One of the five, Lower Resist, has a resistance branch that cannot be reached.
- The exploding and poison shrines drop five to nine potions. βFive to tenβ is only the text of the shrinesβ editor column.
- Baalβs tentacle draws two or three times, and which one depends on a local variable that its function βnever writes before the call β¦ No emulation can give the value the game leaves there; only a logged cast can.β The claim stays inferred and goes to the harness phase, which needs Baal.
Animation and frame timing
Phase four was approved on the 25th, in the order I had set on the 20th: animation and frame timing before monster AI, βsince skill and combat timing need frame counts first.β Plan 0050βs first phase read the animation data: animdata.d2 is 256 hash blocks of 160-byte records, and the expansionβs file wins. Another file, eanimdata.d2, is named by no string in the binary at all. Monster sequence events agree with their animation record in only 81 of 805 steps.
The reading of the code says something about how the game runs: βmost server modes are not advanced frame by frame; SUNIT_ScheduleModeEvents queues the frame events (codes 1β4) and the mode end at the start.β The rates are one function with nine branches, and the bonus of faster cast, hit recovery, block and so on is the diminishing formula B = kΒ·s / (k + s), with k 120, and 150 for run and walk, confirmed over 3,413 emulated cases. And an edge case: βa negative factor (FCR β€ β55, FHR or FBR β€ β36) wraps to the maximum rate.β
The community has a lot to say about breakpoints, so the comparison was large: 61 claims from the Maxroll and Basin pages, the old run and walk thread for 1.09, the 1.13 movement clarification and PureDiabloβs tables. They were filed blind, before the lane read the code.
The breakpoint tables themselves came out right: βevery change point equal (78/78).β The frame count in 76 of them is one less than the codeβs, and the review ruled that a counting difference: the codeβs count is one more than the tablesβ. What was contradicted, among others. Against claims about 1.14d itself: the attack factor is clamped between 15 and 175, while hit recovery and block are not capped at all; a knockback on a player ends in neutral with no hit recovery; and the block gate is a cooldown, frame β last block > βstat102 / 8β + 15, where the community says there is none. Against Resurrected sources: Double Swingβs base is 70, not the 120 Maxroll gives, and the cast frames of the Druid, the Necromancer, the Werewolf and the Werebear all differ. Against the 1.09 thread: Charge moves at 2.5 times the base speed, not 1.5, and the run factor of β65β βmatches only read as hexβ. 0x65 is 101.
The first run of the phase, on the 27th: 55 sessions, zero mismatches, 298,373 rate calls, 99,241 movement steps. The Fallen showed the classic monsterβs special modes taking the moving rate, 1,266 calls. Blood Raven in Hell knocked the player back 13 times and 12 left him in neutral in the same frame. Frozen Orbβs next cast came at the do frame plus the delay, 72 of 73. The shortfall is get-hits: βevery fragile character died after 2β9: a get-hit needs a hit of a sixteenth of life.β
Monster AI, and a sixth phase
Plan 0052 was drafted on the 25th, held, re-drafted on the 27th, and approved by me at 17:34. It covers βthe 331 monster gapsβ the skills runs left, around the AI table at 0x0073CA18, 148 rows of 16 bytes. It put eight questions to me. Seven I answered as recommended: pathing becomes a plan of its own, hirelings and summons are in scope, one harness slot, and so on. The eighth I answered against the recommendation, which the plan records as such: βCatalogue coverage: the whole AI table (differs from the recommendation). Every row of the AI table gets a catalogue entry, whether or not a stock MonStats, PetType or Hireling row names it.β
Phase 0 ran within the hour. Of the 148 rows, 146 are named by a stock monster; 63 are reached through the level pools, 44 through superuniques, 16 through summons, one through hirelings. The aidist field is set only on Mephisto and his Uber copy. And the review found something the phase had not looked for: a second AI table at 0x0073D358, eighteen rows of four words, ten of them holding functions no row of the first table has.
The same approval accepted ADR-0022. The projectβs phases end at monster AI, and the ADR adds one after it, the server frame: βthe game tick (GameTick and every pass it makes), the per-unit update order β¦ the event queue β¦ the timers β¦ and the room activation order within a frame.β Its evidence is new too, a frame window: βa stated run of consecutive frames in a small scene β¦ in which every in-scope event of every unit is logged and every entry seed is asserted, none resynchronised.β Everything so far has checked a functionβs output from its logged inputs; a frame window checks that nothing in between was missed. The ADR names its risk: βThe order may be partly non-deterministic under wine.β My note of the morning had said that phase five is the last of the old scope and anything beyond needs a scope ADR. ADR-0022 is that ADR.
The sweep
Plan 0038 sorted the 1,526 inferred statements of the reviewed specs into batches. Eleven harness batches ran in the window, ten on the 27th.
Some of what the batches found is visible to a player:
- Single player saves on death. H1b found the call. The autosave timer never saved anything in the run.
- The gold cap is enforced at load by zeroing. A character with 900,000 gold on him, over the cap of 800,000, loads with none; a stash of 3,000,000, over 2,500,000, loads empty.
- A character of class 7, one past the last class in a save file, halts the game at load with an internal error.
- A crafted item can crash the game. When the Cubeβs craft picks an affix from an empty list at a low item level, the game faults with an access violation. H6a kept it as evidence.
- The cow portal tests quest word 26 in the classic game and word 40 in the expansion.
- Khalimβs chests drop their gold first and the part after it: five piles before the eye, seven before the brain, eight from the heartβs. The level of the brain is built twice on the server, and the pilot had listed the objects of only one copy until a fix on the 27th.
- Malah offers her potion only in one quest state, 4. Kashyaβs free mercenary is given with no payment. A mercenary gains twice the experience, and only while below his ownerβs level.
The three parts the quest-items batch opened chests for
-
Khalim's Eye
-
Khalim's Brain
-
Khalim's Heart
From tools/item_art.py. The follow-up batch opened all three chests and the order, gold before the part, is confirmed for each. Diablo II art Β© Blizzard Entertainment.
H4a, the monsters batch, opened four of the five seals of the Chaos Sanctuary in one session and logged the Infector of Souls and the Grand Vizier of Chaos. The fifth seal was never reached, so no Lord De Seis and no Diablo; the review ruled those rows βnot routed to the owner nowβ, since I had dropped the comparable session on the 25th.
Two reviews checked the batchesβ own summaries and say so in a line: ββShortfall 0β is honestβ for the quest NPCs, and ββFewer than half raisedβ is honest (9 of 25)β for the sockets. And one batch broke a rule the project did not have yet. H3bβs probe runs crashed the game on purpose and wrote their crash files into the shared game directory, and βneither the probe runsβ logs nor the removed crash files were kept.β The rule now: probes that may crash run in a game directory of their own, and crash folders are kept.
The re-tags recount the specs after their batches:
The inventory at the cut-off: 567 statements in static batches, 509 in harness batches, 431 blocked. The blocked count grew, from 414, because batches that look closely find that some statements have nothing to observe: dead code, or a guard the stock data never fails. Those now number 302. Left in the plan: two batches, two re-tags, and at its close a list for me of what only I can play.
Plan 0047, the simulationβs shortfalls, closed on the 25th. One line from it about the harness: the waits of its expiry checks βwere sized at 25 frames a second and the game runs at about 17 under the stats logger.β And one about the game: the succubi of the Crystalline Passage cast Defense Curse on a character under Fade, which gives 84 percent curse resistance, and of the 275 frames the curse asked for it got 44.
The gate that stopped guarding
The project has a gate, tools/gate.py, that checks the documents against each other on every commit: a specβs tag counts, cross-references, symbols nobody mentions. The commit hook runs it with a timeout of 20 seconds, and the hook is deliberately lenient: βA broken gate never blocks work β¦ a timeout β¦ passes with a one-line warning.β I asked for the gate to be made fast, and plan 0053 found what the leniency had meant in practice: βthe fast tier took 153 to 183 s, of which 151 s was the W3 loop (about 50 000 re.search calls over the joined corpus), so the commit hookβs 20 s timeout failed open.β W3 is the check for a symbol of re/symbols.csv that no spec or finding names. With 3,666 symbols it ran each one as a regular expression over everything. Every commit had been passing with a one-line warning, for how long the records do not say. With a word set instead, the staged gate takes 5.6 s and W3 gives the same zero warnings, and the hook enforces again. It also added rules for things the reviews kept fixing by hand: a table row with more cells than its header, a map status that does not match the specβs front matter, a plans index that does not match the plan.
Plan 0053 came with ADR-0023, accepted the same minute, about what the reviews cost. Its context is one sentence: βThe ownerβs weekly token limit runs out in about a day while several lanes run.β The ledgerβs snapshot in it: 362 runs, 83.6 million tokens, of which the architectβs reviews are 172 runs and 30.9 percent of the tokens; 708 fixes, 19 percent of them mechanical, the kind a gate can catch. So there are two tiers now. Tier A is the full review, for spec lanes, ADR changes and audits. Tier B βruns on Sonnet and reads only git diff main...<lane>β, and βevery fifth Tier B lane also gets a Tier A review.β The ADR names what it gives up: βA findingβs [C] is weaker between lanes.β I accepted it at 18:19 as a trial, which the planβs fourth phase will settle after ten lanes. And a new tool, tools/metrics.py, summarises the ledger βwithout reading it into an agentβs contextβ, which by now is about 100 KB.
How it was run
The lanes ran as before: harness lanes on slots 1 and 2, slot 0 mine and unused, static lanes in Ghidra beside them, every lane on its own copy of the repository and every close reviewed. The ledger has 78 lane rows and 68 reviews for the window. The lanes spent 22.8 million tokens and the reviews 10.5 million, about 52 and 13 hours of wall clock. On the 27th three long harness lanes, the save batch, the quest items and the animation run, were rotated after about four hours each: the lane stops, writes a resume note, and a fresh one picks up from it. The records show no suspend and no out-of-memory kill in the window. What stopped the work each time was my weekly usage limit: the pauses on the 21st, the stop on the 25th, and the empty days in between.
The numbers
Where it is now, against day one, day six and day eleven
Reviewed specs (28 rows to day 4, 29 on day 6, 35 on day 8, 36 on day 11, 42 on day 17)
[C] confirmed claims in findings
[I] inferred claims in findings
Named addresses in Game.exe
Python tools
Closed plans
Each measure has its own scale. Sources: the research map, docs/findings, re/symbols.csv, tools/ and docs/plans/done at each cut-off.
Confirmed and inferred claims in the findings
[C]: read in the code and confirmed by something independent, usually a run. [I]: read in the code only. Nights, and the days nothing changed, are cut out.
- [C] confirmed
- [I] inferred
The 25th has one point, the evening's monster batch. On the 27th the inferred line climbs faster: the animation and AI readings land as [I], and the re-tags of that day move claims in the specs, not in the findings.
Show the numbers
| Time | [C] | [I] |
|---|---|---|
| 11 Oct 10:31 | 0 | 0 |
| 11 Oct 13:35 | 7 | 15 |
| 11 Oct 15:05 | 21 | 58 |
| 11 Oct 16:00 | 28 | 59 |
| 11 Oct 16:25 | 42 | 62 |
| 11 Oct 17:57 | 45 | 104 |
| 11 Oct 19:06 | 48 | 148 |
| 11 Oct 20:11 | 48 | 175 |
| 11 Oct 22:12 | 57 | 176 |
| 11 Oct 22:23 | 57 | 176 |
| 12 Oct 08:04 | 80 | 173 |
| 12 Oct 08:41 | 103 | 183 |
| 12 Oct 09:02 | 104 | 184 |
| 12 Oct 09:31 | 108 | 217 |
| 12 Oct 09:58 | 109 | 228 |
| 12 Oct 10:16 | 117 | 278 |
| 12 Oct 10:42 | 135 | 295 |
| 12 Oct 11:51 | 139 | 295 |
| 12 Oct 12:21 | 159 | 291 |
| 12 Oct 13:41 | 161 | 292 |
| 12 Oct 14:10 | 168 | 295 |
| 12 Oct 15:19 | 168 | 320 |
| 12 Oct 15:46 | 184 | 354 |
| 12 Oct 15:58 | 184 | 354 |
| 13 Oct 08:05 | 196 | 348 |
| 13 Oct 08:26 | 204 | 374 |
| 13 Oct 08:33 | 205 | 422 |
| 13 Oct 10:11 | 206 | 448 |
| 13 Oct 13:43 | 223 | 449 |
| 13 Oct 15:59 | 225 | 452 |
| 13 Oct 18:56 | 229 | 453 |
| 13 Oct 19:21 | 236 | 452 |
| 13 Oct 19:28 | 240 | 455 |
| 13 Oct 21:15 | 279 | 429 |
| 13 Oct 22:02 | 279 | 442 |
| 14 Oct 08:11 | 279 | 442 |
| 14 Oct 08:49 | 282 | 443 |
| 14 Oct 09:21 | 282 | 493 |
| 14 Oct 09:36 | 282 | 495 |
| 14 Oct 09:49 | 290 | 536 |
| 14 Oct 10:00 | 291 | 537 |
| 14 Oct 10:09 | 293 | 586 |
| 14 Oct 10:20 | 293 | 587 |
| 14 Oct 11:05 | 332 | 567 |
| 14 Oct 13:10 | 356 | 562 |
| 14 Oct 17:35 | 376 | 560 |
| 14 Oct 19:22 | 376 | 611 |
| 14 Oct 19:56 | 395 | 651 |
| 14 Oct 20:36 | 402 | 691 |
| 14 Oct 20:50 | 446 | 721 |
| 14 Oct 20:59 | 451 | 757 |
| 14 Oct 21:16 | 461 | 796 |
| 14 Oct 22:37 | 506 | 772 |
| 14 Oct 22:50 | 545 | 743 |
| 15 Oct 02:10 | 574 | 733 |
| 15 Oct 02:44 | 587 | 732 |
| 15 Oct 02:54 | 612 | 737 |
| 15 Oct 03:05 | 619 | 727 |
| 15 Oct 03:29 | 629 | 739 |
| 15 Oct 03:57 | 671 | 738 |
| 15 Oct 04:14 | 711 | 716 |
| 15 Oct 07:39 | 718 | 733 |
| 15 Oct 08:47 | 729 | 737 |
| 15 Oct 08:48 | 737 | 779 |
| 15 Oct 08:54 | 746 | 782 |
| 15 Oct 09:05 | 771 | 791 |
| 15 Oct 09:17 | 773 | 848 |
| 15 Oct 19:08 | 774 | 890 |
| 15 Oct 19:10 | 786 | 941 |
| 15 Oct 19:13 | 797 | 940 |
| 15 Oct 19:25 | 801 | 982 |
| 15 Oct 19:33 | 829 | 1015 |
| 15 Oct 19:38 | 829 | 1057 |
| 15 Oct 19:48 | 841 | 1064 |
| 15 Oct 19:56 | 845 | 1066 |
| 15 Oct 20:13 | 845 | 1072 |
| 15 Oct 20:24 | 848 | 1095 |
| 15 Oct 23:42 | 875 | 1092 |
| 15 Oct 23:54 | 886 | 1095 |
| 16 Oct 00:15 | 886 | 1094 |
| 16 Oct 00:21 | 889 | 1096 |
| 16 Oct 01:43 | 905 | 1093 |
| 16 Oct 02:23 | 918 | 1098 |
| 16 Oct 02:28 | 923 | 1103 |
| 16 Oct 03:49 | 956 | 1090 |
| 16 Oct 06:40 | 987 | 1065 |
| 16 Oct 14:29 | 1003 | 1072 |
| 16 Oct 15:31 | 1023 | 1075 |
| 16 Oct 16:08 | 1023 | 1152 |
| 16 Oct 17:21 | 1080 | 1181 |
| 16 Oct 17:36 | 1140 | 1189 |
| 16 Oct 17:53 | 1150 | 1189 |
| 16 Oct 18:24 | 1174 | 1194 |
| 16 Oct 18:34 | 1228 | 1208 |
| 16 Oct 18:35 | 1267 | 1217 |
| 16 Oct 19:26 | 1281 | 1238 |
| 16 Oct 19:29 | 1321 | 1250 |
| 16 Oct 20:49 | 1391 | 1257 |
| 16 Oct 21:01 | 1412 | 1263 |
| 16 Oct 21:29 | 1486 | 1263 |
| 16 Oct 22:07 | 1505 | 1269 |
| 16 Oct 22:19 | 1515 | 1306 |
| 16 Oct 22:26 | 1566 | 1314 |
| 16 Oct 22:41 | 1577 | 1319 |
| 17 Oct 07:51 | 1577 | 1367 |
| 17 Oct 07:56 | 1585 | 1375 |
| 17 Oct 08:02 | 1597 | 1380 |
| 17 Oct 08:35 | 1612 | 1432 |
| 17 Oct 08:47 | 1650 | 1434 |
| 17 Oct 09:04 | 1647 | 1430 |
| 17 Oct 09:09 | 1647 | 1512 |
| 17 Oct 09:45 | 1657 | 1536 |
| 17 Oct 09:55 | 1669 | 1539 |
| 17 Oct 10:44 | 1670 | 1729 |
| 17 Oct 10:50 | 1670 | 1796 |
| 17 Oct 10:58 | 1670 | 1808 |
| 17 Oct 11:07 | 1681 | 1816 |
| 17 Oct 11:15 | 1683 | 1826 |
| 17 Oct 16:44 | 1707 | 1827 |
| 17 Oct 17:18 | 1707 | 1838 |
| 17 Oct 17:33 | 1707 | 1839 |
| 17 Oct 18:26 | 1708 | 1849 |
| 17 Oct 19:16 | 1746 | 1858 |
| 17 Oct 19:27 | 1747 | 1870 |
| 17 Oct 20:06 | 1747 | 1871 |
| 17 Oct 20:56 | 1770 | 1884 |
| 18 Oct 20:09 | 1773 | 1896 |
| 19 Oct 08:00 | 1788 | 1907 |
| 19 Oct 08:10 | 1804 | 1923 |
| 19 Oct 08:44 | 1805 | 1924 |
| 19 Oct 09:26 | 1814 | 1929 |
| 20 Oct 08:30 | 1849 | 1953 |
| 20 Oct 09:11 | 1849 | 1955 |
| 20 Oct 09:54 | 1853 | 2032 |
| 20 Oct 10:17 | 1856 | 2059 |
| 20 Oct 10:29 | 1914 | 2070 |
| 20 Oct 10:51 | 1917 | 2110 |
| 20 Oct 10:58 | 1947 | 2125 |
| 20 Oct 11:19 | 1973 | 2133 |
| 20 Oct 11:51 | 1973 | 2188 |
| 20 Oct 12:29 | 1973 | 2189 |
| 20 Oct 13:11 | 2022 | 2217 |
| 20 Oct 13:20 | 2036 | 2266 |
| 20 Oct 14:53 | 2037 | 2268 |
| 20 Oct 14:53 | 2076 | 2308 |
| 20 Oct 14:56 | 2099 | 2293 |
| 20 Oct 14:57 | 2108 | 2300 |
| 20 Oct 15:43 | 2110 | 2302 |
| 20 Oct 15:47 | 2154 | 2360 |
| 20 Oct 18:55 | 2178 | 2374 |
| 20 Oct 18:55 | 2230 | 2414 |
| 20 Oct 19:19 | 2230 | 2416 |
| 20 Oct 19:54 | 2272 | 2450 |
| 20 Oct 21:31 | 2312 | 2484 |
| 20 Oct 22:21 | 2347 | 2508 |
| 20 Oct 23:11 | 2381 | 2538 |
| 21 Oct 07:17 | 2420 | 2570 |
| 21 Oct 07:37 | 2431 | 2581 |
| 21 Oct 07:46 | 2445 | 2586 |
| 21 Oct 08:21 | 2479 | 2619 |
| 21 Oct 11:24 | 2489 | 2628 |
| 21 Oct 11:53 | 2539 | 2667 |
| 21 Oct 11:57 | 2540 | 2667 |
| 21 Oct 13:01 | 2579 | 2697 |
| 21 Oct 13:13 | 2584 | 2699 |
| 21 Oct 13:57 | 2626 | 2739 |
| 21 Oct 14:45 | 2663 | 2771 |
| 21 Oct 15:18 | 2667 | 2779 |
| 21 Oct 19:30 | 2700 | 2810 |
| 25 Oct 21:38 | 2718 | 2820 |
| 27 Oct 07:05 | 2737 | 2838 |
| 27 Oct 07:46 | 2750 | 2844 |
| 27 Oct 07:50 | 2760 | 2869 |
| 27 Oct 08:11 | 2760 | 2925 |
| 27 Oct 08:57 | 2779 | 2942 |
| 27 Oct 09:14 | 2810 | 2959 |
| 27 Oct 09:16 | 2814 | 3007 |
| 27 Oct 09:41 | 2817 | 3014 |
| 27 Oct 10:02 | 2836 | 3025 |
| 27 Oct 10:04 | 2836 | 3078 |
| 27 Oct 10:34 | 2840 | 3086 |
| 27 Oct 10:45 | 2840 | 3087 |
| 27 Oct 10:54 | 2874 | 3096 |
| 27 Oct 11:22 | 2877 | 3102 |
| 27 Oct 11:36 | 2891 | 3117 |
| 27 Oct 11:51 | 2891 | 3119 |
| 27 Oct 12:06 | 2896 | 3122 |
| 27 Oct 13:03 | 2897 | 3159 |
| 27 Oct 13:18 | 2914 | 3168 |
| 27 Oct 13:45 | 2920 | 3173 |
| 27 Oct 14:42 | 2934 | 3185 |
| 27 Oct 15:21 | 2956 | 3193 |
| 27 Oct 16:24 | 2984 | 3204 |
| 27 Oct 17:28 | 3005 | 3211 |
| 27 Oct 17:35 | 3032 | 3221 |
On day eleven the findings held 2,540 confirmed claims against 2,667 inferred; now 3,032 against 3,221, and the confirmed share is 48.5 percent against 48.8. The specs, which are what a reimplementer would read, moved more: from 3,791 confirmed and 2,322 inferred to 4,857 and 2,451, because this was a week of re-tags, and a re-tag raises a specβs claims without touching the findings. The named addresses in Game.exe went from 3,373 to 3,666, the tools from 170 to 215, the save recipes from 233 to 435, the closed plans from 44 to 48.
What is open
- Animation, the second part of its run (get-hits by hit recovery, blocks, throws, the rate tiers) and its spec, which run side by side.
- Monster AI, plan 0052, from its catalogue phase, with the second table routed to it. Then the server frame, which gets a map row when its plan is drafted.
- The catalogueβs harness phase, after the animation run, with Baalβs tentacle in it.
- The sweepβs tail: two batches, two re-tags, and the list for me.
- The things only I can play, all optional: Uber Mephisto and Baal, the Countess and the Cow King in their quest states, the Hell Hellforge, where the pilot reached the room in none of four tries, and the Diablo pair, where its hunt timed out.
- Review tiers: the next ten non-spec lanes through the Tier B check, the fifth and the tenth audited at Tier A.
The voxel engine had its own window over the same days, and got lighting.