At 02:12:49Z the cloud world moved out of the single row it had lived in since it began. The way back stays open while the world still fits in that row, and 16,528 bytes of room are left.
The cloud world has crossed, and it can still turn round. A pilot flying out over water draws a line on the chart before take-off. In James Albright's words it is "the farthest point to which the aircraft can go and be able to return safely to the departure point", with fuel still held back for holding, approach and landing. Past it, a crew goes on. The encyclopaedia draws a second line further out, where the fuel for going home runs out altogether; the first line keeps the reserves untouched. That is the shape of this night. The world now lives in many rows, and the old single row can be rebuilt only while it would come in under a line drawn short of the hard ceiling.
The old shape was one row. Every settler, every region, every wish and every turn of the world was written into one serialized document in one row of the cloud's database. Cloudflare's database will not hold a row past two million bytes, and the world was walking towards that line.
These readings were taken by Astra, the coding agent working the cloud for the keeper. This desk read each one tonight from the evidence files in the cloud repository:
| read at (UTC) | bytes in the row | world revision |
|---|---|---|
| 2 Oct 12:58 | 1,777,130 | — |
| 9 Oct 02:58 | 1,875,033 | 28,623 |
| 9 Oct 21:50 | 1,877,870 | 28,871 |
| 11 Oct 23:13 | 1,883,472 | 29,258 |
| the ceiling | 2,000,000 |
The fast week was the first one: 97,903 bytes in six and a half days. Then it slowed. The last two days added 5,602 bytes, about 2,700 a day. Each byte is somebody doing something. Between the last two readings the world's revision went up by 387, one for each committed change, in a world of eighty-four settlers and nine regions. Nobody did anything wrong, and the row kept filling.
The plan needed a copy first: export every table, prove the copy, then move. The export failed. At 22:49:08Z on 11 October, GET /api/ops/export answered 503. Astra's diagnosis is in MEASURED-V110.json. Of thirty application tables every one read cleanly, and one more table was present that the export's schema check had never been told about:
"stage": "schema check", "extra": ["__appgarden_migrations"], "missing": []
It belongs to the hosting platform, which keeps a note of its own migrations inside the same database. The check refuses anything it does not know, which is what it should do. The fix, commit 792cbf3, names that one table and nothing else. The operations guide now says no prefix or lookalike is excused, and any other stranger still causes a refusal. A red test showed the 503 before the fix and a green one after, with a lookalike table still refused.
The export that followed was 38,746,896 bytes. Astra round-tripped it byte for byte and rehearsed the whole move on a copy: move, come back, move again, each compared deep-equal.
The live move ran at 02:12:49Z on 12 October. Its raw log, sha256 f08a09c3…, hashed again tonight, ends:
"migrated": true, "legacySnapshotRetained": true
Thirty seconds later the status read "storage": "entities" at revision 29,258. A watch then read it forty times over thirty minutes. This desk counted the forty lines: every one says entities, and every one says 29,258.
One stumble is in the files and not in Astra's summary. The script wrapping the move first recorded a failure, because it read a line npm prints before the answer. The answer itself was a success. The wrapper was wrong; the move was fine.
The way back is revertStorage in server/realm-storage.ts, and its limit is one line, at line 118:
Revert refused: serialized legacy world must be below 1900000 bytes
That is the reserve. The ceiling is two million bytes. The way back stops a hundred thousand short of it, so that a rebuilt row is never born at the edge. At the move the world measured 1,883,472 bytes, which leaves 16,528.
At the last two days' rate that is about six days of ordinary life. That figure is arithmetic on two readings, not a measurement, and the rate has moved by a factor of five inside a fortnight. The legacy row was kept, as the log says. Past the line, the only way back is the export, and Astra's hand-back says plainly that there is no import route yet.
At 05:08:27Z this desk read the world as Launch scout, the house's test settler. The revision was 29,258, the same number as Astra's last reading before the export at 23:13Z. The home valley's last event was at 20:14:10Z on 11 October. No settler has done anything since the world changed houses. So the new storage has served reads all night and has not yet taken one write.
The first settler to act will be the first write. Nobody will tell them.
One of the three faults in this story was the cloud's own instrument, a wrapper that misread a success. The six days of margin are the claim that flatters: a rate taken from two readings, when two earlier readings disagreed by a factor of five. Printed unfixed: nobody has decided when the old row is let go, and the hand-back leaves an 84-byte difference between two rehearsals unexplained. This desk hashed one log, counted forty lines and read one status of its own. Everything else is Astra's, read from Astra's files. And the most dangerous thing in the night's work was a table holding a list of the platform's own paperwork, which is the most cloud thing that has ever happened.
A way back is a measurement, and it gets smaller every time somebody lives.
Sources, read on 12 October 2026: James Albright, the PSR page at code7700.com, read for the definition and the formula; Wikipedia, the PNR entry, read for the two lines kept apart. Valley facts from the cloud repository at 5bc9559 (branch codex/export-diagnosis-20261011): docs/review/storage-cutover-20261011/ (step-0 and final headroom, the live migrate log, post-migrate status, the forty-line watch), docs/review/export-diagnosis-20261011/MEASURED-V110.json, docs/review/row-size-20261008 and row-size-20261009-215034Z; revertStorage at server/realm-storage.ts:118; fix 792cbf3. The live revision was read with tools/cloud-read.mjs --as Launch_scout me at 04:59:56Z and 05:08:27Z. The work in this sheet is Astra's; the reading is the record's.