Files
station-master/docs/rules.md
T
Jesse.MarkowitzandClaude Opus 5 3befc420da v0.8.2 — every district opens on a Depot, and the docs are pages now
A second-digit bump for a playtest read back against the save file. Nine questions
were asked of one three-Day game; three were bugs, three were the rules working
and undocumented, three were decisions. Every save on the test server was replayed
against this build BEFORE release, which is how the cost of each rule was known
before it was chosen rather than discovered after.

EVERY DISTRICT OPENS ON A DEPOT. A Whistle Post has one A/D track and is not a
Passenger Facility, so the opening of every game was spent unable to work a
passenger and one arrival away from a collision. Two A/D tracks and passengers
from Stage 1 now; "Players start with Whistle Posts, not Depots" is the harder
game, set when the game is created. The deck follows the choice — starting on
Depots the four Depot upgrade cards are left out, because an upgrade must be to
the next tier and a Depot card at a table of Depots is a dead draw. How much
easier it is showed up as a test failure rather than an argument: the cue-coverage
pool needed widening from 24 seeded games to 60 before it held one collision.

NO SAVE WAS STRANDED BY IT, which took care. This is the one house rule that
changes how a game is DEALT rather than how it plays, so replaying a save under
the wrong opening is a different railroad from intent one — silently, with no
error. `withSavedOpening` fills it on the replay paths ONLY. Putting it in the
resolver instead made a fresh Cutthroat game deal Whistle Posts and read as
Custom, which is how the distinction was found.

THREE BUGS, ALL REPORTED FROM ONE GAME AND ALL CONFIRMED ON ITS SAVE.

An Office held TWO TRAINS ON ONE A/D TRACK. The capacity test passed with nothing
standing, the train the Interlocking had been holding at the Limits was moved into
the free slot, and the arriving train was pushed in after it without anyone asking
again whether there was room — so the collision §8.3 calls for never happened. The
held train keeps priority; the newcomer now takes the consequence it would have
met had the held train arrived first.

THE HISTORY FROZE, permanently, and the log cap was not really the cause. Each
seat's "what have I sent you" bookmark was an INDEX into an array the game trims,
so once a seat's bookmark reached the limit the slice returned nothing for the
rest of the game — at a different moment per seat, because each holds its own.
That game's log ended at exactly the cap. Lines carry a sequence number now, which
survives trimming; proven by pushing twice the cap through a simulated seat.

§8.1 ASKED THE WRONG QUESTION TWICE. "Trains may pass" returned `clear` before the
Subdivision was looked at, so a train entering a Double Track was released however
busy the rest of it was — that, not anything about Control Points, is what let
Train 8 out with no ruling. And a train standing at an Office was invisible to the
scan, so one about to re-enter the very Subdivision being entered counted for
nothing. Capacity is the test, not presence: a Depot with a track free is not in
the way; a Whistle Post with its one track taken is.

THINGS THAT HAPPENED SILENTLY NOW SAY SO — a train held against a facing one, a
train released from the Limits (a side effect of somebody else's arrival, so it
simply appeared at the Office), and the train an Interlocking is holding, whose
explanatory tooltip has existed since #99 with NO renderer ever reading the flag.

WHERE A MOVE IS REFUSED, AND WHY. `exploreMoves` decides where the rails go and the
pick-up restrictions are enforced afterwards in `check`, so a square the rails
reached and the card forbade was reachable, un-offered, and absent from the block
list with nothing said. Those squares are blocked with the rule that blocks them
now, and the reasons are got by ASKING `check` rather than re-deriving: a second
implementation of the rules is exactly the failure the block list exists to avoid.
A train may also always recover its own caboose — X13 prints "may drop but not
pick up anything", and a train needs its caboose to be made up, so one that parted
with it could never legally leave again.

RULES DECIDED IN SEPTEMBER AND APPLIED HERE. A Modifier must sit square against its
host, no diagonals. A passenger Modifier may not be played at a Whistle Post. Both
were built, measured, held back for a fortnight so a playtest could finish, and
applied now. A Second Section costs its card: `SECOND_SECTION` was declared in
content.ts and never dealt, so the action was free and the bot ordered 26
accidental ones in a measured round. The card is dealt and spent — gating on a card
the deck never holds would have deleted the mechanic rather than fixed it.

THE DOCUMENTATION IS A SET OF PAGES, not five text files served as text/plain — a
card reference is mostly tables, and as plain text a table is rows of pipes.
Markdown is still the one copy; the build renders it, and publishes the .md beside
each page. No Markdown library: this project has no runtime dependencies and one
would be a poor first. The pages add what Markdown cannot carry without drifting —
a nav across the set, a contents list built from the headings actually rendered,
an anchor on every heading, a 70-character measure, and tables that are tables.
They print as ink on paper.

The references caught up with the rules, checked rather than assumed: two
statements had gone from stale to misleading (the Quickstart told a new player to
"get a Depot down as soon as one appears"), and four rules nobody could look up
are written down — the Office tier table, §8.1 in practice, what the Circus Train
pays for, and that a Realignment can be a card with no legal target.

Adding one card to the deck reshuffles every seeded deal, which broke five
fixtures. Each was a seed meaning "a game like this" — TODO #84, exactly — so
seeds moved and pools widened rather than assertions weakening, and the clearance
fixture pins its terrain the way `enhancements.test.ts` already does. The three
published replays were re-recorded.

Closes TODO #40, #42a, #108, #109 and #110.

1046 fast tests and 35 sim tests pass.

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

32 KiB
Raw Blame History

Station Master — Rules

Version 0.8.2 · 2026-09-23

Authority: observed code paths and tests. Where a card face, a prototype document and executable behaviour differ, this document reports executable behaviour and marks unimplemented material. Per-card numbers are not repeated here — the Home deck and Mainline deck references carry tables generated from src/engine/content.ts and is the table of record.

New to the game? Start with the Quickstart.

1. Overview and background

Station Master is a railroad-operations game set in the timetable-and-train-order era. Each player operates an Office Area on a shared east–west Division. The local work is building rail, switching cars, moving passengers and freight through facilities, and keeping the Office clear. The shared work is dispatching scheduled trains across the Division. The player holding the Superintendent’s Fedora decides whether to clear a following train into an occupied Subdivision; an unsafe decision can cause a collision.

Revenue is the score. Passenger boarding and detraining, freight loading and unloading, completed runs, collisions, and victory conditions are all resolved by the rules configured when the game is dealt.

This book is divided as follows:

  1. overview and scope;
  2. definitions;
  3. creating, saving, replaying, and configuring games;
  4. the shared basic game mechanics;
  5. the implemented solitaire game;
  6. the implemented multiplayer/engine status; and
  7. FAQs and implementation limits.

The companion references are the Quickstart for a new player, Mainline deck, Home deck, components, and the generated per-card table Home deck and Mainline deck.

2. Definitions

Term Meaning
A/D track An Office arrival/departure capacity. A Whistle Post has 1; Depot, Station, and Terminal have 2, 3, and 4.
Card location A square in an Office Area grid. A train may end a switching Move only on Operational Rail.
Classification Yard The holding yard for used rolling stock. It refills the Division Yard only when that yard is completely empty.
Control Point A Depot, Station, or Terminal. It breaks the shared Mainline into Subdivisions. A Whistle Post is not one.
Crew Tray An engine plus up to four coupled rolling-stock cars. The engine itself does not count as a car.
Department pile One of three shared face-up card stacks. Draw and discard affect only the top card.
Division Point The western or eastern end of the shared Division, where trains enter and leave it.
Division Yard The active source of rolling stock.
Expedited train A train with the expedite rule. It performs Load/Unload at an Office after arriving, then attempts to depart at the end of that same Stage.
Facility A Passenger Facility at an upgraded Office or a Freight Facility at an industry.
Freight Agent The Local Operations option that stocks one outbound box, clears one inbound box, unjams one load, or ends without acting.
Limits The two signs defining an Office Area’s Running Track. They move outward when that track is extended.
Local Operations The first player-driven phase of a Stage. A player chooses one: switch, draw, or Freight Agent.
Mainline The shared cards between Offices and Division Points.
MEN | AT | WORK A three-box freight pipeline. Any load on it locks its industry track.
Operational Rail A card on which a train may finish a Move. Turnouts are pass-through only; a locked industry is not usable at all.
Running Track The east–west track between an Office Area’s Limits, including its Office.
Secondary Track All local rail inside the Limits that is not Running Track.
Stage One of twelve turns in a Day. Its phases are Local Operations, New Train, Mainline, Load/Unload and Shift Change. On screen the last two are labelled "Cargo" and "Supervisor Shift" — same phases, the names the interface uses.
Subdivision Mainline between Division Points or Control Points. Clearance checks look through the whole next Subdivision.
Superintendent The player with the Fedora. The role decides same-direction clearances and rotates every three Stages.
Timetabled train A numbered train card scheduled to one of the 12 Stage slots, then due at that slot each Day. Odd numbers go west; even numbers go east.

3. Create, save, replay, and game configuration

3.1 Starting a new game in the shipped client

The front page has three doors: Play multiplayer, Play solitaire, and Browse replays.

Solitaire runs entirely in your own browser and needs nothing from the server. Select New game, then choose:

  1. a numeric seed, or leave it blank for a fresh browser-generated seed;
  2. a starting hand;
  3. passenger, freight, and train-transit Revenue rates;
  4. the number of Days, and the optional rules.

Multiplayer goes to the lobby — see §3.5. It needs the server, because the game is authoritative there rather than in any one browser.

The browser writes those choices into the URL. A particular game is defined by the seed plus these house rules, not the seed alone.

The three starting-hand choices are:

Choice Setup result
Three random cards Default. Deal three cards from one shuffled deck.
Six random cards Deal six cards from one shuffled deck. The player begins over the normal hand limit and must play/discard down before ending the first Draw turn.
Three random track and three random non-track cards Shuffle track and non-track piles separately for the opening deal; then recombine and shuffle their remainders for all later draws.

The three Revenue values are independently rounded and clamped to 0–5:

  • passenger Revenue per coach, paid on boarding and again on detraining;
  • freight Revenue per load, paid on completion of an outbound load and again on completion of an inbound unload; and
  • train Revenue per transit, paid to every player when a train leaves the Division.

Defaults are 1 / 1 / 0. Zero turns that revenue source off; it does not prevent the underlying operation.

3.2 Deterministic setup and the seed

The engine uses one seeded random stream for shuffles, Mainline selection, opening D12 rolls, timetable rolls, and automatic Heavy Grade orientation. Given the same seed, configuration, player names/order, and accepted action history, it reconstructs the same state.

At setup it creates each Office Area as Limit — Whistle Post — Limit, makes the Division Yard, creates players + 3 Crew Trays, turns up three Department cards, and constructs the shared Division.

In a multi-player engine game, every player receives two seeded D12 rolls:

  • The division roll orders seats from low west to high east; equal results put the lower player index farther east.
  • The Superintendent roll gives the initial Fedora to the first player tied for highest.

The opening deal starts at the Superintendent’s seat and proceeds eastward — increasing seat index, which is how the Division map draws the table.

3.3 Saving, resuming, and replaying solitaire

The local save format is JSON containing the seed, the accepted intent history, and the house rules. It does not serialize mutable game state. Loading recreates the game from the seed and replays every action through the rules engine. If an old history reaches an action that is no longer legal, replay stops there instead of forcing an invalid state.

The browser also stores the current local game and resumes it automatically when the page opens without an explicit seed in the URL. A downloaded save is named station-master-seed<seed>-day<day>.json.

Undo is solitaire-only. It removes the final accepted intent and rebuilds the game from the earlier history. Random outcomes are not rerolled: replaying the same action consumes the same seeded result. Undo can therefore change the player’s decision after seeing an outcome, but cannot fish for a different timetable die roll.

3.4 Game modes and endings

Three modes: Solitaire, Competitive and Co-op. All three are playable.

Length is a free days count, not a preset — any number of Days may be set. The default is 5.

How a game ends and who wins:

  1. The timetable runs out at the end of the last Day. Then:
  2. The combined Revenue floor is checked first — 3 × players × days. Fall short and everybody loses, whatever anyone individually scored.
  3. Co-op wins as a table if the floor is met.
  4. Competitive is won by the highest individual Revenue once the floor is met.
  5. Collisions end it early. Breaching the per-Day or total collision limit ends play at once in a collective loss — the railroad has been declared unsafe.

Extended play (Gitea#11). Both days-based endings — running out of timetable, and closing short of the Revenue floor — offer another Day, because they are the same event seen twice: the last Day ended, and this is what the books say. A collision ending is not extendable, and neither is a collision breach during an extended Day. The official result is frozen when the timetable first ran out, so a railroad declared unsafe on Day 9 does not retract who won on Day 5.

Three optional rules, all implemented:

Rule Effect
Reduced Visibility Five switching Moves instead of six, in Stages 1, 2, 3, 11 and 12 — the night Stages.
Employee Rotation Every player moves one chair at the end of each Day. Revenue and the Fedora travel with the player; the Office Areas stay with the seats.
Emergency Toolbox Starts every player holding the Red Flags status, so the hand limit opens at four.

(There is no "Sister Trains" flag. It appeared in an earlier draft of this document and never in the configuration.)

3.5 Multiplayer setup

Multiplayer is delivered and is what this package is for. The flow:

  1. Create or join. The host creates a game and gets a game code; everyone else joins with that code. Seats fill as people arrive, and any seat left empty can be filled with a bot.
  2. Start. Once the host starts, that same page is where every player plays their turns and watches the table. There is nothing else to open.
  3. The server is authoritative. The game lives on the server, not in a browser: it survives a page reload, a browser restart and a service update, replaying its intent history to get back to where it was.
  4. Your seat is a token in YOUR browser, scoped to the origin you joined at. A reload finds it and puts you straight back. Clearing site data, a private window, or a different browser does not: the seat is still yours and still on the server, but that browser can no longer prove it is you. An administrator can mint a single-use recovery link (StartOS action Restore a Seat) that trades a code for the token and expires in 30 minutes.
  5. Watching the table. Other players' turns arrive as an ordered replay rather than as a board that has silently rearranged itself, with a [N behind] counter, Pause and Skip.

Solitaire needs none of this and runs with the page alone.

4. Basic game mechanics

4.1 The Stage sequence

Each of 12 Stages follows this sequence:

1. Local Operations — each player, starting with the Superintendent and proceeding eastward
2. New Train      — make up due timetabled trains, then queued second sections and Extras
3. Mainline       — automatic train movement in numeric order
4. Load/Unload    — each player, same order.        On screen: "Cargo"
5. Shift Change   — expedited departures, workers.  On screen: "Supervisor Shift"

"Proceeding left" is seat order, west to east, which is how the Division map draws it — the screen says "eastward" for that reason, because a table has no shared left.

At a Shift Change, Laborers and Porters reset. The Fedora moves after Stages 3, 6, 9, and 12. At Day end, dispatch-device use resets, collision count resets, the Day and Stage roll over, and victory is checked.

4.2 Local Operations: choose one option

On a player’s Local Operations turn, choose exactly one available option.

Switch. Select any Crew Tray currently in that player’s Office Area. It gets six Moves, or five under Reduced Visibility on the listed night Stages. A Move travels any connected distance in one direction and must end on Operational Rail. Reversing is a separate Move. A train may pass through a turnout but cannot stop on it. It may not share or pass through another train except through an Office with a free A/D track.

Standing cars couple automatically when the train reaches them; it may not pass them, and the resulting consist may not exceed four cars. Coupling forward places cars ahead of the engine; coupling while backing places them behind it. Setting out cars does not spend a Move, but the cut must come from an outer end of the consist and may not be left on the Office. A Small Yard re-orders a consist for one Move, and may also place cars ahead of the engine — which is how a cut is set up to be shoved into a facing industry. Each option on the menu shows the train it would build, laid out west to east as the board draws it, and says whether the result may leave the Office or would be held there. Flying Switch spends one Move to roll a tail cut into a connected Freight Facility.

Draw. Take one card from the face-down Home Office or the exposed top of one Department pile. During this option, play eligible cards and/or discard cards to Department piles, then finish at the hand limit. Track, facilities, offices, modifiers, enhancements, and train cards have the placement or scheduling rules in the deck references. Mainline modifiers are played from this option as well.

A Department that is emptied is refilled at once. §6.2: "If any of the Department decks is empty, draw a Home Office card and place it in the empty spot." So taking the last card off a pile does not leave a gap — a fresh card is turned face up from the Home Office deck to replace it, and there are always three Departments to draw from. The refill happens only when the draw actually empties the pile; a pile with cards buried under the one taken is not refilled, or the Departments would grow without limit and drain the deck into themselves.

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.

A car cleared from a red Inbound box comes back empty. Whatever was in it has arrived — the passengers are out of the station, or the load is in the industry — and the Revenue for it was paid on arrival, not on clearing. What returns to the Classification Yard is the car, in the common supply and carrying nothing.

Implementation note: 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.

4.3 Track, switching, and local safety

The Running Track cannot be broken by a curve or other card lacking its east–west through route. Local branches use turnouts and 45° curves. Cards that touch vertically connect only if their 45° legs share the correct diagonal; mere adjacency is not rail connection.

An industry’s track is locked while any load is on its MEN | AT | WORK pipeline. Trains cannot enter, cross, pick up from, or set cars out there. When it is unlocked, an industry track is ordinary Operating Rail and holds up to four cars, the same as any other non-turnout, non-Limits card: a crew may set out one, two, three or four cars there, whatever it is carrying. An industry’s green and red boxes are how much work it can hold, not how much rail it has, and a Modifier beside it adds a box without adding room for a car.

Train-card restrictions also apply while switching. No-switching trains cannot move, set out, or sort locally. Trains 3/4 share a one-freight-car budget for pickup or setout at each grid location. Trains 7/8 cannot set out their coach. X13 cannot pick up, and X22 may pick up empty cars only.

4.4 New Train phase

At the Stage shown on the timetable, the engine makes up the matching timetabled train if a Crew Tray is free. It starts at the Division Point appropriate to its direction. A train may receive matching loaded or empty cars from the Division Yard until its listed maximum consist is reached or no suitable car remains. It is permitted to leave under-strength.

A Second Section order on the due train creates another identical timetabled train behind it when a free tray is available. A played Extra is made up after timetabled trains and Second Sections when a tray is free, and the player who played the card chooses where it starts — either Division Point, the Interchange, or an Office, according to the extraStart house rule — and loads it as they choose rather than going round the table.

A timetabled train's consist is built by the table: starting with the Superintendent and working eastward, each player adds ONE car, going round again until the train is full or the Division Yard holds nothing it can take.

When the yard can supply nothing, the game says so. The round is skipped — there is no point asking for a car that cannot be given — and the train is reported as made up short, naming what its card wanted, how many such cars are waiting in the Classification Yard, and how far the Division Yard is from bare. See §4.6 for why that happens to coaches in particular.

4.5 Mainline movement and Office arrival

Mainline movement is automatic and processes lower train numbers first; a timetabled train outranks an Extra with the same number. A train at a Division Point, at an Office A/D track, or already crossing a Mainline card attempts its applicable movement.

Crossing time is the card's REGIONS, one per Stage — not its printed mph, which is scenery, and not the train's Fast/Slow rating, which only Hilly reads. See the Mainline deck reference for what moves a train's entry point. On a normal card, a train must check the entire next Subdivision before entering it:

  • an opposing train normally blocks entry;
  • a following same-direction train asks the Superintendent to allow or deny clearance;
  • Red Flags or ABS Signals hold the follower automatically; and
  • Double Track — the one card two trains may stand on — allows entry without that check. The Uncontrolled Siding is not a passing card: a train arriving to find it occupied takes the siding a region behind, which costs it the extra Stage instead of a collision.

An Office arrival normally takes a free A/D track. If the Office is full, the inbound train collides and the local Office player loses 5 Revenue; Interlocking instead holds it at the Limits. A coachless inbound train may divert to a Yard Office. Cars fouling the Running Track at the Office also cause a collision.

An expedited train remains available for this Stage’s Load/Unload work after arriving, then attempts to depart at Shift Change. A non-expedited arrival waits until a later Mainline phase. A train departing an Office must be correctly made up: engine at one end, caboose at the far end if present.

When a train leaves the far Division Point, its cars are returned to yards, its Crew Tray becomes free, and each player receives the configured train-transit Revenue (zero by default).

4.6 Passenger work

Passenger work occurs during Load/Unload, at a Depot, Station, or Terminal. Each Porter may take one action per Stage.

  • Board: replace an empty coach on an eligible train at the Office with a loaded coach from a green outbound box. The removed empty coach goes to the Classification Yard. Earn configured passenger Revenue.
  • Detrain: replace a loaded coach on an eligible train with an empty coach from the Division Yard, placing the loaded coach into an available red inbound box. Earn configured passenger Revenue.

Crack Limited trains permit passenger work at Terminals only. Military Train and Director's Private Car permit no passenger work. A Whistle Post has no Porters.

Coaches travel one way, and it is worth knowing before you plan around passengers. Boarding sends the emptied coach to the Classification Yard; detraining draws a fresh empty out of the Division Yard; and §2.2 returns the Classification Yard only when the Division Yard runs completely bare. Measured over one three-Day game: sixteen coaches in the Division Yard at setup, none from Day 2 Stage 8 onward, fifteen piled in Classification while the Division Yard held steady at 46–47 freight cars and stopped draining — so the refill never fired and no passenger could board or detrain anywhere for the rest of the game, while trains whose cards call for coaches were made up empty.

This is the rules working as printed: running out of cars is part of the game. The yard panel warns while the shortage lasts, and a train made up short reports what it wanted and why none is coming.

4.7 Freight work

Freight work also occurs during Load/Unload. Each Laborer can take one action per Stage. Every freight facility has MEN, AT, and WORK boxes.

For an outbound load, first use the Freight Agent to put a matching loaded car into the green box, with an unclaimed empty matching car spotted on the industry track. A Laborer starts the load on MEN, then advances it to AT, then WORK, then onto the empty car. Completing the last step changes that car to loaded, sends the replaced empty car to the Classification Yard, and earns configured freight Revenue.

For an inbound unload, a matching loaded car must be spotted at an inbound-capable industry and the Division Yard must contain a matching empty car. A Laborer replaces the spotted loaded car with that empty car and starts the load on WORK. Laborers move it backward through AT and MEN into a free red inbound box. That final placement earns configured freight Revenue. Clearing the red box later with the Freight Agent pays no additional Revenue.

5. Solitaire

Solitaire is one named player and one Office Area, running entirely in the browser with no server. It is not the only implemented game any more — see §6 — but it is the one that needs nothing but the page.

Solitaire-specific features are:

  • a local browser save, automatic resume, and JSON download/load;
  • unlimited step-by-step Undo back through accepted action history — multiplayer has none, because a shared game cannot be rewound under the other players; and
  • a seed/rules URL suitable for sharing or reproducing a game.

Automatic phases get a visible beat in solitaire too, so the board plays its own moves out rather than jumping.

The active deck removes all 22 opponent-directed cards. Therefore, the defensive cards whose only purpose is to answer them (Facing Point Locks and Water Column) can be placed but have no opportunity to fire; Overpass has no effect at all. The game still includes shared-rail mechanics such as Mainline clearance, but with one player no other player can occupy the Division.

To win the default one-player game, finish Day 5 having met the combined Revenue floor — 3 × players × days, which at one player over five Days is 15. Below it is a loss, and the game offers you another Day rather than simply ending. Train-transit Revenue defaults to zero, so the score has to come principally from passenger and freight work.

6. Multiplayer

6.1 What the engine supports

The rules engine supports multiple named players; the lobby, server and client around it are delivered too, so this section now describes a game people actually play. The engine has player, seat, score, Office Area, Division, phase-order, co-op and competitive-mode data for multiple named players. It deals each player a hand, creates one Office Area per seat, starts acting order at the Superintendent and proceeds eastward, and models the following multiplayer-specific outcomes:

  • the D12 seating and Superintendent rolls described in section 3;
  • individual Revenue in competitive play and shared total Revenue in co-op;
  • a collective loss on breaching the collision limits;
  • the combined Revenue floor, 3 × players × days; and
  • train-transit Revenue awarded to every player, if that revenue setting is nonzero.

The engine’s setup checks only that there is at least one player and that Solitaire has exactly one player. It does not enforce a maximum player count, although the test and design material exercise two through four players.

6.2 What IS delivered

Everything in §3.5: a lobby with game codes, seating, bots filling empty chairs, an authoritative server that survives restarts and updates by replaying its intent history, per-seat reconnection, an administrator's single-use seat-recovery link, and an ordered replay of other players' turns on each player's own screen.

The package also exposes administrative actions on StartOS — list games in progress, get the join secret, manage a game, restore a seat — documented in the wrapper repository rather than here.

6.3 What is NOT delivered

No card may be played at another player. The 12 space-use and 10 action cards are excluded from every dealt deck in every mode, and check rejects playing one. That includes Derail, Broken Coupler, Railroad Crossing, the score-penalty cards, Vandalism, Hotbox, Outlawed and all table-space cards. Facing Point Locks and Water Column exist only as dormant defences against effects nothing can currently cause, and Overpass has no effect at all.

No multiplayer Undo. A shared game cannot be rewound under the other players.

6.4 How multiplayer differs from solitaire

Players have separate districts, hands and scores, and share the Home Office deck, the Department piles, the yards, the timetable, the Mainline and every traffic consequence. One player acts at a time.

A seat is not a player, and the distinction is load-bearing. Offices belong to seats; Revenue, hands, the Fedora and identity belong to players. With Employee Rotation on, players move one chair at the end of each Day and take their Revenue and the Fedora with them, while the districts stay where they are.

So multiplayer changes shared traffic, scores, turn order and how the game is won or lost — not card attacks, which do not exist in any mode.

7. Frequently asked questions

Is the same seed always the same game?

Only with the same house rules, player configuration/order, and action history. The seed drives all engine randomness, but the starting hand and Revenue settings also change the game.

Why can’t I end my draw turn?

Your hand exceeds three cards, or four when the Red Flags hand-limit status is active. Play or discard down to the limit.

Why can’t my train move onto a turnout?

It may move through a turnout but cannot end a Move there because turnouts are not Operational Rail.

Why can’t a train enter my industry?

Its MEN | AT | WORK pipeline contains a load, which locks the track; the rail geometry does not connect; another train occupies it; mandatory coupling would exceed four cars; or four cars are already standing there, which is as many as any card holds.

Why won’t an industry accept a new outbound load?

The green box may be full, the Division Yard may lack a matching loaded car, or there is no unclaimed empty matching car already spotted on that industry’s track.

Why does an inbound freight unload require an empty car in the Division Yard?

The engine immediately replaces the spotted loaded car with a matching empty car. It will not create a new car from nothing.

Why did an arriving train collide instead of wait?

The Office had no free A/D track and no Interlocking. A full Office is an automatic local collision. An Interlocking holds the arrival at the Limits.

Why is a train held at an Office even though the Mainline is clear?

It may be on Secondary Track rather than the Office, or be badly made up: its engine is between cars or its caboose is not at the far end.

Why did an expedited train leave after passenger/freight work?

Expedite means it departs in the Stage it arrived, but the departure waits until Shift Change so the train is still present for that Stage's Load/Unload phase.

Can I choose the direction of an Extra or a Heavy Grade?

An Extra, yes — the player who played the card chooses where it starts and which way it runs, and loads it as they choose. A Heavy Grade, no: orientation is rolled from the seed. That is a decision rather than a gap — the card sits between two districts and belongs to neither, so handing the choice to one neighbour would advantage them permanently. See the Mainline deck reference.

Can I use an Interchange to reorder a train?

No. Its printed car-sorting is not implemented. What the Interchange offers is the one Mainline card with a yard, so an Extra may be made up and started there. Re-ordering a consist is done at a Small Yard in a district.

Can I play attack cards on another player?

No. All action and space-use cards are excluded from every dealt deck in every mode, and playing one is rejected.

Is multiplayer playable?

Yes. Lobby, game codes, seating, bots, an authoritative server that survives restarts, per-seat reconnection and a replayed view of everyone else's turns — see §3.5 and §6. The opponent-directed cards are unimplemented in every mode, so there are no card attacks.

Why did my passenger train arrive with no coaches?

Almost certainly the coach ratchet in §4.6: every coach has ended up in the Classification Yard, which comes back only when the Division Yard runs completely bare. The yard panel warns when this has happened, and a train made up short says so in the log.

Why is every option in the Small Yard marked "HELD at the Office"?

Because that train is already made up, so every re-order on offer would break it — most often by moving the caboose off the rear, which §8.2 will not let a train depart with. If the train is not currently fit to run, at least one option will be marked "MADE UP, ready to leave".

Will an old save still replay?

Not always. A save is a seed and the list of moves, replayed through the rules of whatever build opens it — so a change that makes a once-legal move illegal stops the replay at that move. The game names the move and leaves the file untouched; the build the game was played on will still finish it.

§8.1 in practice — what holds a train at the end of the line

A train is held, released or put to the Superintendent by what is in the Subdivision ahead of it: the run of Mainline cards between two Control Points. Every Office that is not a Control Point lies inside one, so a table of Whistle Posts is a single Subdivision from end to end.

  • A train coming towards it is an absolute bar. The train holds, and the history says which train is coming and that there is no Control Point between them to pass at.
  • A train going the same way is the Superintendent's ruling.
  • A card printing "trains may pass" excuses only what is standing on that card. It does not clear the rest of the Subdivision.
  • A train standing at an Office with no free A/D track occupies the Subdivision too: it is about to re-enter and there is nowhere for the two to pass. An Office with a track still free does not hold anyone up.

An Office never holds more trains than it has A/D tracks. A train the Interlocking is holding at the Limits takes the first track to free, ahead of anything arriving afterwards — and the train that arrives to find it taken is held at its own Limits, or collides if there is no Interlocking.