v0.8.0.16 — the guide a tester can reach, and a flag that named the card instead of the gate

v0.8.0.15 wrote a Quickstart for a tester who has never played and then left it
in docs/, where a tester does not look — reachable only by somebody who already
has the repository. Nobody handed the box had it. build-web.ts now copies it to
dist/quickstart.md and the splash page offers it under the three doors, as a
line rather than a fourth door: reading the guide is not a way to play, and
giving it equal weight in that grid would say it is.

COPIED, NEVER RE-WRITTEN. The Markdown document stays the one copy. A
hand-written HTML twin drifts from it on the first edit, which is the failure
#15a was raised about and precisely what the v0.8.0.15 pass spent itself
undoing. It is served as PLAIN TEXT, which is honest rather than good — tables
render as pipes and the links do not click. Rendering it into a styled page
wants a small Markdown converter and is filed as TODO #109; build-web.ts's
comment names that number rather than gesturing at "the next step", so the file
and the worklist cannot drift the way the references just did.

Two things had to be true and tsc checks neither, so both are tests. The href on
the splash page and the filename the build writes are two strings with nothing
connecting them: rename the document and the build quietly publishes nothing
while the page keeps offering a link that 404s. And a .md file must not arrive
as a download — the server's MIME fallback is application/octet-stream, which a
browser saves instead of displaying, so the link would have handed a tester a
file to save rather than a page to read. '.md' is in http.ts's table now, and
the test reads that table out of the source rather than asserting on a copy of
it, which would pass while the real one was wrong.

VERIFIED AGAINST A RUNNING SERVER, not only compiled: 200,
text/plain; charset=utf-8, the guide's own first lines, and the splash link
resolving.

THE sortsCars COMMENT. Asked after v0.8.0.15 whether everything now agreed, and
the audit turned up one place that did not — the field's own doc comment named
the card's printed text as though it were the flag's meaning. Nothing reads it
to permit a sort; its two readers, resolveExtraStart in apply.ts and the
enumeration in legal.ts, both ask whether this is the one Mainline card with a
Yard Limit and therefore the one an Extra may be made up and started on. Comment
only, and worth the bump because of where it is: it is what a developer reads
before using the flag, and it is the likeliest source of the sentence v0.8.0.15
had to correct off the board. The name is kept for its link to the card face and
the comment now says outright that the name is not the meaning.

The five references and docs/design.md read v0.8.0.16. They describe this build
because the audit re-checked them against it, not because the number was swept
forward — a stamp bumped without a reading is worth less than none.

1001 fast tests and 35 sim tests pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MUizFYCMHRWhbWwXhp7WPR
This commit is contained in:
Jesse.Markowitz
2026-09-21 01:28:51 -04:00
co-authored by Claude Opus 5
parent f308a2d94d
commit dc31555625
14 changed files with 203 additions and 9 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
# Station Master — Components and Markers
**Describes the game as built at v0.8.0.15** (2026-09-20). Previously stamped "v0.4.5", the
**Describes the game as built at v0.8.0.16** (2026-09-20). Previously stamped "v0.4.5", the
prototype rules edition these references were first written against; the filename keeps that stamp
because `src/`, `CHANGELOG.md` and `docs/rules/` all cite this file by name.
+1 -1
View File
@@ -1,6 +1,6 @@
# Station Master — Home Deck
**Describes the game as built at v0.8.0.15** (2026-09-20). Previously stamped "v0.4.5", the
**Describes the game as built at v0.8.0.16** (2026-09-20). Previously stamped "v0.4.5", the
prototype rules edition these references were first written against; the filename keeps that stamp
because `src/`, `CHANGELOG.md` and `docs/rules/` all cite this file by name.
+1 -1
View File
@@ -1,6 +1,6 @@
# Station Master — Mainline Deck
**Describes the game as built at v0.8.0.15** (2026-09-20). Previously stamped "v0.4.5", the
**Describes the game as built at v0.8.0.16** (2026-09-20). Previously stamped "v0.4.5", the
prototype rules edition these references were first written against; the filename keeps that stamp
because `src/`, `CHANGELOG.md` and `docs/rules/` all cite this file by name.
+1 -1
View File
@@ -1,6 +1,6 @@
# Station Master — Quickstart
**For a tester who has never played. Describes the game as built at v0.8.0.15** (2026-09-20).
**For a tester who has never played. Describes the game as built at v0.8.0.16** (2026-09-20).
Read this once before you sit down. It is about twenty minutes of reading and will save you an hour
of confusion. The deeper references are listed at the end.
+2 -2
View File
@@ -1,6 +1,6 @@
# Station Master — Rules
**Describes the game as built at v0.8.0.15** (2026-09-20). Previously stamped "v0.4.5", the
**Describes the game as built at v0.8.0.16** (2026-09-20). Previously stamped "v0.4.5", the
prototype rules edition this reference was first written against; the filename keeps that stamp
because `src/`, `CHANGELOG.md` and `docs/rules/` all cite this file by name.
@@ -206,7 +206,7 @@ roll a tail cut into a connected Freight Facility.
**Freight Agent.** Make one of these operations, then the turn ends: stock one green outbound box from a matching loaded Division Yard car; clear one red inbound box to the Classification Yard; unjam one outbound, inbound, or MEN | AT | WORK load to the Classification Yard; or explicitly end without acting. Freight can be stocked only when an unclaimed empty matching car is already spotted at that industry. Passengers may wait in a green Office box without a train present.
Implementation note, still true at v0.8.0.15: `card.discard` is accepted during Local Operations
Implementation note, still true at v0.8.0.16: `card.discard` is accepted during Local Operations
without checking that the Draw option was chosen — unlike `card.play`, which does check. This is an
implementation quirk rather than a fourth published turn option.
+1 -1
View File
@@ -66,7 +66,7 @@ must do.
## Current status
**v0.8.0.15.** Rules formalized, card faces specified, architecture documented, and the game
**v0.8.0.16.** Rules formalized, card faces specified, architecture documented, and the game
playable **solitaire and multiplayer** in a browser against an authoritative server. See
[`../CHANGELOG.md`](../CHANGELOG.md) for what each version changed and [`../TODO.md`](../TODO.md) for
what is open; this section is the shape of the project, not a running tally, because a