A House Divided A House DividedDocumentation
Changelog
Game Design/Government & Executive

UK + JP Devolved Executives - Design & Phased Plan

Last updated 2026-08-21
Source files

Status: Historical implementation plan; the regional executive offices and election wiring described here have shipped. Do not treat unresolved questions or phase checklists below as current behavior. Branch: rework/political-system-update Closes: Gate 0 finding - getRegionalExecutive() returns null for UK/JP.

Motivation#

The Political System Rework's Gate 0 audit (plan §"Gate 0 - Findings", 2026-05-05) identified that the State Overview tab's regional-executive chip can never display anything for UK or JP regions because no devolved-executive OfficeType exists in the schema. US (governor) and DE (ministerPresident) are wired. This document covers the design + implementation plan to close that gap.

Scope locked with user#

Decision Choice
OfficeType reuse Recycle existing governor type for UK FMs / Mayor of London and JP regional governors
UK First Minister election Direct election per devolved region (SCO, WAL, NIR)
Mayor of London Include - direct election, LON only
JP regional governor election Direct election per region, own 4-year cycle
NPC seeding Party-stamped, generic-name NPCs (12 seats total)
Preset support 1991 + 2019 (matches existing US/DE seed pattern)

OfficeType reuse - the key insight#

{ type: "governor"; state: string } already has exactly the shape required for direct-elected single-seat regional executives. JP already has a governor entry in its officeTypes config (line 979), and REGIONAL_BILL_ASSENT_OFFICE_KEY[JP] is already "governor" - the office mechanically exists for JP today, just with no seat instances. UK is missing both pieces.

Display labels diverge by country (and by state for UK), but the office-type key, election cycle, action bonus, and party-strength weight are all identical. Recycling governor means zero changes to the OfficeType union, the election plumbing, action-refresh, or the bill-assent flow - only data + label work.

Seat inventory (12 new seats)#

UK - 4 seats:

JP - 8 seats (one per game-region; JP regions are the in-game state unit, not the 47 RL prefectures):

UK English regions other than LON (SEE, SWE, EAE, EMI, WMI, YHU, NWE, NEE) have no devolved executive - getRegionalExecutive() returns null for them.

Label resolution#

getRegionalExecutive() currently uses a country-keyed config. UK needs a per-state label (FM for SCO/WAL/NIR, Mayor for LON, null for everything else). JP uses one label country-wide.

function getExecutiveLabel(countryId, stateId): string | null {
  if (countryId === "US") return "Governor";
  if (countryId === "DE") return "Ministerpräsident";
  if (countryId === "JP") return "Governor";
  if (countryId === "UK") {
    if (stateId === "LON") return "Mayor of London";
    if (stateId === "SCO" || stateId === "WAL" || stateId === "NIR")
      return "First Minister";
    return null; // English non-London regions
  }
  return null;
}

Phases#

Phase 1 - Country config + regional-executive chip (this PR)#

Goal: regional-executive chip resolves correctly for UK + JP when officials exist. No officials exist yet - chip stays empty until Phase 3 seeds them. No schema changes because governor already covers all three new contexts.

Files touched:

Phase 2 - Election plumbing#

Goal: governor elections actually create + resolve for UK SCO/WAL/NIR/LON and JP regions on their 4-year cycles.

Phase 3 - NPC seeding#

Phase 4 - UI verification + wiki + label polish#

Open questions#

Non-goals#

Connected pages