A House Divided A House DividedDocumentation
Changelog
Game Design/Legislature & Parties

Bills & Legislation

Last updated 2026-08-21
Player wikiBills & Legislation
Source files

Bill Types#

Every bill needs a category. Policy bills need at least one provision (legislation type + policy option); custom bills may have no provisions.

Policy Bills (current implementation)#

LegislationType Fields#

Key fields on the LegislationType interface ():

Field Description
countryScope "us" | "uk" | "international", which country this type belongs to. All US types are "us" or "international"; 19 UK types are "uk".
effectTargetsWeighted Array of weighted metric targets applied when a bill using this type is enacted.
policyOptions[].metricEffects Per-option { category, metricId, ratePerTurn }, direct additive metric change applied each turn the policy is active. Scaled for ~10-year full reversal: extreme ≈ ±0.06/turn, center = 0.
policyOptions[].annualCostPerCapita Absolute per-capita spending level in $ per year (not a delta). Represents the total program cost at that policy level. $0 = full abolition of the program. Positive = spending; negative = net savings/revenue (e.g., tax increases). Applied to national/state budgets when enacted.
policyOptions[].minimumWageRate (Minimum wage types only) The actual hourly wage in $/hour for this option. Stored alongside the standard economic/social scores so the UI can display the real dollar figure.
positions[].chamber "house" | "senate" | "commons" | "lords", committee positions for the type.

US Tax System, 11-Bracket Model#

All 9 US tax legislation types (income_tax, corporate_tax, capital_gains_tax, payroll_tax, estate_tax, excise_tax, carbon_tax, wealth_tax, financial_transaction_tax) use an 11-bracket scale (indices 0-10) with LARP-style bill names:

Index Direction Example title pattern
0 Far left "X Expansion and Reform Act"
1-4 Left Progressive-leaning rate bills
5 Center Status quo / baseline rate
6-9 Right Rate reduction bills
10 Far right "X Abolition Act" / "Zero X"

Each bracket has an explicit economic score (−5 to +5), a social score (0 unless cross-axis), an annualCostPerCapita representing total per-capita revenue impact, and a LARP-style title and description. This replaced the prior 6-8 option scale.

Absolute Cost Model#

annualCostPerCapita on every US legislation option is an absolute spending level, not a delta from baseline:

This contrasts with the old delta model. Re-seeding policies resets to the baseline option's absolute value.

Natural Metric Decay#

All metrics now decay naturally toward their baseline value at 0.25% per turn when no active policy is pushing them. This prevents metrics from permanently deviating from realistic ranges after extreme legislation passes and then expires or is repealed. At 0.25%/turn, a fully-deviated metric takes approximately 20 game years (~960 turns) to return to baseline with no opposing policy active.

Implemented in .

Federal Effect Division#

Federal bills apply their metric effects to every US state. Each state receives 1/50th of the full effect per turn (previously was 1/3). This prevents a single federal bill from dominating state-level metrics and ensures the sum of per-state effects roughly equals the intended national total across 50 states.

Configured via FEDERAL_MULTIPLIER in .

US Legislation Type Changes (v3 overhaul)#

UK Legislation Types#

55 UK-specific types (seeded via ) cover both national (Parliament) and regional (Council) legislation. All have countryScope: "uk". National types have allowedScope: "national"; regional types have allowedScope: "state". Each has 7 policy options (spending types) or 11 brackets (tax types) with LARP-style titles, descriptions, and £/cap costs. Baseline policy values start at centrist (option #3). Seeded via admin Universal Seeder > UK Legislation, or seed-legislation.ts.

34 National (Parliament) types across 16 categories: Healthcare (4), Education (4), Economic (2), Infrastructure (2), Environment (2), Law & Justice (2), Defence (2), Foreign Policy (1), Welfare (2), Immigration (2), Labour (2), Housing (2), Governance (3), Media (2), Civil Liberties (2), plus 5 national tax types (Income Tax, NI, VAT, Corporation Tax, Excise/Customs).

14 Regional (Council) types plus 2 regional tax types (Council Tax, Business Rates). Regional types are subject to the budget constraint system, total enacted regional spending cannot exceed the region's budget (Council Tax revenue + Business Rates revenue + Westminster grant).

7 tax types use 11 brackets with explicit rates, LARP-style titles, and economic scores. National taxes: uk_income_tax_rate, uk_national_insurance, uk_vat, uk_corporation_tax, uk_excise_customs. Regional taxes: uk_council_tax, uk_business_rates.

Key national type: uk_local_government_funding controls the Westminster grant to regions. The seated Chancellor of the Exchequer can allocate that pool through the cabinet allocation route; applies the configured percentages, defaulting to an equal split.

UK-specific metrics: 14 metrics unique to the UK (e.g., nhsWaitingTime, childPoverty, housingAffordability, devolutionSatisfaction, bbcTrust). 4 US-only metrics excluded from UK (uninsuredRate, affordabilityIndex, highSchoolGradRate, collegeEnrollment). National effect division uses UK_FEDERAL_MULTIPLIER = 1/12 (12 regions vs US 50 states).

Regional Budget Constraint: UK regions operate under a balanced-budget requirement. Revenue = Council Tax + Business Rates + Westminster grant. If enacted spending exceeds budget for more than 1 turn, forced austerity downgrades the most expensive programme one option level per turn until balanced. Property and commercial value bases drift dynamically based on investment levels (25%-300% of baseline guardrails).

Full spec: the design archive

Bill Lifecycle#

Bills move through a strict status pipeline managed by the turn processor each hour:

Status Meaning
active Voting open in the origin chamber (24-hour window)
passed_origin Passed origin chamber; pending transmission to second chamber
active_other Voting open in the second chamber (24-hour window)
enrolled Passed both chambers; awaiting presidential action (10-hour window)
signed President signed, bill is law
vetoed President vetoed the bill
failed Failed a chamber vote or pocket-expired without presidential action
withdrawn Sponsor withdrew before voting opened

Proposal#

  1. Cost: Flat 10 action points to propose (BILL_PROPOSE_ACTION_COST). Additional provisions (2nd, 3rd) cost national influence (5, 10 respectively, on top of the 1st provision's 5); admins are exempt.
  2. Availability: US, House or Senate members. UK, Commons members. JP, Shūgiin or Sangiin members (origin chamber matches the sponsor's seat). Admins can override in all countries.
  3. Required: Category and at least one provision (legislation type + policy option). Category limits which legislation types appear in the form (see GET /api/game/legislation-types?category=...).
  4. Activation: Bill immediately enters active status with a 24-hour votingEndsAt timestamp set at submission
  5. Origin chamber is recorded from the proposing member’s selection (House, Senate, or Joint)

Voting#

  1. Window: 24 hours per chamber
  2. Vote Options: For / Against / Abstain (changeable before voting closes)
  3. Eligibility: Only members of the current chamber may vote
  4. Result: Simple majority (For > Against; abstentions are neutral)
  5. Tie Votes: Vice President breaks ties in Senate
  6. Re-voting: A member may change their vote at any time while voting is open

Bicameral Process#

  1. Bill opens for voting in the origin chamber (House or Senate)
  2. Voting closes at votingEndsAt; turn processor tallies all votes
  3. Passed: status advances to active_other for the second chamber with a fresh 24-hour window
  4. Failed: status set to failed
  5. Second chamber vote closes the same way; if passed → enrolled

Presidential Action#

Senate Filibuster / Cloture#

Implemented, US Senate only (); a bill with countryId !== "US" is rejected.

Veto Override#

Implemented. A vetoed bill can enter status veto_override with its own separate voting deadline (overrideVotingEndsAt / overrideVotingEndsOnTurn).

Detail Page (/congress/bills/[id])#

Each bill has a dedicated page showing:

NPP Auto-Voting#

See NPP System for full documentation. Federal and local NPP legislators now use the same deterministic cross-pressure model:

Admin Tools#

Accessible via Admin → Legislation tab:

Action Description
Advance Chamber Skip the current chamber's vote; advance to next stage
Send to President Mark bill as enrolled immediately
Force Sign Sign the bill regardless of chamber status
Force Veto Veto the bill regardless of chamber status
Fail Mark the bill as failed immediately
Reset Reset bill to active with a fresh 24-hour voting window

The turn processor runs processBillLifecycle() every turn; all status transitions happen automatically without admin intervention in normal play.

Bill Effects#

Policy Bills (signed legislation)#

Archetype Approval Impacts#

When a bill is enacted (signed into law or veto overridden), legislators who voted FOR the bill receive archetype approval changes based on the policy shift:

Component Description
Policy domains 13 domains: education, healthcare, environment, immigration, criminal_justice, defense, economic, welfare, infrastructure, governance, foreign_policy, tax, mediaInformation
Archetype affinities Each archetype has a per-domain affinity (±50). Positive = likes rightward shifts, negative = likes leftward. E.g., evangelicals +35 on education (love school choice), public_sector -40 (hate it).
Shift calculation shift = newPolicyIndex - oldPolicyIndex. Moving 2 steps right = +2, 1 step left = -1.
Impact formula impact = shift × affinity × 0.15, clamped to ±10 per bill. A 2-step rightward education shift gives evangelicals +10 approval.
Who gets impacts All legislators who voted FOR the bill (both chambers for federal bills).
When applied Only at enactment (onBillEnacted in ), not during chamber voting.

Example: Federal Education Funding moves from index 1 (left) to index 4 (center-right), a +3 shift.

Implementation: DOMAIN_AFFINITIES and calculateShiftImpacts() in .

Data and APIs#

Base policy and state laws#

Future Expansions#

Committee System#

Leadership Control#

Corporation System#

Legislative Strategy#

Coalition Building#

Bill Priorities#