Novolis Docs
novolis-governance / completed-plans/dock_mesh_terminology_064f0f42.plan.md

Dock / Mesh terminology upgrade

dotnetgovernancenovolis

name: Dock Mesh Terminology overview: Rename player-facing and Sins-owned terminology from Berth/Network/Hub to Dock/Mesh/System–Station–Habitat, while keeping Novolis.Economy TransportHub and ShipmentPhase.WaitingBerth as internal package types with bridge comments. todos:

  • id: glossary

content: Add docs/terminology.md + link from docs/README status: completed

  • id: ux-strings

content: "Rename UI/CLI/Args/bridge/hints/coach: Dock, Mesh, AT DOCK; CLI aliases" status: completed

  • id: sins-ids

content: Rename DockBoardOnly, dockOnly, CurrentSystemId, PortTier.Capital; save compat status: completed

  • id: docs-smoke

content: Update gameplay/mesh/cli/places/AGENT-SMOKE docs status: completed

  • id: verify

content: Fix tests; build+test; grep banned UX terms status: completed isProject: false


Glossary (source of truth)

Add `novolis-apps/src/SinsOfACapitalismTycoon/docs/terminology.md` and link it from `docs/README.md`.

DomainPreferredBan in UX / new Sins code
Docked at infrastructureDock, Docked, at dockBerth (bunk sense)
Same star systemLocal, in system—
Comms fabricMesh, Node, Feed, MailboxNetwork (as intel board name)
Real spaceSystem, Habitat, StationHub (player glass)

Economy package types stay: TransportHub, TransportHubId, ShipmentPhase.WaitingBerth. Sins code may keep those identifiers when calling Economy APIs; display strings and Sins-owned APIs use the glossary.

flowchart TB
  subgraph space [Real space]
    System --> Station
    System --> Habitat
    Station --> Dock
  end
  subgraph mesh [Communications]
    Node["Node = system relay"]
    Feed
    Mailbox
    Node --> Feed
    Node --> Mailbox
  end
  System -.->|"co-located"| Node
  Dock -->|"local live tape"| LocalBoard[Local dock board]
  Mailbox -->|"delayed digests"| MeshBoard[Mesh board]

Pass 1 — Player UX (strings, CLI, Avalonia)

Pass 2 — Sins-owned identifiers

Rename for clarity; keep JSON save compatibility with [JsonPropertyName] / dual read:

CurrentNew
PlayerControlState.LocalBoardOnlyDockBoardOnly (save: still write/read LocalBoardOnly or both)
CaptainJobBoard.ListSpot(..., berthOnly:)dockOnly:
LiveSession.CurrentHubSystemIdCurrentSystemId (wrapper; old name obsolete alias if needed)
Bridge CurrentHubName / CurrentHubSystemIdCurrentSystemName / CurrentSystemId
UI/docs “berth fee” standing“dock fee” / “station standing fee” in Sins copy (`JumpBandGate` player-facing strings)

PortTier.Hub (Sins enum): rename to PortTier.Capital (or Core) and update `PortTier.cs` + call sites / docs. Do not rename Economy corridor/hub APIs.

Bridge (`AstroEconomyBridge.cs`): keep HubBinding as the Economy mapping type, but comments and any Sins display helpers say system/station; prefer exposing SystemId in new code paths.

Pass 3 — Explicit non-goals

  • No rename of Novolis.Economy TransportHub / WaitingBerth / HubOrder (cross-package break).
  • No rename of mesh kernel MeshNode / Mailbox / Feed (already correct).
  • Lore fiction that uses “hub” as a place nickname can stay in deep canon docs only if tagged; new copy uses station/system.

Pass 4 — Tests and verify

  • Update unit/smoke strings (AT DOCK, board aliases).
  • dotnet build + unit test run with ProjectReference mode; kill SinsOfACapitalismTycoon.exe if DLL locks.
  • Grep Sins for remaining player-facing \b[Bb]erth\b, \b[Nn]etwork\b board sense, and \b[Hh]ub\b in UI/CLI/docs (allow Economy type names and WaitingBerth references).