By month: October 2026 · September 2026
2026-10-31#
Engineering#
- The plan's remaining fixed-duration waits now wait on the events they assert.
- The three dependency cycles between units are removed, with a check that fails any new one; it merges after a one-line change to the agents' entry page.
Testing#
- The weekly full pass's chance failure is fixed: the stun check moved to the scripted pair, where a stun is expected.
- Two planted-fault checks were made exact, so each catches only the fault it plants.
- The movement check fails on Dalaran Sewers when the teams start about 62 yards apart, with no approach to judge; a fix is under way.
2026-10-30#
Engineering#
- Every unit-test suite runs through one runner that reports a skip as a skip, and a check refuses any suite that bypasses it.
Testing#
- The weekly full test pass on the main branch failed 2 of 63 tests. One is a check that fails by chance: it waited for a stun in a match where nothing makes a stun land. A fix moving it to the scripted pair is in review.
2026-10-29#
Engineering#
- The agent interface's build check plants its fault in one step instead of a second full build, which halves its run time.
- Unit test programs are limited by processor time rather than wall-clock time, so load on the machine no longer fails them.
2026-10-28#
Engineering#
- A log tool's test-only switch removed; its test plants the fault in a copy of the tool instead.
- Two time-dependent tests fixed: a helper that lived a fixed 30 seconds now lives until stopped, and a commit test runs in under 100 seconds cold.
2026-10-27#
Engineering#
- Every default check now declares the faults it must catch and is shown catching them on every run.
- Three test defects fixed: a fixed sleep replaced by waiting on the event, and two partial-message assertions made whole.
2026-10-26#
Engineering#
- Every live test's planted fault is now shown caught on every run, and the in-game monitors judge every event they see.
- The last cluster of the engineering rebuild, a planted fault for every check, is under way: most of the checks already carry one.
2026-10-25#
Engineering#
- Every dependency is fetched by an exact pin, recorded once; references between files are checked to resolve against the game client's data and the code; the spell data's field positions are declared once and checked against the server's source.
- The last three clusters of the engineering rebuild are under way: a planted fault for every check, live tests shown to catch theirs on every run, and in-game monitors that judge every event they see.
2026-10-24#
Engineering#
- Three more engineering clusters closed: the loadout plan's field order and the server module's environment-name rule are checked against their one definition, the playbook's data has a machine-readable schema checked against its files, and the older formula tests each have a planted fault they are shown to catch.
- The live-test ledger carries a format version.
2026-10-23#
Testing#
- The weekly full live test run passed: 63 tests, none failed or skipped.
Engineering#
- Three more engineering clusters closed: the C++ unit's remaining build configurations are declared to its build, the server's build lives under its own folder and fails loudly when its script is missing, and the unit test programs' remaining gaps are closed.
- The check runner reuses a sealed check's pass when none of its declared inputs changed.
2026-10-22#
Engineering#
- Two more engineering clusters closed: the session loop's own test runs without test-only settings and its lock names have one definition; a check now holds which folders may depend on which, across shell scripts, C++ includes and Python imports, and data folders are read only through their format's reader.
2026-10-21#
Engineering#
- Four more engineering clusters closed: the full test run reads a skipped check as a skip and runs every check on only its declared files; the rules model's live tests wait on the events they check; the rules model's packet reading has one definition; the loadout and data-comparison tools test against committed sample data instead of a live database.
2026-10-20#
Engineering#
- Four more engineering clusters closed: scripts hold no logic, the small test programs are built and checked like the product, the agent's seat is held by the build, and a check whose data is missing fails instead of skipping.
- An inventory of the gaps no cluster named added nineteen more clusters to the engineering rebuild.
- The rules model's live tests are being moved to wait on the events they check instead of fixed delays. This work is not merged yet.
2026-10-19#
Engineering#
- The live-test engineering cluster closed and went live: every live test is shown to catch its planted fault, an aborted test is a failure, and a skipped test is counted as a skip, not a pass.
- The gear-test fix merged, and the gear-loading crash fix is live on the game server.
- The check runner's selection, caching, locks and run log, and the memory-budget arithmetic, are moving out of shell scripts into typed programs. This work is not merged yet.
2026-10-18#
Engineering#
- A crash in the game server's gear-loading code was fixed, along with a race in how its test reads the gear back. Neither fix is live yet.
- A rare failure in the gear test turned out to be in the test itself: it closed a fresh login too early. A fix is in review.
- The comment checker no longer mistakes a
#inside a quoted shell string for a comment. - The governance and comments checks now also cover the agents' own configuration, which closes another engineering-gaps cluster.
2026-10-17#
Engineering#
- Most live tests (56 of 68) are now shown to catch a deliberately planted fault, including faults planted in the pinned game server itself.
- A failing test on a throwaway test server now leaves its own output in the deploy log, so each planted fault's catch can be checked afterwards.
- The weekly full run of the live tests passed.
- Code checkers: the shell and Python checkers' findings are nearly all fixed, and the server module's C++ is formatted by one formatter.
2026-10-16#
Direction#
- The project's work after the engineering rebuild is set: the rules model's remaining layers (resources and time, then the best course over a window), then the groundwork for training to use it. The first scoreboard no longer has a fixed date. Work on analysing match videos is parked.
Engineering#
- Packet layouts and message codes are now declared once and checked against the game server's source.
- The live tests' timing work is finished: no test repeats the action it checks until it passes, and every wait that matters fails when it runs out.
- More of the live tests are shown to catch a deliberately planted fault, and a new check makes sure every planted fault still applies to the current code.
- The movement test now measures time and distance on the same clock when the game clock is sped up; before, its bars were far lower than they read.
2026-10-15#
Engineering#
- The live tests no longer repeat the action they check until it passes: each cast under test is made once, open-ended waits that mattered now fail when they run out, and the count of fixed-duration waits can only shrink.
- Two self-tests of the project's checks no longer plant their faults in real pages; each works on a copy of its own.
2026-10-14#
Engineering#
- The agent side's build is declared to its build tool: each source compiles once per configuration, and the unit and its test programs are built from one checked table.
- A direct commit to the main line is refused when it breaks any check it touches.
- Four checks that failed on correct code were fixed, among them a cast-timing test under the held game clock and a check that depended on an outside package mirror's load.
2026-10-13#
Measurement#
- The rating rules for the first era are settled and live: matches the evaluation runner plays are recorded as rated.
Engineering#
- The agent interface's message shapes, the match record's format and the test channel's protocol each have one definition, checked from both sides.
Rules model#
- The wand and the Shadowfiend are checked against the server; the model's first layer is complete.
2026-10-12#
Engineering#
- The server builds one declared way.
- Each data format has one definition, and every reader goes through it.
- The loadout plan's grammar, the server's configuration keys and the log fields scripts share are each declared once and checked.
- The check runner can seal a change's checks to their declared inputs.
- System packages are pinned to a dated archive snapshot.
Testing#
- A fix for an intermittent failure in the Rogue test on Nagrand: the test client reported a stale position when a fear ended.
Rules model#
- Mana Burn, agility procs and Aegis are checked against the server.
2026-10-11#
Engineering#
- The Go code builds in one workspace on one toolchain version.
- System packages, Python imports and the project's changes to the test client are pinned and checked.
- The box's own scripts and the repository's workflows are covered by the check runner.
- The check of the server's clock reads fetches the pinned server source itself.
- Server deploys refuse to run as an administrator.
Rules model#
- Heals, magic damage and absorbs are checked against the server.
2026-10-10#
Server#
- Nightly promotion from the development realm to the players' realm never moves the players' realm back to an older build.
Engineering#
- The test runner's own checks gained a planted fault. They stay out of the main gate until their timing no longer depends on machine load.
2026-10-09#
- A duel's reset clears trinket cooldowns and diminishing returns (Stable).
- The damage and healing model grew: auto-attacks, both weapon hands and the ranged slot, and damage over time.
2026-10-08#
Toward agents#
- A model of each ability's damage and healing, measured on our server: the Rogue's hits, the Priest's heals, hits by position, Backstab and Wound Poison (development realm). The next scripted pair is built on it.
- Each recorded match keeps its combat events in a sealed side log, for later learning (development realm).
How the project runs#
- The project's architecture is written down with the owner; rebuilding the project to match it comes first, and the first scoreboard's date (18 October) slips with it.
- The full weekly test passed with no failures for the first time: 261 tests in 47 minutes. Split across two throwaway servers, it ran in 57% of the time.
2026-10-07#
Toward agents#
- A dress rehearsal of the first scoreboard: 100 matches of the scripted Rogue/Priest pair against the random-button team, eight at once, in 33 minutes. It won all 93 that ended; 7 reached the time limit. A clean sweep gives only a floor on its rating, so the real run will ask for about 120 matches.
- Against the idle team, 120 of 120 matches ended with a kill.
- Each recorded match notes every seat's perception seed and the measurement rules it ran under, so a rated match can be traced (development realm).
How the project runs#
- Reading strong players' videos by hand is paused: too slow. An automatic reader was tried and fell short of its bar; the next scripted pair starts from the owner's own class knowledge instead.
- New guards on the agents' own work: no direct pushes to the main line, no pull request opened without its checks, no worker stopping with unsaved work.
2026-10-06#
Toward agents#
- Eight matches at once: the scripted Rogue/Priest pair against the random-button team finished 47 of 47, about 750 matches an hour on one machine. No simulator is needed.
- The pair against itself is the slow case: about half its matches reach the time limit, likely because neither side locks out the other's healer.
- The next scripted pair is built from strong players' games; one recorded game's kill is now read frame by frame, auras included.
- The scripted Rogue tracks the enemy's stun diminishing returns and uses Eviscerate when Kidney Shot would do nothing (development realm).
2026-10-05#
Toward agents#
- Against the idle team, the scripted Rogue/Priest pair now ends all 16 of 16 test matches with a kill, on every arena. Its characters follow the server's knockbacks and search the platform in Dalaran Sewers.
- Against the random-button team it won every match that ended (13 of 16; the rest reached the time limit).
- Starting logins 10 seconds apart lets six matches run at once reliably on one machine.
How the project runs#
- Several slow live tests were cut or merged, some from minutes to seconds, so checking a change costs less.
2026-10-04#
In the game#
- Entering an arena gives every player the Priest buffs and Inner Fire. A readiness crystal at each start spot cuts preparation to 15 seconds once all four players click it (development realm).
Toward agents#
- The scripted Rogue/Priest pair plays whole 2v2s through the agent interface, recorded, to a kill on two of the four arenas.
- A team that presses random legal buttons, the first scoreboard's zero point, plays live.
- About 1,100 matches an hour with four at once on one machine, so no simulator is needed yet.
- The first scoreboard's rules are announced. They are fixed on 11 October: Elo ratings with ranges, at least 100 matches each, and crashes counted as losses.
2026-10-03#
Toward agents#
- The scripted Rogue/Priest pair plays live on the development realm: the Rogues reach melee, wait for energy and face their target; the Priest closes to range and faces before casting.
- The experiment measuring full matches per hour on one machine is pre-registered, its outcomes fixed in advance.
In the game#
- The hub's vendors and trainers stand together on the arena stands' raised tier by the battlemaster, with two level-80 training dummies (development realm).
2026-10-02#
Toward agents#
- The simplest agent plays bots live on the development realm: it walks, turns and casts by itself, sees the other team only at a range a player could, and stops within casting range.
- In testing, not yet live: bots slide along arena walls and slopes instead of sticking to them, and head for the arena's middle when no enemy is in view.
- Agents see when a game command is refused.
In the game#
- One-click full builds at the hub: the bag-room check now counts items already worn or carried.
2026-10-01#
In the game#
- Two realms: a stable one for people, which changes only when a tested build is promoted to it, and a development realm for agents.
- Bots can fill an empty 2v2 or 3v3 skirmish queue, so a lone player gets a match.
Fixes#
- A rare world-server crash when a character logged back in quickly: a stock login-mail script read a character that was already gone. Its mail templates are removed.
Toward agents#
- Drills for basic skills, in layers from the body alone up to two players: a format, a readiness check, a reset of a unit inside a running arena, and a scorer for walking to a point.
- Bots move like a client: walking, turning, stopping at walls and refusing ground too steep to climb, on all four arenas.
- First learning experiments: a small learner masters walking to a point; against a moving target, reaction delay costs more than aiming error, and a simple predicting script does as well as the learner.
Behind the scenes#
- The agents' rules are pruned to what stays true however capable the agents become: the safety walls, the owner's authority, independent review and checks against ground truth.