Files
station-master/docs/StationMaster-Components-v0.4.5.md
T
Jesse.MarkowitzandClaude Opus 5 f308a2d94d v0.8.0.15 — the reference documents, and a card that advertised what it cannot do
The four hand-written references brought up to the game as it actually runs,
ahead of the next testing round, plus a Quickstart to hand a tester who has never
played. They had not been touched since v0.6.2 — a month and two minor versions —
and each now says at the top which build it describes.

ONE LIVE BUG CAME OUT OF THE PASS. mainlineDescription told players "Cars may be
sorted into any new order here" on the Interchange. It is the printed capability
and has never been implemented: nothing reads sortsCars to permit a sort, and its
one live use is marking the card an Extra may be made up on, because it is the
Mainline card with a yard. That sentence is not only documentation — view.ts
renders it as a Mainline card's `what`, so it is what a player reads on the
board, and the generated reference printed a "Sorts cars: yes" column beside it.
A card advertising a button that does not exist sends a player hunting for it and
then concluding the game is broken.

What the documents had wrong, all of it verified against the code rather than
read for tone: the victory model in the Rules book (firstToTarget /
highestAfterDays and the target-bearing length presets stopped existing in
2026-08 — it is a free days count and a combined floor of 3 x players x days);
"there is no lobby, no server, no multiplayer"; crossing time in mph rather than
regions; Extras launched automatically eastbound; the Uncontrolled Siding listed
as a passing card; industry track length taken from the box count; and a
"Sister Trains" optional rule that never existed. The Home deck's counts table
came out under TODO #15a — Jesse's own ruling that counts move with balance —
and it had been wrong for a month, which is the argument made twice.

The Home and Mainline deck references are restructured to explain how a deck is
USED and to defer every per-card table to rules/as-built.md. Duplicating it by
hand is precisely the drift #15a was raised about: as-built needed no correction
beyond the Interchange, because build:cards regenerates it and a test fails when
the checked-in file disagrees. Everything hand-maintained around it had drifted;
it had not.

docs/design.md, the index everything starts from, said v0.4.3, "what is not: the
server", and 493 tests. It now also lists the player-facing references, which it
never has, so the Quickstart is findable at all.

999 fast tests and 35 sim tests pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DmdqqCNoiqE7GBo6wthBnR
2026-09-20 12:13:18 -04:00

5.3 KiB
Raw Blame History

Station Master — Components and Markers

Describes the game as built at v0.8.0.15 (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.

Scope: non-card physical components and supplies. Card-created facilities, workers, deck piles, hand state, timetable state and other markers are documented with their cards or in the rules book.

The figures below are checked against ROLLING_STOCK_SUPPLY and the supply constants in src/engine/content.ts. They are physical inventory rather than deck tuning, which is why they are printed here at all — per-category CARD counts are deliberately not published anywhere (TODO #15a).

Rolling stock

Rolling stock has a type and a load state. In the interface, coloured cars are loaded and white cars are empty. The Division Yard starts with the following supply.

Type Loaded Empty Total Use
Coach 8 8 16 Passenger work.
Boxcar 10 10 20 Freight House outbound/inbound; Grocer’s Warehouse inbound.
Hopper 8 8 16 Mine Tipple outbound; Power Plant inbound.
Reefer 5 5 10 Packing Sheds outbound; Grocer’s Warehouse inbound.
Tank car 6 6 12 Refinery outbound; Power Plant inbound.
Caboose 6 0 6 Required or permitted at the rear of the applicable train cards.
Total 43 35 78

The engine is not rolling stock and does not count against the four-car Crew Tray limit.

Other supplies

Component Count Note
Crew Trays players + 3 Engine and tray are one combined resource; there is no "engine without a tray".
Whistle Post cards 4 Every player starts on one; it is not drawn from the deck.
Limits signs 8 "2N + spares", so relocating one is never a supply question.

The two yards

Division Yard

The Division Yard is the active supply. It provides:

  • loaded cars to a Freight Agent stocking a green outbound box;
  • empty cars for building up trains;
  • an empty coach when passengers detrain; and
  • an empty matching freight car when a loaded freight car begins unloading.

When a train completes a run or is destroyed, its caboose returns to the Division Yard. When a car is taken from the Division Yard and that yard has become entirely empty, every car from the Classification Yard moves back into the Division Yard immediately.

Classification Yard

The Classification Yard collects used rolling stock: cars displaced by boarding passengers, cars cleared from inbound red boxes, cars removed by unjamming a facility, ordinary cars from completed or destroyed trains, and empty cars replaced by a completed outbound freight load. It is not a player-selectable source. It returns to service only when the Division Yard is empty.

This is a one-way ratchet for COACHES, and it decides games. Boarding sends an emptied coach here; detraining takes a fresh empty out of the Division Yard. Nothing returns a coach to the Division Yard except the bare-yard refill — and a yard kept topped up with freight cars returning from industries may never run bare. Measured over one three-Day game, every coach was here by the middle of Day 2 and stayed. See Rules §4.6.

Crew Trays and trains

Crew Trays represent an engine and its coupled consist. The game creates players + 3 free trays at setup. A tray is scarce: a due train without a free tray is held for that Stage, and Extras wait until one becomes free.

Within a tray, the engine can pull, push, or be between cars while switching. To depart an Office for the Mainline, it must be made up with the engine at an outer end; if it has a caboose, the caboose must be at the opposite outer end. A train may have at most four cars. A scheduled train can run under-strength but never with more than its card allows.

Fedora

The Fedora is the physical marker for the Superintendent. The player with it resolves following-train clearance decisions, takes the Yard Office and Red Flag questions, and is the player every round round the table starts with. A Mainline collision is their fault by §10, and costs 5 Revenue. The initial holder is the first player tied for the highest Superintendent setup D12 roll.

It passes at the end of Stages 3, 6, 9 and 12 — every third Stage, at the Supervisor Shift. Since v0.8.0.13 the handover is announced on screen and written into the history: it is the one thing in the game that changes hands on the clock rather than because somebody did something, so nobody is watching for it. Note that the Supervisor Shift refreshes every Laborer and Porter every Stage while the Fedora moves only every third.

D12 and seeded randomness

The D12 is used by the engine for:

  • the initial seating roll in a multi-player engine game;
  • the initial Superintendent roll;
  • a timetabled train’s timetable slot; and
  • all shuffled deck order and automatic setup selection through the same seeded random stream.

The rules engine uses a deterministic 32-bit seeded random generator. The same numeric seed, player configuration, house rules, and accepted intent sequence reconstruct the same game. A seed by itself is not enough when house rules differ.