Files
station-master/docs/StationMaster-Home-Deck-v0.4.5.md
T
Jesse 9f3b92d08e v0.4.7 — the switching game: track order, the cut on your own card, and four rules
Eight play reports and one design that had been written up and not built. The
through-line is switching: what a card can hold, which end of a train a cut comes
off, which way a train meets cars standing on the line, and what the board and the
log say about all of it.

TRACK ORDER FOR STANDING CARS, AND THE CUT ON YOUR OWN CARD

Two reports turned out to be one root cause. `TrackCard.standing` claimed "in track
order (§A.3)" and had no defined orientation at all, while `CrewTray.consist` does
(nose first, relative to facing) — so every transfer between them was a conversion
nothing performed. §A.3 says what it should be: cars occupy the track "in the same
order they originally held, left-to-right". Left-to-right is west-to-east, and that
is now the defined orientation of `standing` and of an industry track through
`carsOn`. It is the board's orientation, not the train's, so it does not change when
a different train touches the card.

  - Setting out is batch-invariant. Four cars at once, four singles and two pairs
    parked three different orders, one of them physically impossible. Successive
    cuts off the same end stack up towards the engine, so the insertion point is the
    train's own place in the row.
  - Approaching a cut from either end now mirrors. `couples` is built nearest-first
    along the direction of travel and reverses onto the nose, so the farthest car met
    ends up nose-most — which is what makes a run-around worth its Move.
  - A train no longer drives through its own cut. The walk began at the neighbour of
    the start square and never read the start card, so a crew could set cars out and
    pull straight away from them. Coupling is mandatory (§A.4) and your own square is
    no exception; the cut counts against the four-car limit. Setting out off the end
    you are not leaving by still works.

`CrewTray.standingWest` records where a train stands among the cars on its card — a
train may set out off both ends on one square, so which side a cut is on is not
recoverable from the array alone.

On the board, the cut is drawn split at the train — west cars left, east cars right,
engine in the gap — and each car's tooltip says whether it stands ahead of or behind
the engine. The history says which end a cut came off, and a move's button separates
"takes your own boxcar back off this card" from cars found standing on the line.

Decided: taking your own cut back on the square you are standing on is UNDOING the
drop. It is exempt from trains 3/4's per-location freight budget, X13's "drop but not
pick up" and X22's "empties only", and it refunds the budget the drop spent.
Otherwise a legal-looking drop becomes silently one-way.

Measured, 200 paired seeds, developer bot: -0.55 revenue (t = -3.63), freight revenue
1.11 -> 0.56. That cost is the bot's, not the rule's — its trains run engine-first,
so at a stub industry it sets a car out between itself and the only way out, and the
correct play is §A.5's facing-point move, which is the cross-turn planning TODO.md
already records as out of reach of any bot. Filtering self-recoupling moves out of its
options took recoupling from 625 of 1,029 set-outs to 101 of 677, and all 101 that
remain are that case. Read the number as a bot measurement, not a balance one.

THE SUPERINTENDENT'S RULING NAMES THE TRAINS IT IS ABOUT

Reported: the Superintendent could not tell which train he was clearing. The heading
asks the question now — "may Train 6 follow Train 4 onto the same Mainline card?" —
and the trains moved to the FRONT of each button, because the button splits its label
at the first em-dash and showed only the head.

AN INDUSTRY TRACK HOLDS FOUR CARS, LIKE EVERY OTHER CARD

Reported at undo 188: "we wanted to drop two cars, but were only allowed to drop one."
An industry track was built as long as its box count, so a one-box industry had room
for one car. Box count is how much WORK an industry can hold, not how much RAIL it
has. Ordinary track was the other exception, unbounded; both are gone and every card
holds four.

THE FREIGHT AGENT MAY STAGE A LOAD BEFORE THE CAR IS THERE

§6.3 asks nothing of the industry track — the empty car belongs to §9.3's Load the
car, which is the Laborer's action. The gate now lives only there, so cargo can wait
on the dock while the car to ship it in is still being switched in. Nothing can jam:
a load in a green box is waiting, not stuck.

THE TRUCK DOCK UNLOADS, AND BRINGS NOBODY

+1 inbound, no Laborer. It printed +1 outbound and +1 Laborer, which made it a
longer-host-list copy of Forklifts. Beside Packing Sheds it now does nothing at all,
and the hand tooltip says so before it is played.

Also in this release, from the days before: Mainline card tooltips computed from the
crossing rule; an Extra starts from the Division Point its number sends it to; a
modifier's suppressed grant comes back when a Whistle Post is upgraded; the Oil
Refinery and the Grocer's Warehouse ship as well as receive, per the card reference;
and the dormant defences name the attack they answer. `.claude/` is now gitignored —
it holds Claude Code's worktrees, i.e. a second checkout of this repository.

570 tests, typecheck clean. The three published replays were re-recorded twice —
legality changed, so bot play changed. Full detail in CHANGELOG.md.
2026-08-19 12:12:30 -04:00

12 KiB
Raw Blame History

Station Master — Home Deck

Rules implementation reference: v0.4.5
Scope: every card associated with the Home Office deck, including cards catalogued in the source but deliberately excluded from the dealt deck.

Dealt card catalogue

The live Home Office deck contains 213 cards in every currently supported mode. The rules for its setup, drawing, discarding, reshuffling, and hand limit are in the rules book, section 4.2.

Active category Cards
Track 96
Office upgrades 14
Freight facilities 27
Facility modifiers 23
Train cards 22
Enhancements 18
Mainline modifiers 7
Maneuvers 6
Total dealt 213

The catalogue also contains 12 space-use cards and 10 action cards. All 22 are excluded from every v0.4.5 dealt deck because their opponent-directed play rules are not implemented. They are listed at the end of this document for completeness.

Track cards — 96

Track cards are ordinary Home Office cards, not a separate personal supply. A placed card must connect to existing rail. The Running Track is the horizontal row from Limit to Limit; cards there must carry an east–west through route. Placing track on a Limit extends the Running Track and moves that Limit outward.

Card Copies Implemented placement facts
Straight track 32 East–west Operational Rail.
Curved track, right 16 A 45° curve; can rotate 180°, but cannot flip. Right-hand geometry is fixed to the ne_sw diagonal.
Curved track, left 16 A 45° curve; can rotate 180°, but cannot flip. Left-hand geometry is fixed to the nw_se diagonal.
Turnout, right 16 East–west through route plus one 45° branch. It may be passed through but is not Operational Rail, so a train cannot end a Move on it.
Turnout, left 16 Same operational rules; opposite fixed diagonal.
Sharp curved track, right 0 Catalogued but not dealt.
Sharp curved track, left 0 Catalogued but not dealt.

A turnout may upgrade an existing straight, or a curve whose arc is exactly the turnout’s diverging arc. An upgrade is forbidden if the existing card holds standing cars or an enhancement. All other occupied squares are unavailable.

Offices — 14

Every player begins at a Whistle Post, which is not drawn from the deck. Office cards are upgrades and must be played in sequence; they upgrade the existing Office rather than replacing its card or attached track.

Card Copies A/D tracks Porters Passenger outbound/inbound slots Other effect
Depot 8 2 1 1 / 1 Becomes a Control Point and Passenger Facility.
Station 4 3 2 2 / 2 Upgrade Depot only; Control Point and Passenger Facility.
Terminal 2 4 3 3 / 3 Upgrade Station only; Control Point and Passenger Facility.

The Whistle Post has one A/D track, no porters, and no passenger slots. An Office upgrade preserves modifiers already applied to it.

Freight facilities — 27

An industry may be placed only on a connected straight stub off the Running Track. Each facility begins with one Laborer and a three-box MEN | AT | WORK freight pipeline. Its industry track has capacity equal to its base outbound plus inbound capacity, with a minimum of one car.

No Office Area may contain a duplicate industry, or both ends of a listed lockout pair.

Card Copies Cars handled Flow Base boxes Lockout in same Office Area
Freight House 6 Boxcar Outbound and inbound 1 out / 1 in Freight House; Grocer’s Warehouse
Mine Tipple 6 Hopper Outbound 1 out / 0 in Power Plant
Refinery 3 Tank car Outbound 1 out / 0 in Power Plant
Power Plant 6 Hopper or tank car Inbound 0 out / 1 in Mine Tipple; Refinery
Packing Sheds 3 Reefer Outbound 1 out / 0 in Grocer’s Warehouse
Grocer’s Warehouse 3 Boxcar or reefer Inbound 0 out / 1 in Packing Sheds; Freight House

Facility modifiers — 23

A modifier occupies an empty square adjacent to an eligible facility. It is unique by modifier type within an Office Area. The implementation attaches it permanently to the first eligible adjacent facility found; it does not implement a per-Stage choice when one modifier touches more than one possible facility.

+ out adds green outbound capacity only where the host can load; + in adds red inbound capacity only where the host can unload. A capacity increase at a freight facility also lengthens its industry track by the usable number of added slots. Worker increases always apply.

Modifier Copies Eligible host Actual grant
Waiting Area 3 Any Office +1 outbound passenger slot; +1 Porter
Restaurant 2 Any Office +1 outbound passenger slot; +1 Porter
Hotel 1 Any Office +1 outbound passenger slot; +1 Porter
Truck Dock 2 Freight House, Packing Sheds, Grocer’s Warehouse +1 inbound slot; no Laborer
Railroad Express Agency 1 Freight House +1 outbound slot; +1 Laborer
Forklifts 2 Freight House, Packing Sheds +1 outbound slot; +1 Laborer
Prep Plant 1 Mine Tipple +1 outbound slot; +1 Laborer
Coal Piles 1 Mine Tipple +1 outbound slot; +1 Laborer
Conveyor Belts 1 Mine Tipple +1 outbound slot; +1 Laborer
Pipelines 1 Refinery +1 outbound slot; +1 Laborer
Oil Depot 1 Refinery +1 outbound slot; +1 Laborer
Viscosity Breakers 1 Refinery +1 outbound slot; +1 Laborer
Transmission Lines 1 Power Plant +1 Laborer
Rotary Dumps 1 Power Plant +1 Laborer
Steam Turbines 1 Power Plant +1 Laborer
Ice House 2 Packing Sheds or Grocer’s Warehouse +1 outbound slot; +1 Laborer
Local Small Groceries 1 Grocer’s Warehouse +1 Laborer

A bonus beside a facility that cannot use its direction is not usable and does not create a slot or lengthen the track — an outbound bonus beside an inbound-only facility, or the Truck Dock's inbound bonus beside the outbound-only Packing Sheds, which leaves that card with no effect at all. Likewise, passenger modifiers beside a Whistle Post add Porters but do not create an outbound slot until the Office becomes a Passenger Facility.

Train cards — 22

Playing a timetabled train card rolls the seeded D12 and places its number in the first open timetable slot at or after the result, wrapping around the 12-slot chart. It then runs at that Stage every Day. An Extra is queued and made up when a Crew Tray becomes available; v0.4.5 automatically launches Extras eastbound from the Western Division Point.

The listed consist is a maximum, not a minimum: a train may depart with fewer cars, but must not exceed the listed categories, put a car behind a caboose, or leave with the engine buried among cars. A Crew Tray holds no more than four rolling-stock cars.

Train Speed Direction Listed maximum consist Implemented special rule
1/2 Crack Limited Fast 1 west / 2 east 3 coaches No switching; passenger work only at Terminals; expedited.
3/4 Express Fast 3 west / 4 east 2 freight May exchange at most one freight car at each grid location during its switching turn; expedited.
5/6 The Sparrow Fast 5 west / 6 east 2 coaches No switching; expedited.
7/8 Local Slow 7 west / 8 east 1 freight, 1 coach Its coach may not be set out during switching.
9/10 Heavy Freight Slow 9 west / 10 east 3 freight, 1 caboose —
11/12 Drag Freight Slow 11 west / 12 east 2 freight, 1 caboose —
X13 Appleseed Extra Slow Player choice printed; v0.4.5 launches east 3 empty freight, 1 caboose May drop cars but cannot pick up. The engine enforces no pickup, but does not enforce the printed empties-only consist restriction at make-up.
X14 Fruit Growers Express Fast Player choice printed; v0.4.5 launches east 2 reefers, 1 caboose Expedited. The code enforces reefers-only; the printed extra loaded-reefer pickup is not a separate rule.
X15 Yard Xfer Slow Player choice printed; v0.4.5 launches east 2 freight, 1 caboose —
X16 Light Engine Move Fast Player choice printed; v0.4.5 launches east No cars No switching.
X17 Campaign Train Fast Player choice printed; v0.4.5 launches east 1 coach No switching. First Office arrival lays over for speeches; later arrivals are expedited.
X18 Circus Train Slow Player choice printed; v0.4.5 launches east 2 freight, 1 coach, 1 caboose No switching. The first Mainline Phase in which it remains stopped awards its current Office’s player 1 Revenue.
X19 Military Train Slow Player choice printed; v0.4.5 launches east 1 freight, 2 coaches No switching; no passenger work; expedited.
X20 Director’s Private Car Slow Player choice printed; v0.4.5 launches east 2 freight, 1 coach No passenger work.
X21 Freight Extra Slow Player choice printed; v0.4.5 launches east 3 freight, 1 caboose —
X22 Pee-Dee Slow Player choice printed; v0.4.5 launches east 1 caboose May pick up empty cars only.

Enhancements — 18

Card Copies Placement v0.4.5 behavior
Interlocking 2 Bare Running Track straight When the Office is full, an inbound train is held at the Limits instead of colliding.
Facing Point Locks 2 Any card; requires an Interlocking somewhere in the district Blocks Derail. Derail is unavailable in v0.4.5, so this remains dormant.
Yard Office 1 Bare Secondary Track straight A coachless inbound train is diverted to this track instead of occupying an A/D track.
Small Yard 1 Bare Secondary Track straight A train may spend one switching Move here to reorder its entire consist and put the engine at the nose.
Water Column 2 Bare Running Track straight Removes a Watertower. Watertower cards are unavailable, so this remains dormant.
Overpass 1 Any card No implemented effect.
Telegraph 3 Bare Running Track straight Once per Day, the Superintendent may add 4 to an opposing train’s number when that makes a facing clearance safe.
Telephone 2 On a Telegraph Same dispatch mechanism, +8 once per Day.
Radio 2 On a Telephone Same dispatch mechanism, +12 once per Day.
ABS Signals 2 Any Mainline card Prevents rear-end collisions and holds a following train short.

An enhancement requiring a bare straight cannot share that straight with another such enhancement. Telephone and Radio are the explicit stackable chain.

Maneuvers — 6

Card Copies Behavior
Red Flags 5 May be played at any time on a train stopped on a Mainline card. An approaching following train is held instead of moving into it.
Flying Switch 1 During the owner’s switching option, spend one Move to roll a tail-end cut into a track-connected freight facility without moving the engine there.
Poling 0 Catalogued but not dealt; no rule is implemented.

Catalogued but not dealt — 22 opponent-directed cards

Space-use cards — 12

Bean House (1), Flop House (1), Watertower (1), Hobo Jungle (1), Section House (1), City Blocks (4), Engine Shops (1), Tenderloin District (1), and Engineer Cemetery (1) are excluded. Their source descriptions say they consume table space; Hobo Jungle additionally describes vandalism looting a passing boxcar. No placement or effect is available in v0.4.5.

Action cards — 10

Derail (2), Broken Coupler (1), Railroad Crossing (1), Per Diem Inventory (1), Demurrage Charge (1), Customer Complaints (1), Vandalism (1), Hotbox (1), and Outlawed (1) are excluded. Their printed target/effect text is catalogued in the code, but card.play rejects the categories as not implemented. Consequently, no card can currently be played on another player.

There are also two Facing Point Locks listed among Mainline modifiers. They are treated as the same grid enhancement as Facing Point Locks above, require an Interlocking, and are included in the active 213-card total.