· v0.2.0
The guild hall nobody could join
The guild is the spine of the mid-game. One guild, many halls, one membership per run: you find a hall, you talk to whoever keeps it, you take rank F, and every rank above that gates something. It was built, tested and shipped.
It also did not work in a single real playthrough.
The flag nobody set
Whether a room has a master is one boolean on an NPC row, is_guild_master.
The interior knows to put that person behind the desk. The rank ladder knows to
ask them for a verdict. The tests knew to set the flag, because the debug world
sets it — and the debug world was, it turned out, the only thing in the entire
codebase that ever did.
In a real run, halls got built. Nobody stood in them. There was no error, because nothing had gone wrong: the code correctly rendered an empty room, and the ladder correctly refused to promote a player who had never spoken to a master. Every layer behaved. The chain just had no first link.
Derived, not generated
The fix is deliberately not an LLM call. Who keeps a hall is a pure function of the row the location already has: the layout gives a large village a guild building, and a pure picker chooses which of the resident cast stands behind its desk. Synchronous, idempotent, and structurally unable to put a master somewhere there is no hall.
That matters more than it sounds. A generated answer here would have been one more thing that could fail quietly at 3am with a fallback, in exactly the way this bug already failed quietly for months.
Rarity and reachability are different knobs
Halls stay rare — large villages only — because that is the world texture we want. But finding one is not left to luck either.
The tempting fix was to make halls more common. That trades world texture for reachability, permanently, to solve a run that just got unlucky. They are separate knobs and they should stay separate: a run that has gone long enough without one will put you near a hall without ever making halls less rare.