Comments that still describe the old tree, and a flow map pinned to one edition - #281
Merged
Merged
Conversation
…ne edition Two things, and the second is the one with a decision in it. ## The comments A source comment naming a path is documentation, and it rots the same way — so this is the same sweep #279 did for `docs/`, run over the code. Not by memory: a scan pulled every path-shaped token out of every comment in the four packages and `tools/`, resolved each against the filesystem, and only what failed to resolve was touched. Most of what it found was idiomatic shorthand and correct (`df/savegame.ts`, `nav/dials.ts`, a served `editors/tracks.html`); what was left was one shape, in twenty-odd places. `engine/<x>.ts` used to name the runtime directory. `engine/` is the whole package now, so every one of those reads as a file that is not there. Inside the package they are `runtime/<x>.ts`, matching the `df/<x>.ts` shorthand already used beside them; outside it they are spelled out. The same move sent `bug-report.ts` to `site/`, `mklangstg.ts` into `taoot/tools/`, the editors into `site/editors/`, and `masks.ts` out of the playthrough and into the runtime — where `session.ts` was still pointing at its old home, which is now a reference from the engine into a game's test directory for a file that sits next to it. Two that were not path drift: - `tools/gif.ts` credited `tools/mkintromov.ts`, which was renamed and moved to `taoot/tools/mknightdive.ts`; - `proptrace.ts` explained what it replaced by naming `taoot/tests/browser/iface.ts`, which is in no commit — a throwaway probe that was never checked in. The account is worth keeping and the path is not. And `dust/src/main.ts` opened by saying the page has "no engine, no interpreter, no editions, no saves" while importing `GameHost`, the save browser and two audio sinks. That was true of the experiment and stopped being true as the experiment worked: it boots off the disc through the same host Titanic uses, plays the intro films through the engine's own `MoviePlayer`, and saves `.rtd` through the shared browser. What is left of the original is the standalone set walker, which `start()` keeps as the FALLBACK for a boot that cannot produce a viewer — so the "every frame decoded up front" section now says which half of the page it is about, because the game does not pay that cost. ## The flow map reads one tree, and says which `flowmap.ts` emits two things that are COMMITTED: `shipgraph.gen.ts`, which the playthrough navigator walks, and the interactive map under `docs/public/`. Its input was the whole rip, so its output was a function of which editions the person running it had installed. On a seven-tree install that is 326 trips against `en`'s 271 — scripts are deduplicated by content, but the trees are not all the same game, and `demo` is a different CUT that contributes trips the full game has not got. So the default is one tree now, via `activeLanguage()`: `TAOOT_LANG` when set, `en` when not, a path argument to override, and the generated header records which tree it read so the next regeneration is comparable to this one. Regenerated deliberately on that footing, and the result is the reassuring one: **the graph data is byte-identical to what was committed** — 271 trips, 214 fully understood, the header line the only diff — and the flow map's own output does not change at all. The committed artifacts were always `en`; nothing had drifted, and there was no way to reproduce them until #280 fixed the publish path. Now there is, and it is pinned. Verified: `npm test` 534/534, `npm run test:playthrough` 30/30, `tsc --noEmit` clean, `build:dust` clean, `dust/tests/browser/built-layout.ts` good across four viewports. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two things, and the second is the one that had a decision in it.
The comments
A source comment naming a path is documentation, and it rots the same way — so this is the sweep #279 did for
docs/, run over the code. Not by memory: a scan pulled every path-shaped token out of every comment in the four packages andtools/, resolved each against the filesystem, and only what failed to resolve was touched. Most of what it found was idiomatic shorthand and correct (df/savegame.ts,nav/dials.ts, a servededitors/tracks.html); what was left was essentially one shape, in twenty-odd places.engine/<x>.tsused to name the runtime directory.engine/is the whole package now, so each of those reads as a file that is not there. Inside the package they becomeruntime/<x>.ts, matching thedf/<x>.tsshorthand already used beside them; outside it they are spelled out in full. The same move sentbug-report.tstosite/,mklangstg.tsintotaoot/tools/, the editors intosite/editors/, andmasks.tsout of the playthrough into the runtime — wheresession.tswas still pointing at its old home, i.e. from the engine into a game's test directory, for a file now sitting next to it.Two that were not path drift:
tools/gif.tscreditedtools/mkintromov.ts, renamed and moved totaoot/tools/mknightdive.ts.proptrace.tsexplained what it replaced by namingtaoot/tests/browser/iface.ts, which appears in no commit — a throwaway probe never checked in. The account is worth keeping; the path is not.And
dust/src/main.tsopened by declaring the page has "no engine, no interpreter, no editions, no saves" — while importingGameHost, the save browser and two audio sinks. True of the experiment, and it stopped being true as the experiment worked. It now describes what the page does: boots off the disc through the same host Titanic uses, plays the intro films through the engine's ownMoviePlayer, saves.rtdthrough the shared browser. What survives of the original is the standalone set walker, kept bystart()as the fallback for a boot that cannot produce a viewer — so the "every frame decoded up front" section now says which half of the page it is about, because the game does not pay that cost.The flow map reads one tree, and says which
Per the call on #280.
flowmap.tsemits two committed artifacts:shipgraph.gen.ts, which the playthrough navigator walks, and the interactive map underdocs/public/. Its input was the whole rip, so its output was a function of which editions the person running it happened to have. On a seven-tree install that is 326 trips againsten's 271 — scripts are deduplicated by content, but the trees are not all the same game, anddemois a different cut contributing trips the full game has not got.The default is now one tree via
activeLanguage():TAOOT_LANGwhen set,enwhen not, a path argument to override. The generated header records which tree it read, so the next regeneration is comparable to this one:Regenerated deliberately on that footing, and the result is the reassuring one: the graph data is byte-identical to what was committed — that header line is the entire diff — and the flow map's own output does not change at all.
So nothing had drifted. The committed artifacts were always
en; there was simply no way to reproduce them until #280 fixed the publish path, and no way to know you had until now. Both facts are now pinned rather than lucky.Verified
npm test534/534 ·npm run test:playthrough30/30 ·tsc --noEmitclean ·build:dustclean ·dust/tests/browser/built-layout.tsgood across four viewports.🤖 Generated with Claude Code