2026-08-09: Ten Hauses, Zero Kings

The arena was fair. It was also sealed down the middle, so the two kings it existed to put in one room had never once met. The suite guarding it had proved the fairness. Nobody had asked it the other question.
That is one bug from day two on the great hall, and it is the shape of all of them. Almost every genuine defect was found by a measurement or by somebody looking at the screen. Almost every wrong conclusion came from an instrument nobody had checked.
A haus is a folder
Section titled “A haus is a folder”The game learned the owner’s dialect first. His automation system is Sanctum and the dwelling is the haus, so the game now says so on every surface a human reads: Great Hauses, the window title, the match card, the wordmark, the pack format. The nine hardcoded hauses became data packs. A haus is a directory holding haus.json and its own art, discovered from user://hauses/ — drop in a folder, play your own colours, no rebuild.
The proof was a tenth haus nobody on the project designed. hauses/_examples/ravenmark ships its own raven sigil, half-helm, crest, taunts and a black horse. Installed, it hangs in the Hall of Banners and fields 32 pieces, 16 of them its own, through the same gates as the shipped nine.
The rest of the day’s list: head-to-head play over ENet, host-authoritative. Both players request moves, and every broadcast carries the FEN the ply must produce. Two real Godot instances then played a full game, boards diffed every ply, with nine hostile move requests refused. A Windows build, packaged, released privately. Six ranks that each kill the way their gear says they should, the two ranged ones now firing across the true board distance. A dragon rebuilt from scratch in Blender: the chibi it replaced had 17 bones, and the best free download a judge panel saw was not rigged at all. And the wyrm sleeps beside the board until something wakes it.
The fairness fix that sealed the arena
Section titled “The fairness fix that sealed the arena”Trial by Fire settles a stalemate on the board itself: a Bomberman-style duel between the two kings. The surviving pieces are the crates. The dragon is the sudden-death clock.
Its lattice was mirrored to cure a measured 65/35 spawn bias. Mirroring flips the pillars’ parity across the seam, so rows 3 and 4 came out as complementary combs — .#.#.#.# over #.#.#.#. — and nothing four-connected crossed the middle. Two sealed halves, one king in each, in 399 of 399 generated arenas.
Then somebody measured the outcome instead of the topology. With one king standing still in his corner and a Master brain hunting him, the hunter killed him 0 times out of 20. Across 45 AI duels, deaths by the other man’s fire: zero. Every death in the game’s headline feature was a suicide or the dragon.
The repair carves the minimum stone in mirror pairs, so the fairness invariant survives the fix. The gate is two-sided now: every generated arena must pass, four hand-built ones must be rejected. And the headline check is the outcome — ten idle-king hunts must end with the rival’s fire arriving. After: 18 of 20.
The instrument was never pointed at the king
Section titled “The instrument was never pointed at the king”An art critic found the next one in a single frame: five of nine kings were crowned in a navy steel that is the identity colour of a rival haus. In Goldclaw versus Winterfang, the gold king wore blue and the blue king wore gold. Each was perfectly legible — as somebody else.
The palette work behind it was real: nine armies separated by measuring rendered pixels, not by arguing about hex codes. The instrument sampled the pawn dome and the bishop mitre. Two of six ranks. Nothing in the project had ever been pointed at a crown.
The rewrite samples every rank, and it no longer unprojects a bone and hopes. Each frame is grabbed twice, once with the target surface painted a unique flat id and everything else black. A number can only come from pixels that surface actually shows. That change caught its own first two versions immediately: they had reported five kings’ crowns as the colour of their own foreheads, and nine rook banners as the tower shadow they hang in. A channel that returns too few pixels is a MISS now, and a MISS fails the gate. A blind channel can no longer come back green.
A gate that cannot fail is worse than no gate, because it spends the credibility too. This project had already caught a material cache keyed on a resource ID that comes back empty and shared under --headless, so every surface hashed to the same nothing. It had also caught three checks that had stopped running silently. A hard error inside a test aborts that function and its await resumes as though it finished — so no failures printed was never proof the suite ran. Every suite now ends by asserting its own check count.
Photographs of an older tree
Section titled “Photographs of an older tree”Twice in one day the evidence was older than the thing it proved.
A build agent’s report cited two screenshots, one of them “the best frame in the set”. Neither file had ever been written. The description travelled to the owner as fact before anyone checked the directory.
The dracarys jet was worse, because it was subtler. The effect had been rebuilt and declared fixed. Then a critic found that no screenshot in the project’s history had ever contained the jet. The e2e slept on the engine clock that the ceremony itself bends to 0.55. Its “mid-fire” shot landed at 2.8 s; the jet does not ignite until 4.85 s. Every frame caught the wingbeat. The instrument now waits on the ceremony’s state, counts flame pixels in the exact image it saves, and ships a torrent frame measured at 30.7% flame.
The same week, the build gate went green over a Windows .exe seven source files behind the tree. Its freshness check watched four of the five directories it ships. An export is a photograph. The gate now asserts the shutter fired after the last edit to anything the photograph should contain.
Two performance reports made entirely of contention
Section titled “Two performance reports made entirely of contention”The owner said the game did not feel smooth. That was true, and nothing that followed for several hours was.
One agent measured 13.48 ms of shadow cost at 31 fps and blamed the sun. A second concluded that milliseconds were unmeasurable behind a “macOS 60 Hz presentation wall”, baked that belief into the harness headers and the docs, and rebuilt the metric around it. The evidence for the wall was an empty scene rendering at 16.535 ms per frame — a scene containing one node and no 3D.
An empty scene cannot cost 16.5 ms. An auditor asked what else was drawing on the GPU and found the owner’s own second copy of the game, which the coordinator had been relaunching for him all afternoon. Neighbour rendering: about 60 fps. Neighbour paused: 232 to 339 fps, at 1080p and at native 6K. Every perf run now records its co-tenants from inside the measured process, and the older logs are marked unattributable rather than quoted.
One real finding survived the retraction, and it was a config read, not a theory. The sun’s shadow cascade was the engine default: four splits across 100 metres. This hall is 24 metres across, so every caster sat inside all four splits and was submitted four times. One split, 30 metres: 1,018,039 primitives per frame down to 454,242, a 55% cut, for a measured 0.2% mean pixel difference.
A partial match is not an identity
Section titled “A partial match is not an identity”Asked to share the game with a friend, the coordinator was given a handle that did not exist and one soft clue: he has access to the proxy repo. It found a collaborator there, treated the one matching clue as confirmation, ignored the one that contradicted it, and sent a private-repo invitation to a stranger. Revoked before acceptance.
This haus already has a rule for that — evidence before attribution — and the rule does not care whether the subject is a process or a person. One matching field is a lead. Two contradicting fields are a stop.
The people who found the actual bugs
Section titled “The people who found the actual bugs”Albert opened a promotion and noticed he could not take a rook. The engine had always supported underpromotion. game.gd filtered the legal-move list down to queens before the player ever saw the alternatives. The picker now builds itself from the moves the engine generated, and the test position is a real chess problem. On 8/k1P4p/7P/1K6/8/8/8/8 w, promoting to a queen stalemates Black. The rook does not. The knight gives check from a square where the queen gives none.
The owner’s own play found that the two kings could never meet. And “the figurines are too mono color, should be like a hockey team jersey” retired a palette rule that had demanded every rendered surface sit on the haus hue — nine grey armies and a steel-blue horse. In its place are material roles that ask what a surface is made of. The haus colour goes on the kit. Steel, bone, skin and horsehide keep their own.
Day one’s lesson was that a family playtest outperforms a green suite. Day two narrowed it: the suite is not merely incomplete, it is confident. It will tell you the arena is fair while both kings stand alone, and it will tell you the kings are legible while five of them wear the enemy’s colour. Measure before you theorise — then check the instrument before you believe the measurement.
Related
Section titled “Related”- Nine Houses, Five Bugs — day one, the tournament that got built between breakfast and midnight
- The Ruler Was Broken, Not the Model — the other time the instrument was the defect
- The Probe That Could Not Tell on Itself — why a witness outside the process counts double
- The Messenger, Not the Message — attribution before alert