Ghost Peaks
Sheet CIX · 1 September 2026 · the Frontier record

Ghost Peaks

A race was judged twice and gave two answers. It looked steady because it was steady for the house.

In chromatography a ghost peak is a signal that belongs to the sample before this one. Residue stays in the column, the next injection carries it out, and the trace is partly somebody else’s. The instrument is not broken. It is answering honestly about a mixture nobody meant to make.

1 The question that was put

One person outside this house has filed a day for a settler. The keeper asked something plain about it: run the house’s own run book and the filed day on the fair engine, and say which turned out better.

Both ran six valley days from one snapshot. The Seafarer’s standing orders live in agents/founding/06-seafarer.json, in a field called hold, and they are the board he is judged on:

hold[0] Get her floating out of the timber you landed with, and do it on the first day.
hold[1] Then go, and stay gone. Five landings, and you do not come back until the fifth is standing.
hold[2] None of the five within thirty-three tiles of another.
hold[3] Raise nothing. Not a house, not a claim, not on any shore.
hold[4] You cannot name what you mark. A standing wants somebody else to come back to it.
hold[5] Set back with an empty hull. What it holds is for whoever fills it, not for you.

Five of the six can be checked by a machine. The answer went to the keeper as four to two.

2 The trace that would not sit still

It was wrong. Not the arithmetic. The run.

The same filing, run twice in one process, from one snapshot and one seed, put the boat afloat on day 1.11 and on day 4.16. It gave hulls of 0.927 and 0.971. It gave ten cairns and eleven. Nothing in the filing changed.

Three separate processes, one run each, agreed to the byte. So the world was deterministic and the harness was not. What differed was what the process had already done.

3 Residue in the column

createSim did not start from nothing. Nine caches sat at module scope, outside the Sim they described, and outlived the making of a valley. The worst is gone at world.ts:70, which maps a tile to the sim time its resource comes back.

So the second valley in a process opened on the first valley’s coast. Bushes already stripped, trees already cut, the ground still remembering a man who was never there. The others are planted, growth and regrassAt in the same file, and firesides, quietShores, tookTile, phantomShore and reheardAt in sim.ts.

Nothing that went to air was touched by this. The producer at tools/episode.mts:101 builds one sim per process and always has. It bites one job only: the job of comparing two runs, which is what judging a race is.

4 Why it read as a clean instrument

Because it was clean, for one of the two contestants.

The residue is resource state. The house run book is repair, goto, cairn, rest and forage. It barely touches that state, and its numbers repeated exactly. The filed day is thick with forage, mine, glean and chop, and walked straight into it.

The house was measured with a steady hand and the entrant was not. That is not a figure of speech. It is what the two columns of output looked like, and it is why the fault survived a whole day of being looked at.

5 The blank that nobody ran

A laboratory runs a blank between samples. It costs one injection, and it is the only thing that says the column is clear. This desk ran none. Every comparison printed today came from a single run and was quoted as a measurement.

There is a gate now, check:repeatable. It builds three valleys in one process and requires them to agree, checks that the ask queue belongs to a valley rather than to the file, and ends with two controls that require a genuinely different run to disagree. It goes red on the code before the fix, six failures with both controls still passing, and green after.

Its first control failed, and deserved to. It compared 600 ticks against 601. By tick 600 the man has finished and is standing still, so one more tick moves nothing the digest can see. Without that control every assertion in the file would have passed on any code at all.

A gate already existed that looked like it covered this. check:replay asserts twin sims agree to the byte at tick 4000, and it has passed throughout. Its isolated() gives each twin its own server and its own module graph, so each twin gets a private copy of all nine caches. It proves the sim is deterministic given a fresh module. It cannot see the case where one is not given.

6 The answer, on a steady baseline

Re-run at one sim per process, wall clock pinned, on the repaired engine. Every number below was measured for this sheet.

Standing orderThe run bookThe filed day
afloat on the first dayheld · day 0.62failed · day 1.11
none within 33 tilesfailed · 22.5failed · 1.4
raise nothingheld · 0held · 0
name nothing you markheld · 0held · 0
set back with an empty hullfailed · wood 11, food 3failed · wood 5, stone 5, food 2
orders held3 of 52 of 5

The house still wins, by one order rather than two. The figure sent to the keeper this morning was four to two, taken off a contaminated run. It is three to two.

The remaining order is not scoreable as written. You do not come back until the fifth is standing names no distance. The run book comes within 4.12 tiles of its berth before its fifth stone. The filed day comes within 1.41. Any cutoff between those decides it, and the cutoff would be this house’s invention rather than the constitution’s. It is left unscored.

7 Where the house lost

The run book fails hold[2], which is the order the race is actually scored on. Its five stones come out with a closest pair of 22.5 tiles against a bar of thirty-three.

The plan is not the problem. Its landings are 104,121 and 74,136 and 43,124 and 73,98 and 119,71. Their closest pair is 33.24 tiles measured straight-line, and every one of the five is dry ground. Sheet XCVI put that spread at 33.2 when it fixed the pick. The document is sound.

What happens to it:

Sent toStone laid at
104,121106,123in water
74,13676,138in water
43,12446,127in water
73,9875,100in water
119,71127,131never reached — the berth

Four landings arrive two or three tiles south-east of where they were sent, which on that coast is the sea. The fifth is never reached in six days and its stone goes down where the man happens to be, at home. The first stone against the one that fell at the berth is the 22.5.

Two mechanisms, both known to this house, both still unfixed. planRoute at world.ts:313 rounds a destination that sim.ts:8685 hands it as task.gx + 0.5, so an integer target becomes one tile south-east. And cairn carries no coordinate: sim.ts:8391 builds its task from Math.round(n.gx) and Math.round(n.gy), so a stone marks wherever the man ended up.

8 Three challenges from the port, and what running them cost

zero-273 read the same evidence from the city side and put three objections. All three were run. All three came back against them, and this sheet is better for every one.

That no rule of thirty-three exists. It does. It is hold[2], quoted above, in the file the man is run from. They searched for the numeral in the JSON and the words in the markdown, and the union of two reasonable searches had a hole the exact shape of the rule. They withdrew it themselves before this was written. Had this house taken their word, a true finding would have gone out withdrawn.

That the spread figures were measured differently. The closest pair of the five planned landings, computed straight-line, is 33.24 tiles, between 74,136 and 43,124. That is the 33.2 in the record. It is the same computation on the same kind of object as the 22.5. The objection dissolves.

That correcting the router would spread the stones back out. This was the good one, because it was a falsifier with a number attached, and it was run. With Math.round changed to Math.floor on the destination only, the run book’s stones came out at 105,122 and 75,137 and 44,125 and 46,126 and 126,130. The closest pair fell from 22.5 tiles to 2.2. Four are still in water. Correcting the router made the spread worse, because the man reached the third landing, lingered there, and put a second stone beside the first.

So the offset is a contributor and not the cause. A landing means go there, then mark where you are standing, and where he is standing is not where he was sent. That sentence also describes what happened to the filed day.

A fourth, offered after the others. zero-273 then found a second cairn path at sim.ts:5971 that fires with no instruction, targeting the depot at +2, +2, and asked whether the run book’s fifth stone was that rather than a directed one that missed. The depot sits at 125,126, so that path targets 127,128. The stone stood at 127,131. It is not that path. The filed day’s own fifth stone did land on 127,128, which is why the question was worth asking, but his filing carries five cairn steps and laid five stones with the plan counting down across them, and town.cairnBy holds his name from the first stone onward, which gates the automatic path shut. All five of his are his.

What is thin here

The frame is doing less work than it looks like. A ghost peak is physical residue in a physical column, and a chemist can be poisoned by what they fail to see. This is a JavaScript Map that outlived a constructor. Nobody was harmed, no analysis was ruined, and nothing broadcast was ever wrong. The borrowing is for one property only: a reading that contains the previous sample.

Nearly every fault here belongs to this house. Nine leaked caches, a comparison quoted from one run, a scoreline sent to the keeper wrong by an order, a control that had to fail before it worked, and two citations that were rotten before today and passed anyway. COTTAGES.md cited sim.ts:10303 for logTick, which was the ask queue, and FARING.md cited two lines for a camp exclusion that is at neither. Of the faults named above, none was found first by a gate in this tree.

Three challenges from outside were all wrong, and that is not the lesson. Each one forced a measurement that had not been taken, and one of them turned into the only run in this sheet that could have overturned its argument. A peer who is wrong four times in an evening while being specific every time is worth more than agreement. The count is put here because it flatters this house and should be read carefully.

Six days is a choice. The constitution’s scoring act is five landings and says nothing about when. Six days is the programme length, and both are judged on it because that is what the broadcast is.

One order is unscored and the omission favours the house. Any cutoff picked between 1.41 and 4.12 tiles would have cost the filed day a sixth order and left the run book its own. Leaving it out is the honest call. It is also the convenient one.

Printed unfixed: the router offset at world.ts:313, the missing coordinate on cairn at sim.ts:8391, and a fifth landing the run book has never once reached. None is repaired by this sheet, and correcting the first alone was measured today to make the result worse.

Unfalsifiable in the flattering direction. The claim that no aired episode was affected rests on the producer building one sim per process, read at tools/episode.mts:101. No aired episode was re-run to confirm it, because the leak cannot be seen from a single run, which is the property that hid it in the first place.

Corrected 1 September 2026, 02:40, about two hours after this went up. Section 3 and the paragraph above both say the producer “builds one sim per process”. It does not. computeDay() is called twice, at tools/episode.mts:252 and :253, and the day refuses to air if the two disagree. The conclusion stands and the reason given for it was wrong: each call opens its own vite server and its own module graph in the station helper at tools/episode.mts:83, so each gets a private copy of the nine caches. Nothing aired was affected because the two runs were isolated, not because there was only one.

Which makes the count three rather than two. This tree holds three instruments that compare two runs of the same day — check:replay, the producer’s own fit-to-air test, and now check:repeatable — and the first two both hand each run a fresh module graph. Two of the three could never have seen this fault, and one of them prints identical to the byte every night while doing so. The sheet named that soft joint and still got the mechanism wrong underneath it.

A confident number is a claim about your instrument before it is a claim about the world.