---
title: The Transit Authority world
date: 2026-06-29
status: draft
tags: [world-design, transit-authority, reroute, forced-movement, deck-pressure, art-direction]
modules: [world-data, themes, game-view]
related: [.lore/reference/worlds/authoring/theme-authoring.md, .lore/reference/direction/visual-direction.md, src/game/assets/themes/README.md, src/game/assets/themes/transit-authority/CATACLYSM.md, .lore/work/specs/city-of-sleeping-giants.md]
req-prefix: TRANSIT
---

# The Transit Authority world

The Transit Authority is an inter-reality terminal: a glass-roofed station whose platforms connect old empires, drowned moons, clockwork heavens, and neighborhoods that never shared the same physics. Passengers arrive with luggage, visas, pets, and weather from other worlds, and the system routes all of it without complaint. The Walker gives the network the one destination it cannot route. The system responds the only way it trusts: it changes the route. Departure boards flip to SERVICE SUSPENDED and ENTITY DETECTED, doors refuse passengers mid-journey, and the terminal begins quarantining every realm from every other realm. The Door opens where every platform number has changed to point at the same route.

Threat verb: **reroute**. The world attacks through enforced destination changes. Its hazards reach into both decks to decide what comes next: they pin player cards to the top of the player deck as forced connections, top-deck world hazards as reassigned departures, force transfers (discard-then-draw), and return known problems to the top of the world deck. The player does not lose resources so much as lose control over *where the next card goes*. Survival means contesting the top of both decks: refusing an assigned route, clearing the forced connection before it boards, and proving you are not the entity the network is trying to contain.

This spec targets a complete first implementation using existing engine vocabulary. Per the 2026-06-29 design decision, it does **not** add a new core "route marker" primitive (see Open Questions for the deferred core version). The authored expression of **Reroute** is forced top-deck assignment across both decks, forced transfers, top-decked recurrence, partial-clear penalties, and reward cards that reclaim routing control or trade tempo for a known future reroute.

## Design decisions folded in (2026-06-29)

These resolve conflicts between the cataclysm note (`CATACLYSM.md`) and the shipped engine. They mirror the City of Sleeping Giants ratified decisions.

- **No `Reroute` keyword.** The engine keyword set is `Obstructed | Creature | Slow | Spore | Concealed` (`KeywordName` in `src/core/model/types.ts`). "Reroute" is an authorship identity expressed through effects and copy, not a keyword. REQ-TRANSIT-7/9 reflect this.
- **Current effect names only.** Top-decking a world card is `AddWorldCardToDeck { bTop: true }`; the note's `AddWorldCardToTop` is stale. Pinning a player card to the top of the player deck is `AddPlayerCardToTop` (real). REQ-TRANSIT-10.
- **`ReturnWorldCards` is not used.** It is inert on world auto-hooks (it reads a player selection the hooks never supply) and there is no world discard pile to pull from. Every "return a known problem / train arrives from the discard pile" beat is re-expressed as `AddWorldCardToDeck { bTop: true }` of the relevant hazard. REQ-TRANSIT-9.
- **No look/reorder effect exists.** The note's "Check the Board: look at or reorder the top cards" has no engine equivalent. It is re-expressed as `ExileTopWorldCards` — refusing the assigned route by removing the next departures before they arrive. REQ-TRANSIT-17.
- **Snatches use `ForceDestroy` + `Brace`.** "Ticket Invalidated" forces a loss the player can answer with bracing, so the `Temporary Credentials` reward's `Brace` is not inert. REQ-TRANSIT-22, REQ-TRANSIT-15.
- **Verb carve-out.** `reroute` must not collapse into `the-tidal-archive`'s `displace` (player-selected recall of real discarded card instances) or `city-of-sleeping-giants`'s `stir` (same-threat recurrence escalation). Transit owns *forced reassignment of the next card across both decks*. REQ-TRANSIT-7/20.
- **Art direction is now a shipping constraint, not polish.** The base Transit Authority images already exist and should not be regenerated by default mid-implementation, but they must be reviewed against the shared theme art direction (`src/game/assets/themes/README.md`) before the asset/presentation slice is accepted. If an existing base asset fails the art-direction contract, retouch/regenerate only that asset and keep the same asset key and binding path. The still-missing inset set must be authored with a Transit-specific `src/game/assets/themes/transit-authority/insets/README.md` before or alongside the image files.

## World Contract

<div id="REQ-TRANSIT-1"></div>

**REQ-TRANSIT-1:** The world id must be `transit-authority` everywhere: `cards.json`, `meta.ts`, `theme.ts`, `index.ts`, the registry entry, `VisualTheme.worldId`, asset keys, and asset binding imports. If it drifts, theme selection falls back to `STARTER` or `buildWorld` fails.

<div id="REQ-TRANSIT-2"></div>

**REQ-TRANSIT-2:** Theme assets must live under `src/game/assets/themes/transit-authority/`. The existing base assets are canonical inputs and must be wired first, not regenerated by default mid-implementation:

- `transit-authority-reality.webp`
- `intrusion-overlay.webp`
- `transit-authority-cardfront.webp`

Before the asset/presentation slice is accepted, each base asset must be reviewed against the shared theme art direction. If one fails the contract, replace or retouch that asset in place while preserving the existing key/binding name so already-landed wiring does not churn.

<div id="REQ-TRANSIT-3"></div>

**REQ-TRANSIT-3:** The implementation must add one inset asset per Transit Authority card under `src/game/assets/themes/transit-authority/insets/`, use a `transit-inset-*` key namespace, and register every referenced inset key in `src/game/worlds/assetBindings.ts` and `src/game/data/assetManifest.ts`. The same directory must include `src/game/assets/themes/transit-authority/insets/README.md` with the Transit inset art style, prompt template, filename/key list, finishing pass, and thumbnail validation notes.

<div id="REQ-TRANSIT-4"></div>

**REQ-TRANSIT-4:** The world must register through the existing `WorldDataBundle` and `worldDataRegistry` pattern (`src/data/worlds/registry.ts`). Do not add one-off theme selection, world-building, or manifest code when registry derivation can carry the world. The derived manifests (`worldManifest`, `themeManifest`, display/help/light manifests) must project from `worldDataRegistry`.

## Narrative And Identity

<div id="REQ-TRANSIT-5"></div>

**REQ-TRANSIT-5:** The three-beat fiction is: an ordinary impossible terminal that routes any contradiction as long as it has a platform, fare, and arrival time; the Walker arrives as a passenger category the system cannot process and triggers the Service Suspension; the Door opens where every platform number has changed to point at the same route.

<div id="REQ-TRANSIT-6"></div>

**REQ-TRANSIT-6:** The Walker, `Summon Door`, and `Door` remain shared starter templates. Transit Authority data must not redefine any of them; duplicate template ids throw.

<div id="REQ-TRANSIT-7"></div>

**REQ-TRANSIT-7:** The exclusive signature verb is `reroute`: the system decides what card comes next by forced top-deck assignment across both decks and by forced transfers, and the player wins by contesting that assignment. Transit reward cards may use draw, energy, progress, top-deck placement, bracing, and top-of-world-deck removal, but their identity must be reclaiming routing control or accepting a known reroute — never Light, Heat, freezing, Spore scaling, concealment, incubation, or Tidal's discard-recall family.

<div id="REQ-TRANSIT-8"></div>

**REQ-TRANSIT-8:** The catastrophe identity must appear in reroute hazards, reward tradeoffs, deck composition, display/help copy, visual theme, intrusion overlay, cardfront, and card insets. The world is not "trains attack"; it is "the most competent transit system in the multiverse discovers one traveler it cannot route and suspends service everywhere at once."

## Reroute Without New Core State

<div id="REQ-TRANSIT-9"></div>

**REQ-TRANSIT-9:** The first implementation must express Reroute using existing effects only: `AddWorldCardToDeck`, `AddThreatToWorldDeck`, `AddPlayerCardToTop`, `DiscardThenDraw`, `Draw`, `GainCard`, `GainEnergy`, `OfferBoon`, `DealProgress`, `ExileTopWorldCards`, `ForceDestroy`, `Brace`, `Damage`, `DestroySelf`, `Modal`, `Sequence`, and `None`. `ReturnWorldCards` is intentionally **not** used (it is inert on world auto-hooks and there is no world discard pile to pull from).

<div id="REQ-TRANSIT-10"></div>

**REQ-TRANSIT-10:** The authored JSON must use current effect names. Top-decking a world card is `AddWorldCardToDeck` with `bTop: true`; do not use the stale `AddWorldCardToTop` wording from the cataclysm note. Pinning a player card to the top of the player deck is `AddPlayerCardToTop`.

<div id="REQ-TRANSIT-11"></div>

**REQ-TRANSIT-11:** `Service Change` must be the repeatable low-tier reroute card. It represents the first board flicker and must be cheap, discardable, and safe enough to teach the reroute pattern before act-2 pressure. Initial shape: cost 1, no keywords, discardable, `onCleared: None`, `onDiscarded: None`, `onPartialClear: None`, `onEndOfTurn: Sequence` of `AddWorldCardToDeck { template: "Platform Reassignment", bTop: true }` and `DestroySelf`.

<div id="REQ-TRANSIT-12"></div>

**REQ-TRANSIT-12:** At least two hazards must use the self-transform pattern: an end-turn `Sequence` ending in `AddWorldCardToDeck { bTop: true }` (and/or `AddPlayerCardToTop`) and `DestroySelf`, optionally preceded by other steps (e.g. `DiscardThenDraw`). This is the shipped "the board reassigns the route" behavior: the current notice disappears and its reassigned consequence appears next.

<div id="REQ-TRANSIT-13"></div>

**REQ-TRANSIT-13:** `worldThreatTemplateByWorldId` (`src/core/effects/gainCard.ts`) must map `transit-authority` to `Entity Detected` so `AddThreatToWorldDeck` repeats the Transit Authority signature threat.

<div id="REQ-TRANSIT-14"></div>

**REQ-TRANSIT-14:** Future work may add a true core "route marker" — a card carrying a pending destination that moves on the next draw, discard, or world reveal. This implementation must still be considered complete without it if authored cards reliably create forced, contested top-of-deck reassignment across both decks.

## Reward Card Recipe

The following numbers are initial tuning. Costs, counts, and progress values may change during playtest as long as the roles remain intact. Reward cards must be distinct from every other world's rewards in both template id and mechanical identity (no two worlds grant the same reward card).

<div id="REQ-TRANSIT-15"></div>

**REQ-TRANSIT-15:** `Temporary Credentials` must be a player reward that grants passage on the system's schedule and braces against ticket invalidation. Initial effect: `Sequence` of `Draw player 1` and `Brace amount 1`, `energyCost 1`. Its role is tempo plus a snatch buffer for `Ticket Invalidated`.

<div id="REQ-TRANSIT-16"></div>

**REQ-TRANSIT-16:** `Express Transfer` must be a player reward that clears a hazard and skips the next assigned departure. Initial effect: `Sequence` of `DealProgress base 2 bonus Slow +2` and `ExileTopWorldCards amount 1`, `energyCost 1`. Its role is clear-plus-route-control: deal with the present hazard and prevent the reroute the system would enforce next.

<div id="REQ-TRANSIT-17"></div>

**REQ-TRANSIT-17:** `Check the Board` must be a player reward that reads and refuses the route. Because no look/reorder effect exists, it is expressed as `ExileTopWorldCards amount 2`, `energyCost 1`, `exhaust: true`. Its role is pure route control: remove the next two assigned departures before they arrive.

<div id="REQ-TRANSIT-18"></div>

**REQ-TRANSIT-18:** `Board Anyway` must be a player reward that takes a risky shortcut at a known future-delay cost. Initial effect: `Sequence` of `DealProgress base 3`, `GainEnergy 1`, and `AddWorldCardToDeck { template: "Platform Reassignment", bTop: true }`, `energyCost 0`, `exhaust: true`. Its role is to push onto the offered train for immediate clearing power while accepting a known next world card. It must **not** reuse `city-of-sleeping-giants`' `Follow The Vein` effect sequence (`Draw`+`GainEnergy`+`AddWorldCardToDeck`); the leading `DealProgress` is what makes Board Anyway distinct under REQ-TRANSIT-48.

<div id="REQ-TRANSIT-19"></div>

**REQ-TRANSIT-19:** `Right of Way` must be a player reward that lets the player set their own next card, proving they control the route. Initial effect: `Modal` with branches `AddPlayerCardToTop "Express Transfer"` and `AddPlayerCardToTop "Check the Board"`, `energyCost 1`, `exhaust: false`. This shares the `Modal`-of-two-`AddPlayerCardToTop` *pattern* with `city-of-sleeping-giants`' `Bone Pin` but is distinct under REQ-TRANSIT-48 by cost and exhaust (Right of Way is cost 1, non-exhaust; Bone Pin is cost 0, exhaust). If self-referential reward generation proves too repetitive in playtest, replace the branches with `Draw player 1` and `Brace amount 2`; the role remains controlled top-deck anchoring.

<div id="REQ-TRANSIT-20"></div>

**REQ-TRANSIT-20:** Transit reward cards must not claim another world's exclusive mechanics as their main identity. They must not use `GainLight`, `GainHeat`, `FreezeCards`, `ThawCards`, `DealProgressScaled`, `Concealed`, `Spore`, `ReturnPlayerDiscardToTop`, or `RecallPlayerDiscard`.

## World Card Recipe

<div id="REQ-TRANSIT-21"></div>

**REQ-TRANSIT-21:** `Platform Reassignment` must be an act-1 reroute hazard that teaches top-of-player-deck disruption. Initial shape: cost 2, `Obstructed`, discardable, `onCleared: GainCard "Check the Board"`, `onDiscarded: AddPlayerCardToTop "Panic"`, `onPartialClear: None`, `onEndOfTurn: AddPlayerCardToTop "Panic"`. It pins a forced connection (`Panic`) to the top of the player deck if ignored.

<div id="REQ-TRANSIT-22"></div>

**REQ-TRANSIT-22:** `Ticket Invalidated` must be an act-1/2 snatch hazard: invalid credentials force a loss the player can brace against. Initial shape: cost 3, `Slow`, discardable, `onCleared: GainCard "Temporary Credentials"`, `onDiscarded: ForceDestroy 1`, `onPartialClear: AddWorldCardToDeck { template: "Service Change", bTop: true }`, `onEndOfTurn: Sequence` of `ForceDestroy 1` and `AddWorldCardToDeck { template: "Service Change", bTop: true }`. Uses `ForceDestroy` (not `Damage`) so `Temporary Credentials`' `Brace` has a snatch to absorb.

<div id="REQ-TRANSIT-23"></div>

**REQ-TRANSIT-23:** `Train Arrives From Nowhere` must be an act-2 unscheduled-train hazard that forces transfers and escalates. Initial shape: cost 3, `Obstructed`, discardable, `onCleared: GainEnergy 1`, `onDiscarded: DiscardThenDraw player 1`, `onPartialClear: AddWorldCardToDeck { template: "Platform Reassignment", bTop: true }`, `onEndOfTurn: Sequence` of `DiscardThenDraw player 1`, `AddWorldCardToDeck { template: "All Departures Suspended", bTop: true }`, and `DestroySelf`.

<div id="REQ-TRANSIT-24"></div>

**REQ-TRANSIT-24:** `Do Not Board Unknown Trains` must be an act-2 stationwide `Slow` warning that punishes forced motion. Initial shape: cost 4, `Slow`, discardable, `onCleared: GainCard "Express Transfer"`, `onDiscarded: AddPlayerCardToTop "Panic"`, `onPartialClear: DiscardThenDraw player 1`, `onEndOfTurn: DiscardThenDraw player 1`. While present it treats the player's motion as attempted boarding.

<div id="REQ-TRANSIT-25"></div>

**REQ-TRANSIT-25:** `All Departures Suspended` must be an act-2/3 lockdown/recurrence hazard that is difficult to clear and reseeds route-control threats. Initial shape: cost 4, `Obstructed` and `Slow`, discardable, `onCleared: GainCard "Right of Way"`, `onDiscarded: AddWorldCardToDeck { template: "Train Arrives From Nowhere", bTop: true }`, `onPartialClear: AddWorldCardToDeck { template: "Platform Reassignment", bTop: true }`, `onEndOfTurn: Sequence` of `AddPlayerCardToTop "Panic"` and `AddWorldCardToDeck { template: "Platform Reassignment", bTop: true }`.

<div id="REQ-TRANSIT-26"></div>

**REQ-TRANSIT-26:** `Reissue Credentials` must be the tool-fetch hazard. Initial shape: cost 6, `Obstructed`, discardable, `onCleared: OfferBoon { setId: "pool-reissued-credentials", setName: "Reissued Credentials", offeredCount: 3, chooseCount: 1 }` over the five tools (`Temporary Credentials`, `Express Transfer`, `Check the Board`, `Board Anyway`, `Right of Way`), `onDiscarded: AddWorldCardToDeck { template: "Service Change", bTop: true }`, `onPartialClear: None`, `onEndOfTurn: AddWorldCardToDeck { template: "Platform Reassignment", bTop: true }`. The same five templates back the fixed `GainCard` grants on other hazards.

<div id="REQ-TRANSIT-27"></div>

**REQ-TRANSIT-27:** `Entity Detected` must be the act-3 signature threat: the network reroutes everything around the player and relives the same assignment at larger scale. Initial shape: cost 6, `Slow`, discardable only with a high penalty, `onCleared: None`, `onDiscarded: ForceDestroy 2`, `onPartialClear: AddThreatToWorldDeck`, `onEndOfTurn: Sequence` of `Damage 2`, `AddPlayerCardToTop "Panic"`, and `AddThreatToWorldDeck`. `onCleared: None` is intentional: clearing the signature threat is its own reward (relief from the `AddThreatToWorldDeck` recurrence), and granting a card on clear would over-reward Act 3. This is the template `worldThreatTemplateByWorldId` maps to (REQ-TRANSIT-13).

<div id="REQ-TRANSIT-28"></div>

**REQ-TRANSIT-28:** Every Transit Authority world card must define `onDiscarded`, `onCleared`, `onPartialClear`, and `onEndOfTurn`. Use `{ "kind": "None" }` for unused hooks.

<div id="REQ-TRANSIT-29"></div>

**REQ-TRANSIT-29:** At least one early hazard must have no discard penalty, and at least one mid-game hazard must make clearing versus discarding a meaningful choice. The player must not be soft-locked by repeated top-deck reassignment before `Reissue Credentials` can grant the reward kit.

## Deck Composition

<div id="REQ-TRANSIT-30"></div>

**REQ-TRANSIT-30:** The deck must have exactly three acts expressing the cataclysm escalation. Act 1 (Minor Delays) teaches reassignment and small returns; Act 2 (Network Quarantine) introduces forced transfers, recurring routes, and lockdown; Act 3 (All Lines Terminate Here) peaks chained reroute pressure and converges on the Walker.

<div id="REQ-TRANSIT-31"></div>

**REQ-TRANSIT-31:** Initial act composition should be:

| Act | Cards |
| --- | --- |
| Act 1 - Minor Delays | `Service Change` x3, `Platform Reassignment` x3, `Ticket Invalidated` x1, `Reissue Credentials` x3 |
| Act 2 - Network Quarantine | `Ticket Invalidated` x2, `Train Arrives From Nowhere` x3, `Do Not Board Unknown Trains` x2, `All Departures Suspended` x1, `Reissue Credentials` x2 |
| Act 3 - All Lines Terminate Here | `All Departures Suspended` x2, `Train Arrives From Nowhere` x2, `Do Not Board Unknown Trains` x1, `Entity Detected` x3, `The Walker` x1 |

Counts are tuning values; act roles and the fixed Walker closer are not.

<div id="REQ-TRANSIT-32"></div>

**REQ-TRANSIT-32:** Act 3 must always end with exactly one `{ "templateId": "The Walker", "count": 1 }`. `The Walker` discarded adds `Door`; `Door` cleared yields `SurviveWorld`.

<div id="REQ-TRANSIT-33"></div>

**REQ-TRANSIT-33:** The deck must introduce `Reissue Credentials` early enough that the player can learn route-control and override tools before Act 2 forced transfers and lockdown become dense. If playtest shows the reward kit appears too late, increase Act 1 `Reissue Credentials` count before weakening the signature threat.

## Visual Theme

<div id="REQ-TRANSIT-34"></div>

**REQ-TRANSIT-34:** The visual keynote is sodium-amber station light invaded by quarantine crimson and violet warning bands. Suggested values: `intrusionHue #e23a5e` (quarantine crimson), door glow tint `0xe23a5e`, amber-gold progress/board accents, crimson danger accents, cool steel-blue return/retreat accents, and a violet quarantine-band secondary. The world must read distinctly from `city-of-sleeping-giants` (violet-cyan) at a glance. The look must follow the shared theme art direction: gritty ink-and-wash concept art on warm weathered paper, dense scratch linework, restrained paint, imperfect black borders, tactile grain, desaturated reality, and vivid color reserved for quarantine/reroute intrusion and the shared Door.

<div id="REQ-TRANSIT-35"></div>

**REQ-TRANSIT-35:** The reality backdrop (`transit-authority-reality.webp`) must remain the enormous inter-reality terminal: glass roof, iron arches, platform numbers, departure boards, mixed-era trains, portal tunnels, realm signage, ticketed crowds, luggage, and station staff maintaining routine order. It must be a 3:2 landscape reality layer that reads 95-98% normal: a functioning impossible station before the Service Suspension, not the quarantine already in progress. Keep strong station perspective and large readable architectural/train forms, leave the center usable under cards/HUD, favor environmental storytelling over character drama, and include no Walker, Door, logos, readable text, captions, watermarks, decorative UI, or full suspension effects.

<div id="REQ-TRANSIT-36"></div>

**REQ-TRANSIT-36:** The intrusion overlay (`intrusion-overlay.webp`) must show the Service Suspension around the perimeter while preserving central play readability: departure boards and platform signs flipped toward SERVICE SUSPENDED / ENTITY DETECTED / DO NOT BOARD (fragmented into warning shapes, not clean UI), red-and-violet quarantine bands across glass roof and arches, mismatched trains halted nose-to-nose, quarantine gates and stamped notices growing from side tracks, route maps and rails bent into repeated Walker-footprint geometry, and passengers trapped mid-transfer behind glass and barriers. It must ship as a true-alpha overlay, not a replacement backdrop: roughly 40-55% of the canvas remains fully transparent, strongest forms enter from platform edges/roof/side tracks, transition pixels are soft, and the overlay is reviewed composited over the Transit reality layer at half and full opacity. Do not include the Walker or Door in the overlay.

<div id="REQ-TRANSIT-37"></div>

**REQ-TRANSIT-37:** The cardfront (`transit-authority-cardfront.webp`) must read as a transit artifact: ticket/departure-board layout, platform numbers, route lines, schedule grids, and quarantine-stamp accents. It must follow the shared cardfront contract: runtime ratio `150x196` (production may be `459x600`), roughly 60-70% low-detail near-black field for runtime title/rules, one strong Transit motif around the perimeter/lower third, quiet top-center title zone and corners, rounded transparent outer corners with opaque interior, and no baked-in words, numbers, labels, logos, or UI symbols. Runtime text must remain readable at card scale.

<div id="REQ-TRANSIT-38"></div>

**REQ-TRANSIT-38:** Card insets must make Reroute legible and follow `.lore/reference/worlds/authoring/theme-authoring.md` W2a-W2d. Author them as square `600x600` thumbnail-first event illustrations with one large foreground subject, a bold silhouette readable at `100x100`, a simplified darker terminal background, and only one or two environmental cues. Hazard insets should show flipping boards, reassigned platforms, invalidated tickets, unscheduled trains, DO NOT BOARD warnings, suspended departures, and the ENTITY DETECTED quarantine. Reward insets should show valid credentials, express transfers, board-reading, deliberate boarding, and right-of-way override. The palette should stay sodium-amber/iron/cream with quarantine crimson and violet warning bands as the reroute accent; avoid clean readable UI text, logo-like signage, busy crowd detail, generic train crashes, monster trains, gore, or tiny schedule clutter competing with the subject.

## Display And Help

<div id="REQ-TRANSIT-39"></div>

**REQ-TRANSIT-39:** `meta.ts` display copy must describe the place-vs-disaster contrast: a flawless inter-reality terminal that routes any contradiction becomes dangerous when the Walker arrives as a passenger it cannot route and the system suspends service everywhere to contain him.

<div id="REQ-TRANSIT-40"></div>

**REQ-TRANSIT-40:** Help text must fit the existing world help budget and cover: hazards reassign the next card by pinning forced connections to the top of your deck and top-decking world hazards, some hazards force transfers (discard then draw), some rewards refuse the assigned route or reclaim control of your next card, `Board Anyway` gives tempo at the cost of a known future reroute, and the signature threat repeatedly reroutes the network until cleared or escaped.

## Documentation

<div id="REQ-TRANSIT-41"></div>

**REQ-TRANSIT-41:** `.lore/reference/worlds/authoring/theme-authoring.md` must be updated when this world is implemented: add Transit Authority to the signature verb table and document that `transit-authority` owns Reroute as forced reassignment of the next card across both decks (forced top-deck connections, forced transfers, top-decked recurrence), distinct from Tidal's `displace` recall and Giants' `stir` recurrence.

<div id="REQ-TRANSIT-42"></div>

**REQ-TRANSIT-42:** Any implementation plan derived from this spec must split the work into at least three reviewable slices: (1) world data and registration including the `worldThreatTemplateByWorldId` mapping, (2) assets, presentation, and help wiring, and (3) tests and validation. No core-engine slice is required unless a future route-marker (REQ-TRANSIT-14) is adopted.

## Tests And Validation

<div id="REQ-TRANSIT-43"></div>

**REQ-TRANSIT-43:** World data tests must verify no duplicate template ids, all Transit Authority world cards define all four required hooks, all keywords are valid (`Obstructed`/`Slow` only), Act 3 ends with `The Walker`, the Transit bundle is in `worldDataRegistry`, and `buildWorld("transit-authority")` succeeds.

<div id="REQ-TRANSIT-44"></div>

**REQ-TRANSIT-44:** Effect/data tests must cover the shipped Reroute patterns: `Service Change` top-decks `Platform Reassignment` then self-destructs; `Platform Reassignment` pins `Panic` to the top of the player deck at end of turn and grants `Check the Board` on clear; `Ticket Invalidated` `onEndOfTurn` queues `ForceDestroy` (not HP `Damage`) with a `Temporary Credentials` `Brace` charge absorbing the snatch end-to-end; `Train Arrives From Nowhere` forces `DiscardThenDraw` and top-decks `All Departures Suspended`; `Reissue Credentials` `onCleared` creates a boon offer from `pool-reissued-credentials` (not a multi-card grant), its `onDiscarded` top-decks `Service Change`, and its `onEndOfTurn` (the hazard persisting unaddressed in hand) top-decks `Platform Reassignment`; and `Entity Detected` uses `AddThreatToWorldDeck` through the Transit threat mapping.

<div id="REQ-TRANSIT-45"></div>

**REQ-TRANSIT-45:** Asset validation must verify every `transit-inset-*` key plus `transit-authority-cardfront`, `transit-authority-reality`/`-bg`, and `transit-authority`/`-overlay` base keys have matching manifest bindings and load without falling back to starter art. Asset keys follow the project's `<worldId>-bg` / `<worldId>-overlay` / `<worldId>-cardfront` convention regardless of underlying file name, so the canonical files map: `transit-authority-reality.webp` → key `transit-authority-bg`, `intrusion-overlay.webp` → key `transit-authority-overlay`, `transit-authority-cardfront.webp` → key `transit-authority-cardfront`. Confirm the exact key suffix convention against an existing wired world (e.g. `city-of-sleeping-giants`) before binding. It must also verify that `src/game/assets/themes/transit-authority/insets/README.md` exists and that the inset set has been reviewed as a `100x100` contact sheet against REQ-TRANSIT-38.

<div id="REQ-TRANSIT-46"></div>

**REQ-TRANSIT-46:** Presentation tests or a smoke run must verify `selectTheme("transit-authority")` returns the Transit palette, backdrop, intrusion overlay, and cardfront, that the existing base art passes the art-direction review or has been retouched in place, and that a representative Transit world card renders with its inset. The visual smoke must check the reality layer stays readable under cards/HUD, the overlay preserves the central play area and true transparency, the cardfront keeps runtime text legible, and inset thumbnails still read at `100x100`.

<div id="REQ-TRANSIT-47"></div>

**REQ-TRANSIT-47:** A seeded gameplay test must demonstrate the three-act identity: Act 1 produces at least one `AddPlayerCardToTop` (forced-connection) event and the player reaches Act 2 with at least half of starting HP ("manageable reassignments"), Act 2 hazards force transfers (`DiscardThenDraw`) and top-deck related routes, and Act 3 can chain `Entity Detected` (repeated `AddThreatToWorldDeck`) until the player clears it, exiles the assigned routes, or reaches the Door.

<div id="REQ-TRANSIT-48"></div>

**REQ-TRANSIT-48:** Reward-card distinctness must be verified: no Transit reward shares a template id or mechanical identity with another world's reward, and no Transit reward uses any effect listed in REQ-TRANSIT-20. For this requirement, two rewards share **mechanical identity** when they have the same ordered sequence of effect kinds with the same numeric parameters and the same `energyCost`/`exhaust`; differing template arguments alone do **not** establish distinctness. Under this definition, `Board Anyway` (leading `DealProgress`) is distinct from `Follow The Vein`, and `Right of Way` (cost 1, non-exhaust) is distinct from `Bone Pin` (cost 0, exhaust).

## AI Validation

An AI implementing this spec should verify completion by running or observing:

1. `bun run test` passes (always `bun run test`, never `bun test`).
2. A targeted world-data test confirms `buildWorld("transit-authority")`, registry inclusion, unique template ids, all four hooks per world card, valid keywords, and the Walker closer.
3. A targeted effect test confirms the `Service Change`, `Platform Reassignment`, `Ticket Invalidated` (ForceDestroy + Brace), `Train Arrives From Nowhere`, `Reissue Credentials` (OfferBoon), and `Entity Detected` (`AddThreatToWorldDeck` mapping) behaviors.
4. Asset validation confirms all `transit-inset-*` keys and the base Transit image keys are registered and preloadable without starter fallback, and that `src/game/assets/themes/transit-authority/insets/README.md` documents the Transit inset art style.
5. A presentation smoke test confirms the Transit visual theme, backdrop, overlay, cardfront, and at least one themed inset render instead of falling back to starter assets; the overlay composites with true transparency and representative insets remain readable at `100x100`.
6. `bun run lint && bun run typecheck && bun run build` succeed before the world is PR-ready.

## Open Questions

1. **Route-marker core slice (deferred).** The cataclysm note's "full version" assigns a card a future destination that resolves on the next train/draw/discard/reveal. This spec defers it (REQ-TRANSIT-14) per the 2026-06-29 decision to ship on existing vocabulary. Revisit only if playtest shows forced top-deck assignment does not read as distinct from Giants' recurrence.
2. **`Right of Way` self-reference.** REQ-TRANSIT-19 generates Transit rewards onto the player deck top. If this feels repetitive in playtest, fall back to the `Draw` / `Brace` branches already specified.
3. **World-select capacity.** If the world-select layout cannot cleanly show another world, Transit may ship data-ready but hidden from normal selection (as allowed for Giants), provided `buildWorld` and `selectTheme` still work in tests.
