Devlog ·
A scan of the code found three rules for one hit
A borrowed set of skills, a read-only scan of the code, and refactors whose hardest part was telling a real change from noise.
A set of skills, installed, and a scan that used them
On 8 October the lead had a published set of agent skills copied into the repository at a pinned version (issue 652): a code review, a bug-diagnosis loop, a retro, a glossary and decision-record helper, and a few others. The worker noted that one of them calls a skill that was not in the set, and wrote that down. A headless run listed all seven.
The first use was a read-only architecture scan (issue 653). Five explorers each read one area of the Unity code. The result was an HTML report with eight diagrams and a ranked list of nineteen places where a small interface could hide a lot of tangle. The top five were filed as issues 663 to 667. In the first render all eight diagrams were stacked on top of each other, because the browser's clock was frozen and gave them the same id; fixed ids cured it. Nothing in the game was run, so claims in the report marked "read, not run" are still just reading.
A retro (issue 655) read 63 worker transcripts. The strongest patterns: two sessions ended for good at a delete command with a variable in its path, three merges went ahead with a failing check, three touched files the issue did not name, and 37 sessions had a wait-by-sleep command refused. The fixes were one sharpened or deleted line each in the rule files, and the worker prompts lost a quarter of their words by pointing at the rules instead of repeating them. The worker's own cleanup command, which contained a recursive delete, was declined at the permission prompt: the trap the retro was about.
One hit, three rules
Three of the five explorers had found the same thing from different directions: what a hit does to an enemy was decided in three places, the tower's hit, the card effect and the simulator that checks cards, and they disagreed on durations and caps. Issue 663 moved the rule into one module and then made every status change go through named verbs.
The refactor was the easy half. The issue also asked that burn ticks count for less against a tougher late horde, as hits do. Two full bot sweeps suggested only the final boss leaked more. A late screenshot then showed the bed table lost in wave 4, and the simple bot confirmed it: lost in wave 4 on all four runs with the change, wave 7 reached on all six without. The division was taken out. The follow-up (issue 677) added a switch to test other strengths: a half-strength division still lost the bed lives, and burn ticks stay as they were. A review of the second stage also caught that routing the teacher's whole-table pause through freeze would have cut it to nothing within a few frames, so it got its own verb.
The recurring difficulty in all these refactors was noise. In issue 666 the bathroom table alone swung from 10 to 45 leaks on identical code; in 667 the garage baseline gave 18, 18 and 19. The workers compared wave by wave and found only waves 4 and 10 moving, in both before and after groups. The check that was meant to gate the work, a fast table check, failed its bot item on every table on the unchanged code too, so it became its own issue (686).
Where a worker's machine fought back
The worker on issue 667 ran on the small mini PC and stopped before finishing, with its notes saying so. The shared temporary folder had hit its per-user quota, filled by other sessions' scratch files. One build failed with "Disk quota exceeded" and one compile crashed with a bus error. Pointing the temporary folder at the worktree broke Unity's licensing instead, because the licensing client puts its socket in that folder while the editor looks in the default one. The worker wrote the dead end down, and the next session compiled after a cleanup and found a single name clash. Another worker, on issue 664, launched players behind a change of directory, which put a subshell in the background so its stop signal missed; three headless players kept playing for up to 25 minutes before they were found and stopped by process id. That worker's issue was the end-of-table report that only ever printed for the first table: a draft preview built and torn down a table first, and its teardown wiped the report's one-time hook.
Issue 681 found a crash by instrumentation. An enemy killed by poison set off a card's on-kill shot, and the shot's chain code cleared a shared list that the poison loop was walking. A second crash had the same cause, a splash walking the same list. Each loop now borrows its own list per level of nesting.
What nobody has checked yet
- The new skills in a real task, and the retro's wording with a worker actually running on it; only this machine's transcripts were read.
- The Web build and Windows for the status module, lifetime scope and table sessions; the school desk and garage in the burn-tick sweeps.
- The scope's fixed-update and command hooks, which nothing uses yet.
- Whether a sweep can ever be compared run to run: the bathroom alone swings from 9 to 86 lives lost.