TradeDock & Shipyard¶
Status: 🚧 Partial — TradeDock model and 12-slip shipyard pipeline partially wired; premium hub services and full construction UX still incomplete. (re-verified 2026-08-21 vs Sectorwars2102 HEAD
46bce720.)
🚧 Partial. TradeDocks are rare premium hubs that combine an upgraded trading floor with a 12-slip player shipyard. The slip-rental construction pipeline, the premium trading floor, construction-event RNG, the player SpaceDock construction/shipyard venues, and gameserver admin construction GETs (admin_construction.py) are shipped (see Status summary; GS half tip-landed via PR #598 MERGED); ✅ Admin TradeDock management panel tip-PRESENT read-only v1 (TradeDockAdmin.tsx / #604); Soft-ORDER Fibril #1561 force-cancel Admin-UI consumer remains tip-pending; Space Engineer assignment remains 📐 Design-only. The status marker is omitted on individual subsections to reduce noise — assume 🚧/✅ per the Status summary unless a subsection says otherwise.
Overview¶
A TradeDock is a multi-purpose station combining an advanced trading floor with full shipyard facilities. It is distinct from the standard Class-0 through Class-11 stations described in trading.md; a TradeDock does not sit in the class enumeration at all and operates under its own pricing and service rules.
Three things define a TradeDock:
- Premium trading hub — better spreads, bulk discounts, zero transaction fee, 10× the inventory of a normal port.
- Player shipyard — 12 rented construction slips that build ships over 3–14 real-time days.
- Economic anchor — a regional centre of gravity around which trade routes, resource gathering, and team coordination form.
Scarcity¶
TradeDocks are rare strategic infrastructure — only 4–8 across the entire galaxy at any time. They are seeded at galaxy generation and never spawn dynamically.
| Region | TradeDocks |
|---|---|
| Central Nexus | 3 |
| Terran Space | 1 |
| Player-owned region (≥ 500 sectors) | 0 or 1 |
| Player-owned region (< 500 sectors) | 0 |
Players in small regions must travel to a neighbouring region — typically the Central Nexus — to access TradeDock services. See ../../SYSTEMS/galaxy-generation.md#step-95-tradedock-seeding-phase-105 for the seeding step, per-region quota, placement rules, and galaxy-wide invariants.
Ownership¶
TradeDocks are NPC-controlled neutral infrastructure. They cannot be captured, ownership-transferred, or destroyed. A region owner can fund construction of a new TradeDock as a one-time region-scale project (see Discovery & access below).
Premium trading mechanics¶
A TradeDock's commodity floor is faster, deeper, and cheaper than a Class-0 port. The standard pricing engine described in trading.md still applies, but the spreads, fees, and inventory caps are different:
| Aspect | Standard port (Class 0+) | TradeDock |
|---|---|---|
Sell spread (midpoint × …) |
1.15 | 1.05–1.10 |
| Buy spread | 0.85 | 0.90–0.95 |
| Transaction fee | 2.0% | 0.0% |
| Inventory cap | 1× capacity | 10× capacity |
| Bulk discount | none | 5% per 1,000 units, capped at 20% |
| Cargo insurance available | sometimes | always |
Effective price compression: a TradeDock is 10–15% better on either side of the spread than a Class-0 port. Combined with the bulk discount, a 4,000-unit purchase reaches the 20% cap.
Bulk discount detail¶
Applied to buys (player purchasing from the dock):
| Units in single transaction | Discount |
|---|---|
| 1–999 | 0% |
| 1,000–1,999 | 5% |
| 2,000–2,999 | 10% |
| 3,000–3,999 | 15% |
| 4,000+ | 20% (cap) |
The discount applies on top of the better TradeDock spread; reputation and personal-rep modifiers from trading.md stack on top of the discounted price.
Rare commodities¶
TradeDocks broker commodities that are not procedurally generated at standard ports. The catalogue includes:
- Advanced ship components — hull plating, shield generators, engine cores.
- Rare construction materials — titanium alloys, lumen crystals, quantum shards.
- Specialised equipment — advanced sensors, experimental weapons, luxury fittings.
These materials feed both the shipyard's resource bundles below and the warp-tunnel and Genesis pipelines described in galaxy/genesis-devices.md. Lumen crystals and quantum shards specifically gate Warp Jumper construction; see the Bang-bottleneck note in trading.md.
Trade services¶
In addition to the commodity floor, every TradeDock offers:
- Cargo insurance — protects against piracy losses on the next jump.
- Market trend ARIA integration — premium price predictions.
- Trade route optimisation — suggested round-trip routes.
- Long-term commodity storage — rented warehouse slots, persists across sessions.
- Priority docking — TradeDock berths never queue; instant docking guaranteed.
Shipyard — overview¶
Each TradeDock operates 12 construction slips. Slips rent by the day and are consumed serially — one ship per slip at a time, no parallel builds in the same slip.
The shipyard exists to make ship ownership a project, not a transaction. A built ship is meaningfully different from a purchased one:
- Stat bonuses (5–15% across hull / shields / cargo / speed) applied at completion.
- Custom name, paint scheme, and builder signature ("Crafted with pride by [Player]").
- Unlockable modifications via construction events (see Construction events).
- Higher resale value (+20%).
- Lower total cost (30–50% cheaper) if the player gathers their own resources.
Versus pre-fab purchase at a standard shipyard, the trade-off is time and effort for discount and quality.
Construction phases¶
Every build progresses through four phases regardless of ship type:
- Frame Assembly — 0–25%. Hull structure assembled.
- Systems Integration — 25–50%. Engines, power, life support installed.
- Outfitting — 50–75%. Cargo bays, defensive systems, sensors fitted.
- Final Assembly — 75–100%. Testing, calibration, quality assurance.
Phase boundaries gate certain mechanics (the keel-laid milestone fires at the start of Frame Assembly; hull-complete fires at the end of Systems Integration; see Milestone payments).
Phase-day breakdown¶
Total build days split 20/30/30/20 across Frame / Systems / Outfitting / Final, rounded to whole-day increments at scheduler tick:
| Ship type | Total | Frame (20%) | Systems (30%) | Outfitting (30%) | Final (20%) |
|---|---|---|---|---|---|
| Scout | 3 | 1 | 1 | 1 | 0.3 |
| Fast Courier | 4 | 1 | 1 | 1 | 1 |
| Light Freighter | 5 | 1 | 2 | 1 | 1 |
| Cargo Hauler | 7 | 2 | 2 | 2 | 1 |
| Defender | 8 | 2 | 2 | 2 | 2 |
| Colony Ship | 10 | 2 | 3 | 3 | 2 |
| Carrier | 14 | 3 | 4 | 4 | 3 |
| Warp Jumper | 14 | 3 | 4 | 4 | 3 |
Each phase is gated by a resource-delivery checkpoint (per Delivery rules below). Frame requires 25% of every resource delivered; Systems and Outfitting both require 100% of ore/tech/equipment + 50% exotic; Final requires 100% of all resources. The phase clock pauses until its checkpoint is met. Late delivery accrues a compounding 5% / day cost overrun on the next milestone (5%, 10%, 15%, 20%, …) so wait time is never free.
Slip rental¶
Slips are reserved on a first-come, first-served basis. When all 12 slips at a TradeDock are occupied, a waiting list forms. Reservations require an initial deposit equal to 10% of the total project cost (rent + labour + resource market value).
Per-ship rental table¶
| Ship type | Build days | Slip deposit (10% of total) | Total project cost |
|---|---|---|---|
| Scout Ship | 3 | 4,000 cr | 40,000 cr |
| Fast Courier | 4 | 6,500 cr | 65,000 cr |
| Light Freighter | 5 | 10,000 cr | 100,000 cr |
| Cargo Hauler | 7 | 32,000 cr | 320,000 cr |
| Defender | 8 | 38,000 cr | 380,000 cr |
| Colony Ship | 10 | 64,000 cr | 640,000 cr |
| Carrier | 14 | 190,000 cr | 1,900,000 cr |
| Warp Jumper | 14 | 100,000 cr | 1,000,000 cr |
(The Warp Jumper remains the only craft-only ship in the galaxy — it cannot be purchased pre-fab at any port. See gameplay/ships.md.)
📐 Design-only — gate-builder cadence. Because the Warp Jumper hull is consumed at Phase 3 of warp gate creation (per ADR-0029) and the limit-1-per-player rule applies, a player who builds warp gates is locked into a ~14-day-per-gate cadence: 14 days of slip rental + 1,000,000 cr per Warp Jumper, on top of the gate's own materials. This cadence is the practical rate-limit on player-built warp gates and bounds the W2 cap formula in the average case.
The total project cost above is the canonical "all-in if you buy every resource at market" figure. A player who self-gathers resources will spend substantially less in net credits — see Cost comparison.
Rental mechanics¶
- Daily rent is charged at server reset (00:00 UTC) for as long as the slip is occupied.
- Players may pre-pay up to 30 days of rent at booking.
- Missed rent pauses construction immediately — no progress accrues until rent is paid.
- Three consecutive days unpaid → the project is cancelled and all delivered resources forfeited (see Cancellation & refund).
- Slip occupants can lock the slip behind a team-only flag (see Team coordination workflows) but the rent obligation transfers along with the lock.
Slip reservation state machine¶
ConstructionReservation.state ∈ {
requested, // initial; player submits slip request
queued, // waiting for availability; reputation-tier ordered
hold_active, // 24h hold at front of queue; player must arrive + pay deposit
deposit_collected, // deposit paid; resources can be delivered
frame_assembly, // Frame phase (0–25%)
systems_integration, // Systems phase (25–50%)
outfitting, // Outfitting phase (50–75%)
final_assembly, // Final phase (75–100%)
claim_pending, // 100% complete; awaiting final payment + claim
delivered, // terminal: ship claimed
expired, // terminal: 24h hold missed
cancelled, // terminal: player cancelled
forfeited // terminal: 3 days unpaid
}
| From → To | Trigger | Notes |
|---|---|---|
requested → queued |
Reputation gate passes | Rep tier checked against slip class (see docking-slips.md) |
queued → hold_active |
Slip frees, player at top of queue | 24h hold timer starts; player notified |
hold_active → deposit_collected |
Deposit paid + initial resource batch | If 24h elapses with no deposit → expired (50% deposit to next-in-queue, 50% to TradeDock) |
deposit_collected → frame_assembly |
25% of every resource delivered | Keel-laid milestone fires |
frame_assembly → systems_integration |
100% ore/tech/equipment + 50% exotic | Hull-complete milestone fires |
systems_integration → outfitting |
Same checkpoint as Systems | No new milestone |
outfitting → final_assembly |
100% of all resources | No new milestone |
final_assembly → claim_pending |
Build clock = 100% | Final commissioning milestone fires; player has 7 days to claim |
claim_pending → delivered |
Final payment + claim | Ship spawned in roster |
any → cancelled |
Player initiates | Refund per Cancellation & refund |
any → forfeited |
3 days unpaid rent or milestone | No refund; 7-day re-booking lockout |
Cost comparison¶
For a Defender (build cost reference: pre-fab ≈ 300,000 cr at a standard shipyard):
| Path | Net credits | Net time | Stats |
|---|---|---|---|
| Pre-fab purchase | 300,000 cr | instant | base |
| Player-built (self-gather all resources) | ~180,000 cr | 7 days + gathering | +5–15% bonus |
| Player-built (buy all resources at market) | ~380,000 cr | 7 days | +5–15% bonus |
| Player-built (mix: gather common, buy rare) | ~280,000 cr | 7 days + light gathering | +5–15% bonus |
The "sweet spot" — gather the bulk commodities (ore, technology, equipment), buy the exotic materials — saves credits versus pre-fab and still earns the construction bonuses.
Resource delivery¶
Each ship type has a fixed construction bundle that must be delivered to the slip over the build's duration. Resources are deposited at the dock's resource intake; once delivered they cannot be reclaimed.
Bundle composition¶
| Ship type | Ore | Technology | Equipment | Exotic Tech | Lumen Crystals | Quantum Shards |
|---|---|---|---|---|---|---|
| Light Freighter | 1,200 | 600 | 400 | — | — | — |
| Scout Ship | 500 | 300 | 200 | — | — | — |
| Fast Courier | 800 | 500 | 350 | 100 | — | — |
| Cargo Hauler | 2,500 | 800 | 1,200 | — | — | — |
| Defender | 2,000 | 1,500 | 1,000 | 500 | — | — |
| Colony Ship | 4,000 | 2,000 | 1,500 | 200 | — | — |
| Carrier | 5,000 | 3,000 | 2,500 | 1,000 | 500 | — |
| Warp Jumper | 3,000 | 2,000 | 1,500 | 2,000 | 500 | 1,000 |
(Numbers for Light Freighter, Scout, Defender, Cargo Hauler, Carrier, and Warp Jumper are anchored to legacy spec; Fast Courier and Colony Ship are extrapolated to fit the same structure since legacy did not specify them.)
Delivery rules¶
- Threshold for keel-laid milestone: 25% of every resource type must be delivered before construction can advance past Frame Assembly.
- Threshold for hull-complete milestone: 100% of ore, technology, and equipment plus 50% of any exotic materials.
- Threshold for final commissioning: 100% of every resource.
- Late delivery penalty: if the project misses a phase threshold by its scheduled day, a 5% daily cost overrun is added to the labour fee for as long as the shortfall persists, compounding daily (5%, 10%, 15%, 20%, …). The slip's build clock pauses (extending elapsed real-time days but not the labour-fee accrual).
- Resources delivered by team-mates count toward the project's bundle (see Team coordination workflows); the delivering player gets contribution credit on the project ledger.
Resource bundle validation¶
Delivery acceptance at the dock's resource intake follows these rules:
| Scenario | Result | Refund / recovery |
|---|---|---|
| Correct type, correct quantity | Accepted; counts toward checkpoint | — |
| Correct type, insufficient quantity | Partial accept; phase timer pauses | Player can deliver remainder |
| Wrong resource type | Rejected; cargo returned to player ship | No slip fee charged for the rejected delivery |
| Mixed batch (some correct, some wrong) | Partial accept (correct items only); wrong items returned | No fee for wrong items; correct items consumed |
Per ADR-0039, each delivery is atomic and irreversible once accepted: cancelled projects do not return delivered cargo. Cancellation refunds credits per the schedule below, but resources stay with the TradeDock.
Substitution (📐 reserved for future iteration): credit-for-resource substitution at 1.5× market price is allowed for common materials (ore / technology / equipment) up to 50% of the bundle, but not for rare materials (Exotic Tech, Lumen Crystals, Quantum Shards). Allowing full substitution on rares would undermine the resource-scarcity gate on Warp Jumper and Carrier construction.
Sourcing options¶
- Self-gather — trade routes, mining, planetary production. Cheapest but slowest.
- Market purchase — buy directly at the TradeDock's premium floor or at a standard port. Fastest but most expensive.
- Team contribution — team-mates fly resources in from elsewhere.
- Mixed — gather the bulk, buy the rare materials.
Milestone payments¶
The total project cost is split across a four-stage payment schedule, separate from daily rent and resource delivery. Milestones unlock in real time as construction phases advance.
| Milestone | Trigger | % of total project cost |
|---|---|---|
| Deposit | On slip booking | 10% of total project cost |
| Keel laid | Resource threshold met, Frame Assembly begins | 25% |
| Hull complete | End of Systems Integration | 25% |
| Final / commissioning | On ship delivery, claim issued | 25–40% |
The deposit-to-final ratio scales with ship type — small ships front-load less and back-load more (10% deposit, 40% final), heavy ships front-load more (25% deposit, 25% final). This guarantees the dock recoups capital expenditure on big builds early while keeping entry-tier construction accessible.
Payment failures¶
- Missing a milestone payment pauses construction in the same way as missed rent.
- Three consecutive days of missed milestone payment cancel the project (see Cancellation & refund).
- Players can pre-pay any milestone in advance to immunise against cash-flow gaps.
Construction events¶
During a build, random events can occur with a base 5% chance per real-time day. Events surface as a UI prompt on the player's TradeDock dashboard the next time they dock or open the project view. Some events demand a decision (mitigate vs. accept); others are passive applications.
| Event | Effect | Player decision |
|---|---|---|
| Quality Discovery (positive) | Engineer finds a structural improvement. Ship gains +5% to a random stat (hull, shields, cargo, speed). | Accept — no decision required. |
| Resource Shortage | Local supply chain disrupted. +12–26% cost overrun on the next milestone, OR ship 10% extra of one resource type to mitigate. | Pay overrun or deliver extra resource. |
| Labor Dispute | Slip workers strike. Build delayed 1–3 days unless the player pays a 5% bonus to dock workers. | Pay bonus or absorb delay. |
| Innovation (positive) | Engineer applies a novel technique. Ship gains +1 random equipment slot at completion. | Accept — no decision required. |
| Inspection Delay | Federation/Faction inspector slows progress. +1 day elapsed, no cost. | None — passively applied. |
Event probability tuning¶
P(event_fires_today) = min(0.65, base_rate + engineer_modifier)
base_rate = 0.05 // 5% per project per day
engineer_modifier = 0.10 × engineer_count // capped at 3 engineers (+0.30)
The 0.65 hard cap prevents pathological all-event projects when three engineers are assigned.
Once an event fires, the type rolls 0–99:
| Roll | Outcome class | Pool |
|---|---|---|
| 0–39 | Positive | Quality Discovery, Innovation |
| 40–79 | Neutral | Cosmetic Variation, Crew Morale (no mechanical change) |
| 80–99 | Negative | Resource Shortage, Inspection Delay |
Engineer assignment biases the roll toward positive outcomes (approximately 2:1 in their favour), implemented as a per-engineer −5 shift on the roll (one engineer shifts 0–99 to −5–94; three engineers shift to −15–84).
Concrete numerical effects per event:
| Event | Effect |
|---|---|
| Quality Discovery | +5% to a random stat (hull / shields / cargo / speed) |
| Innovation | +1 random equipment slot at completion (max 2 per project) |
| Cosmetic Variation | Unique hull marking; no mechanical change |
| Crew Morale | Workplace-morale ledger entry; no mechanical change |
| Resource Shortage | +12–26% (roll 2d8 + 10) cost overrun on next milestone, OR deliver +10% of one resource type to skip |
| Inspection Delay | +1 elapsed day, no cost (slip rental keeps accruing) |
Events log to the project ledger and persist on the completed ship's "build history" record.
Multiple events¶
A single project can fire multiple events across its build window. Carrier and Warp Jumper builds (12–14 days) commonly accumulate 2–4 events; Scout and Light Freighter builds rarely fire more than one.
Space Engineer profession integration¶
The Space Engineer profession on a player-owned planet (see planets/professions.md) materially accelerates and improves TradeDock construction. A player with trained Space Engineers on any planet they control can assign engineers to an active TradeDock project.
Effects¶
| Engineer training tier | Construction time reduction | Quality bonus | Labour fee reduction |
|---|---|---|---|
| Tier 1 | −10% | +2% extra stat bonuses | −5% |
| Tier 2 | −20% | +3% | −10% |
| Tier 3 | −30% | +5% | −15% |
Stacking rules¶
- Up to three engineers can be assigned to a single project (one per slip).
- Effects stack additively within the build, but the construction time reduction caps at −50% to prevent trivialised carrier and warp-jumper builds.
- Each assigned engineer is paid daily from the project owner's credits at the engineer's home-planet wage rate (TBD, set by planets/professions.md).
- Engineers also boost the construction-event RNG roll toward positive outcomes (see Construction events).
This is the primary reason the Space Engineer profession exists: it converts long-running planet investment into a recurring shipyard advantage for the player and their team.
Team coordination workflows¶
Multiple players can collaborate on a single slip booking. The legacy single-owner model is preserved as a default — one player books, pays, and claims — but team workflows extend it.
Shared slip booking¶
- Initiator — the team-mate who reserves the slip. Credits with the deposit; their
Player.idis the project owner of record. - Co-contributors — team-mates who deliver resources or pay milestone fees. Logged on the project ledger.
- Claimant — the player listed at completion as recipient of the ship. Default = initiator; reassignable to any co-contributor before final payment.
Pooled resource delivery¶
- Any team-mate docked at the TradeDock can deliver to a teammate's project's resource intake, provided the slip is flagged team-shared.
- Contributions are credited on the ledger — useful for distributing a future ship's effective cost.
- Team-treasury credits can pay milestone fees and slip rent without a specific player needing to be online.
Co-ownership¶
- A completed ship may optionally be team-owned rather than individually owned. A team-owned ship is bound to the team's roster and any active member can pilot it (one pilot at a time).
- Co-ownership is decided at claim time and irreversible without selling and re-buying the ship.
- Per-team-ship limits and team-roster transfer rules track factions-and-teams.md (📐 Design-only there as well).
Specialisation roles¶
A natural team workflow emerges:
- Gatherers mine, trade, and produce raw resources to deliver to the project.
- Builders queue and manage active slips, schedule milestone payments, decide on construction events.
- Engineers train and assign Space Engineers from their colonised planets.
- Treasurers fund milestone gaps from the team treasury.
Three team-mates building three ships in parallel at one TradeDock is the design's reference workflow.
Cancellation & refund¶
Players can cancel a project at any point before claim. Refund schedule:
| Cancellation timing | Deposit refund | Milestones already paid | Resources delivered |
|---|---|---|---|
| Pre-keel (Frame Assembly not started) | 90% (10% restocking fee) | refunded fully | refunded fully |
| Post-keel, pre-hull (Frame Assembly started, Outfitting not begun) | forfeit | 50% of milestones already paid | not refundable |
| Post-hull, pre-claim (Outfitting or Final Assembly) | forfeit | 10% of milestones already paid | not refundable |
Sell to dock at completion¶
If a player completes a build but no longer wants the ship, the dock will buy the completed hull at construction cost minus 30%. This is the best-available exit after Final Assembly and is the only way to recover any value once the ship is hull-complete.
Forfeiture cancellation¶
If the project is cancelled by the system (three days of missed rent or milestones), all credits and resources are forfeit — there is no refund path. The player may not re-book a slip at the same TradeDock for 7 real-time days after a forfeiture.
Defenses¶
TradeDocks are heavily defended Class-9-equivalent military installations:
- NPC defence fleet — 8–16 turrets and 24–48 garrison drones permanently stationed.
- No PvP combat — players cannot initiate combat in a TradeDock's sector against the dock or other docked players.
- No PvE damage — no NPC faction event can destroy or capture a TradeDock outside an end-game faction-war scenario flagged by an operator (📐 Design-only).
- Player ships at the dock are safe — the dock guarantees a no-combat zone within 1 sector.
A TradeDock cannot be cargo-raided or saboteur-targeted in current design. The shipyard infrastructure is too strategic to be lost to an opportunistic player attack.
Discovery & access¶
Galaxy-generation seeding¶
TradeDock placement is decided at galaxy generation in a dedicated seeding step — Step 9.5 / Phase 10.5, after generic stations and planets and before the Capital + SpaceDock anchors. See ../../SYSTEMS/galaxy-generation.md#step-95-tradedock-seeding-phase-105 for the full per-region quota, placement rules, and galaxy-wide invariants.
- 3 in the Central Nexus — 1 Tier-A (in an
EXPANSE-zone commerce cluster) + 2 Tier-B. - 1 in Terran Space — Tier-A.
- 0 or 1 per player-owned region (eligible only at ≥ 500 sectors); Tier-B by default.
Seeded placement targets sectors in EXPANSE/CLUSTER-class clusters with ≥ 2 inbound warps, never in starter-cluster or FRONTIER-zone sectors, and avoids collisions with the Capital/SpaceDock anchors. The galaxy-wide guarantee is 4–8 total TradeDocks, ≥ 1 Tier-A, and ≥ 2 reachable from any starter cluster — the Tier-A floor is what keeps the Warp-Jumper / warp-gate loop reachable in every generated galaxy.
Player-region TradeDocks must be funded by the region owner; they are not auto-seeded.
Schema¶
TradeDocks share the Station table (see ../../DATA_MODELS/stations.md) and are distinguished from the Class-0..11 trading rows by dedicated columns:
| Column | Type | Meaning |
|---|---|---|
tradedock_tier |
VARCHAR(1) nullable |
'A' = Warp-Jumper-capable (specialized construction slips), 'B' = standard construction, NULL = not a TradeDock. This single column is both the TradeDock discriminator and its tier — there is no separate boolean flag. Only 'A'-tier docks build Warp Jumper / Carrier hulls (see docking-slips.md). |
region_assignment_role |
ENUM('primary_tier_b', 'secondary_tier_b', 'tier_a_facility') nullable |
Per-region role assigned by the seeder; readable by the player-client region-overview screens. |
Reputation gate¶
To dock at a TradeDock without paying the guest fee, a player needs:
- +200 or higher reputation with the controlling NPC faction (the faction owning the sector) — see factions-and-teams.md.
- A clean criminal record with that faction (no outstanding bounties from the faction's own NPCs).
Guest fee¶
Players below the reputation threshold can still dock by paying a flat guest fee of 100,000 cr per visit. The fee is non-refundable, persists for one in-game session (i.e. until the next undock), and is applied each time the player re-docks.
Region-funded construction¶
A region owner with ≥ 500 sectors may construct one new TradeDock in their region:
- Cost: 50,000,000 cr.
- Duration: 90 real-time days.
- Resource bundle: 500,000 ore + 300,000 technology + 200,000 equipment.
- Operating cut: the region owner receives 5% of all shipyard fees generated at the new dock as ongoing income (paid into the region treasury).
Region-funded TradeDocks operate identically to galaxy-seeded ones; players see no functional difference.
Lifecycle — cancellation, lapse, disbandment¶
The 50M / 90-day construction project has three failure modes worth speccing explicitly:
- Mid-build cancellation (region owner explicitly cancels via the regional-governance UI): credits and resource bundle are refunded pro-rata for the unbuilt portion, minus a 25% restocking fee on the unbuilt remainder. Worked example: cancel at day 30 (33% built, 67% unbuilt) refunds
0.67 × 50M × 0.75 = 25.125M crand0.67 × bundle × 0.75of each resource. The built portion has no in-game value; the construction site does not become a partial structure. - Region subscription lapses post-construction: the TradeDock persists as an NPC asset in the region. The 5% fee income stops accruing to the region treasury at the moment of lapse. Player-facing functionality (docking, ship construction, repair) continues normally — the TradeDock is treated as an ungoverned facility for fee-distribution purposes (operator pockets the 5%, or the cut is folded into player-facing prices, per operator policy).
- Region is disbanded (ownership transfer to operator, region terminated, etc.): same as subscription lapse. The TradeDock persists as NPC infrastructure; the 5% income stream simply has no destination.
In all three cases the TradeDock itself is preserved — once built, it is part of the universe state and survives changes to the funding region's status.
Player-facing affordances¶
Player shipyard and slip-rental UX lives under SpaceDock venues (not a separate TradeDock/ component tree):
- ✅ Shipyard venue (
ShipyardVenue.tsx) — catalog purchase and construction handoff into the slip-rental flow. On tip46bce720(wired viaSpaceDockInterface.tsx). - ✅ Construction venue (
ConstructionVenue.tsx) — quotes, slip reservation, rent, milestone payments, resource intake, and project progress for the player's own builds. On tip46bce720. - ✅ Region-funded TradeDock panel (
RegionTradeDockPanel.tsx) — region-owner console to fund a new TradeDock from the regional treasury (see Region-funded construction). On tip46bce720.
Target affordances that remain design-only on top of those venues (do not invent separate landing-page components for them):
- 📐 Space Engineer assignment panel — assign planetary Space Engineers to an active project (see Space Engineer profession integration).
- 📐 Customisation panel — paint scheme picker, ship-name field, modification toggles (unlocked through Innovation events).
- 📐 Stats projection — live preview of the ship's stats including any pending bonuses from quality events.
- 📐 Team-shared slip flag — toggle visible only to the slip's initiator.
ARIA surfaces project status as conversational status updates ("Your Defender is 65% complete and currently in Outfitting; one resource shortage event is pending your decision").
Source map¶
The slip-rental construction pipeline, player SpaceDock venues, and gameserver admin construction GETs are shipped (see Status summary); ✅ Admin TradeDock management read-only v1 tip-PRESENT (#604); Soft-ORDER force-cancel Admin UI remains tip-pending; Space Engineer assignment remains a target path.
| Concern | Path |
|---|---|
TradeDock discriminator (no dedicated model — a column on Station) |
services/gameserver/src/models/station.py (tradedock_tier) |
| Slip reservation model | services/gameserver/src/models/construction.py:ConstructionReservation |
| Slip-rental / construction-pipeline service | services/gameserver/src/services/construction_service.py |
| Slip-rental REST routes | services/gameserver/src/api/routes/construction.py |
| Region-funded TradeDock construction | services/gameserver/src/services/construction_service.py:create_region_funded_construction |
| Construction event RNG (shipped — see Status summary) | services/gameserver/src/services/construction_service.py:roll_construction_event / apply_construction_event, wired via _roll_construction_events |
| Bundle composition catalogue | services/gameserver/src/services/construction_service.py:resource_bundle |
| Premium-pricing override (10–15% spread, bulk discount) — shipped | services/gameserver/src/services/trading_service.py (tradedock_bulk_discount_fraction + station-class premium multipliers) |
| Galaxy-gen TradeDock seeding | services/gameserver/src/services/bang_import_service.py:_apply_tradedock_seeding |
| Space Engineer integration | services/gameserver/src/services/profession_service.py (target) and construction_service.py cross-call |
| Player UI — shipyard (purchase + handoff) | services/player-client/src/components/spacedock/ShipyardVenue.tsx (wired via SpaceDockInterface.tsx) |
| Player UI — construction / slip project | services/player-client/src/components/spacedock/ConstructionVenue.tsx (wired via SpaceDockInterface.tsx) |
| Player UI — region-funded TradeDock | services/player-client/src/components/governance/RegionTradeDockPanel.tsx (wired via RegionOwnerControls.tsx) |
| Gameserver — admin construction | services/gameserver/src/api/routes/admin_construction.py — ✅ tip-shipped on 46bce720 (PR #598 MERGED GETs + PR #784 MERGED force-cancel). Contract on tip: GET /api/v1/admin/construction/tradedocks, …/tradedocks/{station_id}, …/reservations/{id}, and POST …/reservations/{id}/force-cancel (GS tip-PRESENT; Admin UI Soft-ORDER follow-up Fibril #1561 tip-pending) |
| Admin UI — TradeDock management | services/admin-ui/src/components/pages/TradeDockAdmin.tsx — ✅ tip-PRESENT read-only v1 @ tip 46bce720 via #604 MERGED (App lazy mount + /tradedocks route + Vitest; Soft-HOLD #1146 / LEG-71). Soft-ORDER Fibril #1561 / OPEN #792 force-cancel Admin-UI consumer stays tip-pending — do not read GS #784 or #604 as Admin force-cancel complete |
Status summary¶
This system is 🚧 Partial.
- 🚧 The slip-rental construction pipeline is live: the
ConstructionReservationmodel (construction_reservationstable),construction_service, androutes/construction.pyhandle reservation, quotes, milestone payments, resource deliveries, lazily-advanced phases, slip-pool availability, queue promotion, and claim — with Tier-A gating. Warp Jumper commissioning runs end-to-end through it (gameplay-verified, 1,000,000 cr). - ✅ Premium-pricing override (
trading_service.py) and construction-event RNG (construction_service.py, wired via_roll_construction_events) are both shipped. - ✅ Player SpaceDock venues are shipped:
ShipyardVenue.tsx,ConstructionVenue.tsx, and region-ownerRegionTradeDockPanel.tsx. - ✅ Gameserver admin construction is tip-shipped on
46bce720(admin_construction.py; PR #598 MERGED GETs + PR #784 MERGEDPOST …/reservations/{id}/force-cancel) — GETs and GS force-cancel are on tip. - ✅ Admin TradeDock management panel is tip-PRESENT read-only v1 (
TradeDockAdmin.tsx+/tradedocksvia #604 MERGED → tip). Soft-ORDER Fibril#1561/ OPEN #792 Admin force-cancel consumer stays tip-pending — not tip-shipped (GS #784 ≠ Admin UI force-cancel land). - 📐 Still design-only: Space Engineer assignment integration.
Implementation order, when scheduled, follows the legacy phase plan:
- Phase 1 — TradeDock seeding at galaxy generation, premium trading floor (spreads + bulk discount + 10× inventory + zero fee), Warp Jumper construction migrated onto the slip-rental flow.
- Phase 2 — Full slip rental for all 8 craft-able ship types (the 9
ShipTypevalues minus Escape Pod, which is issued, not built), resource bundles, milestone payments, cancellation & refund. - Phase 3 — Construction events RNG, Space Engineer integration, team coordination workflows, region-funded construction.
If this system is indefinitely deferred, file an ADR in ADR/ capturing the deferral rationale and the conditions under which it would be picked up.
Related¶
- trading.md — main trading flow, station classes, and pricing engine; the TradeDock summary block there is a brief pointer to this spec.
- lifecycle.md — credit faucets and sinks; TradeDock construction is a major mid-to-late-game sink.
- planets/professions.md — Space Engineer profession that accelerates and improves TradeDock construction.
- gameplay/ships.md — ship types, pre-fab acquisition paths, the craft-only Warp Jumper.
- gameplay/ship-systems.md — upgrade and equipment slots that built ships can extend with.
- galaxy/generation.md — TradeDock placement at galaxy generation and per-region scarcity rules.
- gameplay/factions-and-teams.md — reputation gates for TradeDock access and team-coordinated workflows.