The names were always promises

The world had 967 named places and read as procedural anyway. The usual diagnosis is "not enough detail", and the usual cure is more props. Both are wrong. The gazetteer already held 768 settlements, each with a hand-written epithet — "The Drowned Bell: half under the flood; the bell still rings on the tide" — and the world kept almost none of them. The Drowned Bell was not flooded. There was no bell. The prose and the geometry had been authored by two different processes that were never introduced.

The tell was in one line of arithmetic

Every settlement in RACTR gets a Charter — the thing that decides its layout, its wall material, its roof, its pitch, its mood, how many houses it has. It is computed once per place and read by every building in it, which is exactly the right design.

The problem was how it was computed. Every single field came out of the place's index in the name table, by modular arithmetic:

let wall  = walls[(slot / 3) % 2];
let roof  = roofs[(slot / 5) % 2];
let house_count = 5 + (slot * 17) % 5;

That is variation. Two neighbouring villages will differ. But it is uniform noise, and nobody decided any of it — and a player feels the difference between variation and decision immediately, even when they could not tell you why. It is also why the discipline we hold every object to in this project — who put this here, and why? — had no answer available. Arithmetic has none to give.

The fix needed no new fiction

The writing already existed and it was good. What it lacked was a way to reach the ground.

So a place can now be decided instead of derived: an authored table, keyed by the same slot, that charter_from consults first. Anything an author has an opinion about wins. Anything they don't falls through to the arithmetic exactly as before. Crucially the overrides are applied at the point the arithmetic would have computed each value, so they cascade the way the derivation already cascades — an authored roof re-derives its own pitch and eaves, an authored layout re-derives the ring, the plan ratio and how far the village is sunk into its ground.

The interesting engineering is not the table. It is the guarantee around it. Adding authorship to a world that already works is only safe if you can prove you have not disturbed the parts nobody has touched yet:

758 unauthored slots × 6 terrain classes × 6 biomes = 27,288 charters, all sixteen derived fields compared against a frozen replica of the original derivation, floats compared by bits. Zero differences.

While that test passes, an authored entry can only ever change the place it names. That single invariant is what let two dozen agents write into the same system all day without anyone watching for collateral damage.

There was one measurement worth keeping too. The obvious implementation is to put the nine new expressive fields directly in the struct. That measured 448 bytes against 192 — a 2.3× copy cost on a struct that the prop and resident systems copy per building. Behind a pointer instead, the whole feature costs eight bytes.

What a kept promise looks like

The Drowned Bell is the worked example, and its charter is a good demonstration of why the epithet is a better brief than any invention would have been. Its arithmetic says the village is dead, and therefore has no bell. Its name says the bell rings. Both are true — nobody rings it, the tide does — so the entry overrides exactly the bell and how deep the place sits, and leaves "dead" standing, because dead is what makes the ringing frightening instead of quaint.

What it actually specifies: nineteen roofs, eight of them under water twice a day. A salt-bleach line at one single height across every standing wall, so a stranger on the ridge can read the sea's working height at a glance. A cracked bell in the second stage, struck from below by the swell inside the tower — irregular, thirty to ninety seconds apart, silent at low water and silent on a neap tide. Its silence is what makes the ringing mean anything.

And the gameplay falls straight out of the fiction rather than being bolted to it. The lower street is walkable at low water and full of things worth taking. It floods in about eleven minutes, from the seaward end, and the way out is the only unblocked doorway of four — and which three collapsed is not obvious until you are inside them. The bell is the warning. When the bell starts, you are already late.

Nothing in that is delivered by a quest log. What killed the village is not written anywhere in the world: the shingle bar that made the anchorage was quarried away for the next village's harbour arm. It is deducible — the stone matches, the dates line up, and that village's reeve changes the subject.

The rule we nearly broke ourselves

Something surfaced during the writing that we did not expect and had to protect immediately. Several of the best places are load-bearing empty. No path onto the mound. No slipway on the beach. A drystone wall in immaculate repair with nothing inside it, kept by the man who sold the flock. One village is authored deliberately plain, and its own charter says so — the moment anyone decorates it, its name stops being true.

A later "add more detail" pass would destroy those places by improving them.

So emptiness is now data. A charter can state a prohibition, not just a placement, and the tests fail anyone who fills one. It is the same lesson this project keeps relearning: the stone at the waterline is a beach, not a defect, and two separate passes nearly "fixed" it.

What the writing demanded that the engine cannot do

The most useful by-product was not prose at all. Authors kept hitting promises the engine has no way to keep, and those are now a ranked list with the content weighed against each one.

Top of it is a seasonal calendar. The world has an hour; it has no season. Five places need one, and one of them is a flax field that is blue for one week in June. That is a decade-long memory and it cannot be faked. Second is a single shared tide clock — seven places depend on it, and it is a mechanic rather than set dressing, because a street that floods in eleven minutes is only dangerous if the tide is real.

The honest part

The machine lost. Twenty agents, a dozen of them running Rust release builds and full world-generation tests, took a 12-core box to a load average of 137 with swap 96 % full. Nothing had made a source edit in twenty-five minutes; everything was queued behind everything else. Fewer agents finishing beats more agents stalling, so five were stopped, their work snapshotted to their own branches, and the load fell back to eighteen within minutes.

Worth writing down, because it is the sort of thing that reads as flakiness and is not: the cost per agent had already been cut from 4.4 GB to 1 GB by noticing that every working copy was carrying its own duplicate of 2.7 GB of animal art it never loads. Disk was never the ceiling. Memory was.

And the survey of the first two kilometres — the part of the world every player sees — came back with a verdict and a complaint in the same breath. The verdict: a bridge over the sea at 200 m, a chain road over 37 m of air at 500, a camp that will kill you at 380, a dragon's hole in a fen at 900, a treetop city and three capitals inside two kilometres. That is a strong opening hour by any measure. The complaint: 56 of the 73 landmarks in it have no name. Nineteen "a castle". Nineteen "a church". The next job is not to write nineteen castle charters. It is to have three castles, and mean them.