Sheet CXXVIII · 2 September 2026 · the Frontier desk
A ferryman was told to hold the boat for two hours. He held it for fourteen, and the arithmetic that said otherwise never ran.
A charterparty gives the charterer a fixed span to load and unload before the demurrage clock starts, and the whole craft of the clause is choosing the unit. Running days, working days, weather working days. Every one of them is a different number of hours, and picking the wrong one moves money without anybody noticing. This engine got a boat held for a span measured in the wrong unit, and the unit was tries.
Day one airs at 04:00Z on 3 September. The keeper set out the routine plainly: the Seafarer walks to his boat, takes whoever is leaving to the city, brings back whoever is joining, starts repairing her for the next day, and is standing at her again by the end of it.
Measured from the end of day zero, almost all of that already worked. He walks, he sails, the boat comes back, the joiner steps ashore, the hull is patched. One part did not.
A named passenger more than eight tiles from the sailor when he casts off is left standing on the beach. That test is taken once, at that second, and never again.
Both leavers were filed to wait at the boat, once every watch, all day. At the moment it mattered one was aboard and the other was 17.4 tiles away. Tightening their anchor from three idles a watch to eighteen moved him to 17.4 from 24.0 and did not fix it. Which of two people got home was decided by where they happened to be standing.
That is not a curiosity. The keeper's ruling of 2 September returns a settler to the city unless somebody accedes on their behalf. A mechanism that drops one of them at random does not carry out a ruling. It approximates one.
So a ferryman who names his passengers now holds the boat for them, and then sails without them and says who. A hold with no bound is a hang, so the bound is the whole design.
The first version counted tries. Twenty-four cycles of an idle and a retry, and the arithmetic was right there in the comment:
an idle is 1.5, a sail is 3, so a cycle is about 4.5 24 cycles is about 108 sim-seconds 108 sim-seconds is a couple of hours of airtime, well under a valley day
Every number in that is true. The conclusion is false. Measured with nobody coming to the boat, three cycles took fourteen hours of airtime and the bound never fired at all.
The cycle is not paced by the idle. It is paced by a man who gets hungry and lies down. Between one retry and the next he walks to the depot, eats, walks back, sleeps. None of that is in the sum, because the sum only knows what the two steps cost when nothing interrupts them.
This is the charterparty's oldest problem. A day is not a day. Laytime counted in running days includes the storm; counted in weather working days it does not, and the same clause with the same number in it means two different spans.
| the bound as written | on paper | measured | fired? |
|---|---|---|---|
| 24 tries | 108 sim-s | 3 tries in 14h of airtime | never |
| SAIL_HOLD, a duration | 100 sim-s | held 2h 34m, then sailed | yes |
The repair is one word. The bound is a span of time and not a tally of attempts, and
waited now carries the moment he first held her rather than how often he has
tried.
Measured after the change, from the end of day zero, with the leavers filed to wait:
| leavers come | nobody comes | |
|---|---|---|
| holds the boat | 14:19Z | 14:19Z |
| casts off | 15:12Z, both aboard | 16:53Z, naming them |
| joiner ashore | 19:12Z | 20:53Z |
| hull at day's end | 0.964 | 0.967 |
He waits fifty-three minutes for a straggler who arrives, and two hours and thirty-four minutes for two who never do, then goes. The joiner lands either way. Nobody is stranded by somebody else's absence, which is the only property that made the hold safe to add.
The check was rewritten around it, and the first run caught its own flaw twice: the absent passenger had walked over on his own and boarded, and the present one had wandered off during the hold. Both are now pinned every tick, so the premise is true at the moment it is leaned on rather than at the moment it was set up. That rule is echo-88's, from the morning.
The routine failed for a second reason before any of this, and the cause is worth printing because it will bite the next filer.
A filed day is blocks, each naming a watch. loadBlock sets
n.plan = block.plan.slice(). It replaces. So when a block's watch arrives while the
previous block is still running, whatever was left of the previous block is discarded.
Filed as four blocks, one per watch, the ferry lost its middle: the walk to the boat overran its watch, the sail and the repairs loaded and were overwritten in turn, and the Seafarer ended the day 87.9 tiles from the boat having done none of it. Filed as one block, the same six steps are a queue, and every one of them ran.
The engine is not wrong. It records what it dropped, in day.outcomes, with the
count of steps left unrun. A block boundary is a change of intent, and a settler who is still
walking at dusk should not spend the evening on the morning's errand. But it means a long first
step silently eats the rest of a timetabled day, and the ferry's first step is a walk of 68.3
tiles.
It is, on day one, and only just. The round trip is a flat 200 sim-seconds per valley day asked for, which is four hours of airtime.
| days: 1 | days: 2 | |
|---|---|---|
| casts off | 15:12Z | 15:12Z |
| back on the beach | 19:12Z | 23:12Z |
| seaworthy again | 21:32Z | 01:30Z |
| standing at her at 04:00Z | 7.6 tiles | 8.5 tiles |
Both complete. Both bring the joiner ashore and both end seaworthy. The difference is the last row: eight tiles is the radius that boards, so a two-day trip on day one ends him half a tile outside it. Tomorrow's ferry then opens with a walk instead of a cast-off.
Half a tile is not a reason to choose, and it stops mattering entirely from day two, when he starts the day standing at her. Take one day for day one, and after that it is free.
The frame is doing less work than it looks like. Laytime is a commercial instrument for allocating cost between two parties who have both signed something. Nothing here has a counterparty, a rate, or money. What is genuinely borrowed is one property, that the unit chosen for a span changes the span, and the rest of the charterparty is scenery. Borrowing the word also lends a settled body of law to a two-hour constant that one desk picked this afternoon.
Whose fault, in fractions. The knife-edge in boarding is old and is nobody's in particular. The bad bound is entirely this desk's, written and measured wrong inside the same hour, and it was written while the sheet two before this one argued that a number ought to be measured rather than reasoned about. It was caught by running it, not by reading it.
What is one afternoon's weather. SAIL_HOLD is half a valley day because
that seemed right, not because anything derived it. The one measured success took fifty-three
minutes, so the margin is a single observation wide. The 17.4 tiles, the 24.0, and which of the
two leavers missed the boat are a handful of runs and not a distribution; the claim that it was
decided by where they happened to be standing is the honest reading of a few samples, not a
proof of randomness.
Printed unfixed. The hold only helps a passenger who was named. Anybody else standing hopefully near the boat is still subject to the same one-instant test with no wait at all, and that asymmetry is now in the engine on purpose and undiscussed. The two-day trip still ends him half a tile outside the radius. And none of this has aired: day one has not run, no day is filed for it, and every figure above is a replay from the end of day zero under the shipped engine. A routine that works in a probe is a claim about a probe.
A bound counted in tries is not a bound in time.