Seven rules faults and one dealing fault, from a four-way code audit (engine, server, client, tests) read against the code before anything was acted on. Each is pinned by a test that failed first. CHANGELOG has the reasoning; this is the list. THE DEAL. 0.8.2 put the Second Section card into the deck after its save check had run and without a line in its notes. A deck one card larger shuffles differently from the same seed, so every save on the test server refused at move 3 — the boot log shows thirteen of thirteen — while the release notes said three would resume. `withSavedDeal` (was `withSavedOpening`) now sets `secondSectionCard: false` for a config that predates the setting, and the thirteen replay exactly as 0.8.2 described: three resume, ten refuse, the same ten at the same moves. THE RULES. `check` never tested that a switching tray was in the actor's own district, so a rival's train could be shunted and the rival charged the Moves. Occupancy matched on coordinates alone, so a rival's crew blocked your track. A Department draw that emptied the deck duplicated the drawn card and destroyed the refill card. The unjam cleared the first load rather than the one named. The collision floor could not fire in Stage 12. The Expedite fault was charged once per clearance question rather than once per phase. A train held at the Limits was only ever released by another arrival, never by a departure. Docs: rules.md describes each as built (and no longer says an Expedited train departs at Shift Change — that was v0.4.8's reading, corrected in v0.4.9's code and never in the document); game-state.md's collision-floor note now matches the code. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FrCWubm9GAftYCm2hWdKwK
6.4 KiB
Station Master — Components and Markers
Version 0.8.3 · 2026-09-29
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 not published, because they move with play balance.
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". |
| Office cards | 4 | Every player starts on one. The starting Office 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. 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.
The Office, tier by tier
Every player has one Office card. It is a property of the district rather than a card that is swapped, so an upgrade raises the numbers in place and leaves anything built beside it alone.
| Office | A/D tracks | Porters | Passengers out / in | Control Point |
|---|---|---|---|---|
| Whistle Post | 1 | 0 | 0 / 0 | — |
| Depot | 2 | 1 | 1 / 1 | yes |
| Station | 3 | 2 | 2 / 2 | yes |
| Terminal | 4 | 3 | 3 / 3 | yes |
A/D tracks are what decide whether an arrival is a collision. A train pulling in to an Office with every track occupied collides (§8.3) unless an Interlocking holds it out on the Limit Track. A train held that way takes the first track to free, ahead of anything arriving after it.
A Whistle Post is not a Passenger Facility. It has no Porters and no passenger boxes, so nobody boards or gets off there however well the district is built, and the passenger Modifiers — Waiting Area, Restaurant, Hotel — cannot be played at one.
A Control Point divides the Mainline into Subdivisions, which is what §8.1 reasons about. A table of Whistle Posts is one Subdivision from end to end; every upgrade splits one in two and buys the Division capacity.
Games open on a Depot unless the table turns on "Players start with Whistle Posts, not Depots" when the game is created. See the Home deck reference.