Files
station-master/docs/rules/as-built.md
T
Jesse.MarkowitzandClaude Opus 5 819996faa2 v0.7.9.2 — two things the table could hear that only one seat should
Both leaks were found while planning the common board (Gitea#20 step 1),
and both are live multiplayer bugs with or without that display, so they
are fixed now rather than with 0.8.0.

`game.log` is one shared list and `linesSince(seat)` slices it with no
per-seat filter, so every line reaches every player. It carried the SEED
in the opening line of each multiplayer game — the whole future of the
deal — and the NAME OF A CARD DRAWN BLIND from the face-down Home Office
deck. Solitaire deliberately keeps both: a one-seat table has nobody to
leak to, the seed is what a bug report quotes, and a player's own history
naming their own draw is the record. A Department slot is face up and
stays named. The drawer still learns their card through `justDrawn`,
which already goes to that seat alone.

Neither was found by a test. Every test in `redaction.test.ts` passes an
empty log, so the whole of narration has sat outside the redaction net
since the net was built. Both now have tests there; TODO #91 carries what
is still owed and supersedes #78, which described a gap that had already
been closed and never mentioned this one.

`docs/rules/` had no current description of the game, and `content.ts`
named `card-reference.md` as the file that carries what the cards say —
a file whose own banner says not to use its numbers, describing the
v0.4.5 deck where 3/4 is a Mail-Express with three coaches. Every file in
that directory is a deliberate historical record, so none of them is
rewritten. `as-built.md` is new and GENERATED from the same catalogues
the engine instantiates from, with a test that re-runs the generator and
fails when the checked-in file disagrees. A hand-written replacement
would have drifted the same way, for the same reason.

TODO.md: #32 closed — the playtest migration note did its job and the
jump is made; the durable fact it carried is kept. #78 retired in favour
of #91. The "play it at a table" section now records that 0.7.4-0.7.9
were test-run without change requests, and that more testing comes at the
end of the 0.7.9 series.

897 tests pass, up from 891.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E3Qk7uresKCHksdZajXCLg
2026-09-07 12:09:25 -04:00

12 KiB

Station Master — the cards as built

Generated from src/engine/content.ts by scripts/build-card-reference.ts. Do not edit by hand — npm run build:cards rewrites it, and test/card-reference.test.ts fails if this file and the code disagree.

This is the one file in docs/rules/ that describes the game as it currently is. Everything else in this directory is a historical record and marked as such: rules-v0.1.md transcribes the prototype PDFs, open-questions.md tracks how the gaps in them were decided, and rules-v0.2.md and card-reference.md both describe superseded card sets. Read those for the reasoning; read this for the numbers.

The engine instantiates from the same constants this is emitted from, so a disagreement between this page and the game is a bug in the generator, not a stale table.


Trains

12 timetabled and 10 Extras, 22 in all. Odd numbers run west, even run east; a pair shares a class and is the same card face in two directions. A Crew Tray holds four pieces and a caboose counts toward the four, which is why no train with a caboose carries more than three revenue cars.

Timetabled

# Class Speed Runs Consist Printed rules
1 Crack Limited fast west 2 coaches (2 pieces) terminals only; no switching; expedite; "Stop at Terminals only."
2 Crack Limited fast east 2 coaches (2 pieces) terminals only; no switching; expedite; "Stop at Terminals only."
3 Express fast west 2 freight (2 pieces) one freight per location; expedite; "May drop or pick up one freight car at every location."
4 Express fast east 2 freight (2 pieces) one freight per location; expedite; "May drop or pick up one freight car at every location."
5 The Sparrow fast west 3 coaches (3 pieces) no switching; expedite
6 The Sparrow fast east 3 coaches (3 pieces) no switching; expedite
7 Local slow west 1 freight + 1 coach (2 pieces) coach stays on station track; "Maximum one freight, one coach."
8 Local slow east 1 freight + 1 coach (2 pieces) coach stays on station track; "Maximum one freight, one coach."
9 Heavy Freight slow west 3 freight + 1 caboose (4 pieces) —
10 Heavy Freight slow east 3 freight + 1 caboose (4 pieces) —
11 Drag Freight slow west 2 freight + 1 caboose (3 pieces) —
12 Drag Freight slow east 2 freight + 1 caboose (3 pieces) —

Extras

# Class Speed Runs Consist Printed rules
X13 Appleseed Extra slow player's choice 3 freight + 1 caboose (4 pieces), empties only drop only; "May drop MTs but not pick up anything."
X14 Fruit Growers Express fast player's choice 2 reefers + 1 caboose (3 pieces) expedite; "Reefers only. May pick up one extra loaded reefer."
X15 Yard Xfer slow player's choice 2 freight + 1 caboose (3 pieces) —
X16 Light Engine Move fast player's choice engine only no switching; "No cars at all."
X17 Campaign Train fast player's choice 1 coach (1 piece) no switching; stop then expedite; stop earns point; must run loaded; "One turn at station (speeches) then expedite. Earns a point per Office Area if the candidate is aboard."
X18 Circus Train slow player's choice 2 freight + 1 coach + 1 caboose (4 pieces) no switching; stop earns point; must run loaded; "One turn stopped in an Office Area (circus set-up) earns 1 point, once per Area, if fully loaded."
X19 Military Train slow player's choice 1 freight + 2 coaches (3 pieces) no switching; no passenger work; expedite; must run loaded; "Troops and materiel: runs loaded where the yard can supply it."
X20 Director's private car slow player's choice 2 freight + 1 coach (3 pieces) no passenger work
X21 Freight Extra slow player's choice 3 freight + 1 caboose (4 pieces) —
X22 Pee-Dee slow player's choice 1 caboose (1 piece) pick up empties only; "Per-diem train. May only pick up MTs."

Mainline cards

A card is divided into regions, and a train advances one region per Stage — so the regions a card prints are what it costs to cross. Where a train enters is what the rules move: a fast train on Hilly, a Heavy Grade with Helpers, or a card whose back region is a siding rather than part of the road all change the entry point rather than the card's length.

Card Regions Default entry Fast / slow entry Trains may pass Sorts cars
Plains 1 0 — — —
Curves 2 0 — — —
Hilly 2 0 1 / 0 — —
Heavy Grade 3 0 — — —
Double Track 1 0 — yes —
Uncontrolled Siding 2 1 — — —
Tunnel 2 0 — — —
Trestle 1 0 — — —
Interchange 2 1 — — yes

The Mainline deck is 10 cards; the two Division Points are the fixed ends of the Division and are not dealt. What each card does, in the words the game uses on screen:

  • Plains — 1 region — one Stage each. · 1 Stage for every train — the printed speed is scenery. · One train at a time — anything following has to wait for it to clear.
  • Curves — 2 regions — one Stage each. · 2 Stages for every train — the printed speed is scenery. · One train at a time — anything following has to wait for it to clear.
  • Hilly — 2 regions — one Stage each. · This card reads the train's FAST/SLOW rating: a fast train starts further along and crosses in 1 Stage, a slow one in 2 Stages. No other card cares which it is. · One train at a time — anything following has to wait for it to clear.
  • Heavy Grade — 3 regions — one Stage each. · A grade, climbing eastward. 3 Stages to climb it and 3 Stages to run down, before help. Helpers start an UPHILL train a region further on; Brakeman does the same DOWNHILL and Airbrakes another again, and Airbrakes cannot be played without Brakeman. Never less than one Stage. · One train at a time — anything following has to wait for it to clear.
  • Double Track — 1 region — one Stage each. · 1 Stage for every train — the printed speed is scenery. · TRAINS MAY PASS — two trains may stand on this card at once, so a following train is not held behind a slower one.
  • Uncontrolled Siding — 2 regions — one Stage each. · A train with the card to itself starts past the back region and is across in 1 Stage. · UNCONTROLLED SIDING — arrive to find a train already here and you take the siding, a region behind it. You are not in the same place, so you do not run into it; it costs you the extra Stage instead. · One train at a time — anything following has to wait for it to clear.
  • Tunnel — 2 regions — one Stage each. · 2 Stages for every train — the printed speed is scenery. · One train at a time — anything following has to wait for it to clear.
  • Trestle — 1 region — one Stage each. · 1 Stage for every train — the printed speed is scenery. · One train at a time — anything following has to wait for it to clear.
  • Interchange — 2 regions — one Stage each. · A train with the card to itself starts past the back region and is across in 1 Stage. · An Extra beginning its run here starts in the back region and takes the extra Stage. · One train at a time — anything following has to wait for it to clear. · Cars may be sorted into any new order here.

Office cards

Upgrades are strictly sequential — no skipping a tier — so a Terminal needs all three cards in order. Green slots are outbound passengers, red are inbound, and the design gives slots equal to Porters rather than one more.

Office Control point Passenger facility A/D tracks Porters Green Red In deck
Whistle Post — — 1 0 0 0 —
Depot yes yes 2 1 1 1 4
Station yes yes 3 2 2 2 2
Terminal yes yes 4 3 3 3 1

Whistle Posts are a fixed supply of 4 outside the deck, and Limits signs a supply of 8.


Freight facilities

Each lists the car types it works, which way its traffic flows, and the industries it may not sit beside. Every lockout pair is a producer and the consumer of the same commodity — you may build one end of a chain or the other, never both, which is what forces traffic to run between districts rather than in circles inside one. No two of the same industry may share an Office Area, and that rule is enforced for every kind rather than repeated in each row.

Industry Cars Flow Green Red Laborers Locked out with Copies
Freight House boxcar both 1 1 1 Grocer's Warehouse 2
Mine Tipple hopper outbound 1 0 1 Power Plant 2
Refinery tank outbound 1 0 1 Power Plant 1
Power Plant hopper, tank inbound 0 1 1 Mine Tipple, Refinery 2
Packing Sheds reefer outbound 1 0 1 Grocer's Warehouse 1
Grocer's Warehouse boxcar, reefer inbound 0 1 1 Packing Sheds, Freight House 1

Modifier cards

Each sits beside a host and raises one of its capacities. office as a host means any Passenger Facility — so a modifier that adds a green slot to an Office adds nothing to a Whistle Post, which is not one.

Modifier Hosts +Green +Red +Laborers +Porters Copies
Waiting area any Passenger Facility 1 — — 1 3
Restaurant any Passenger Facility 1 — — 1 2
Hotel any Passenger Facility 1 — — 1 1
Truck dock Freight House, Packing Sheds, Grocer's Warehouse — 1 — — 2
Railroad Express Agency Freight House 1 — 1 — 1
Forklifts Freight House, Packing Sheds 1 — 1 — 2
Prep Plant Mine Tipple 1 — 1 — 1
Coal Piles Mine Tipple 1 — 1 — 1
Conveyor Belts Mine Tipple 1 — 1 — 1
Pipelines Refinery 1 — 1 — 1
Oil Depot Refinery 1 — 1 — 1
Viscosity breakers Refinery 1 — 1 — 1
Transmission lines Power Plant — — 1 — 1
Rotary Dumps Power Plant — — 1 — 1
Steam Turbines Power Plant — — 1 — 1
Ice House Packing Sheds, Grocer's Warehouse 1 — 1 — 2
Local small groceries Grocer's Warehouse — — 1 — 1

Track cards

Track is in the Home Office deck and is drawn and played like any other card — not a separate per-player supply. Operational Rail is the flag that says a train may stop on the card; a turnout may be run through but not stopped on.

Track Geometry Hand Operational rail Move cost In deck
Straight track straight none yes 1 16
Curved track (right) curved right yes 1 8
Curved track (left) curved left yes 1 8
Sharp Curved Track (right) sharpCurved right yes 2 —
Sharp Curved Track (left) sharpCurved left yes 2 —
Turnout (right) turnout right — 1 8
Turnout (left) turnout left — 1 8

48 track cards are dealt in total. Rows showing no copies are shapes the engine understands but the deck does not currently print.