Skip to content

Remove Infrastructure - #128

Merged
Drefvelin merged 1 commit into
mainfrom
it-4-remove-infrastructure
Oct 4, 2026
Merged

Drefvelin merged 1 commit into
mainfrom
it-4-remove-infrastructure

Conversation

@Drefvelin

Copy link
Copy Markdown
Contributor

What changed

Part of the installation-trade series (after #127). Per-province Infrastructure is removed entirely.

  • Gone:
    • province infrastructure and effective terrain (EffectiveTerrain, InfrastructureSources, InfrastructureSpread);
    • the realm Infrastructure branch, and the Bureaucracy infrastructure line;
    • the infrastructure and infrastructure_upkeep modifiers, and the upkeep ledger line;
    • the infrastructure config section;
    • the infrastructure fields in the province map export;
    • the realm-wide branch estimate;
    • the installation build estimate (InstallationBuildConfirm, InfrastructurePreview, InfrastructureMenuCopy).
  • Terrain: trade, production and upkeep read the province's raw terrain again, as before Add per-province infrastructure that raises effective terrain #104.
  • /faction construct builds straight away again, as before Estimate what a hub or installation would earn #112/Show what infrastructure earns in the menus #114.
  • Kept: TrackProvinceCache and the track province lookup, because the trade graph uses them to notice track changes. The mid-day track refresh runs at 300 seconds, and track-refresh-seconds is no longer read.
  • Saved data: a saved infrastructure branch entry is skipped on load.

This also removes the per-province InstallationAccess call that CodeRabbit flagged on #127, so access is now only read inside a recalculation.

Testing

mvn verify passes locally: 2827 test cases.

  • New tests cover raw terrain in trade, production and upkeep, a guild saved with the infrastructure branch, and the province loader.
  • Tests for the deleted code are removed.

🤖 Generated with Claude Code

Made with Cursor

Province infrastructure, effective terrain, the realm Infrastructure
branch and its upkeep, track counting as infrastructure, its map export
and the installation build estimate are gone. Terrain reads the raw
province terrain again, and /faction construct builds straight away.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@coderabbitai

coderabbitai Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: a257de87-abc1-4123-b2fd-afd35319900b
📥 Commits

Reviewing files that changed from the base of the PR and between c2b0f71 and 4e84a95.

📒 Files selected for processing (39)
  • src/main/java/net/tfminecraft/simplefactions/Cache.java
  • src/main/java/net/tfminecraft/simplefactions/SimpleFactions.java
  • src/main/java/net/tfminecraft/simplefactions/enums/GuildModifier.java
  • src/main/java/net/tfminecraft/simplefactions/guild/hub/InfrastructureMenuCopy.java
  • src/main/java/net/tfminecraft/simplefactions/guild/hub/InfrastructurePreview.java
  • src/main/java/net/tfminecraft/simplefactions/guild/hub/VehicleFrameworkTrackProvinces.java
  • src/main/java/net/tfminecraft/simplefactions/guild/income/BranchIncomePreview.java
  • src/main/java/net/tfminecraft/simplefactions/guild/income/Cashflow.java
  • src/main/java/net/tfminecraft/simplefactions/guild/income/Ledger.java
  • src/main/java/net/tfminecraft/simplefactions/loaders/ConfigLoader.java
  • src/main/java/net/tfminecraft/simplefactions/managers/CommandManager.java
  • src/main/java/net/tfminecraft/simplefactions/managers/InventoryManager.java
  • src/main/java/net/tfminecraft/simplefactions/managers/ProvinceManager.java
  • src/main/java/net/tfminecraft/simplefactions/managers/inventory/BranchIncomePreviewService.java
  • src/main/java/net/tfminecraft/simplefactions/managers/inventory/GuildCreator.java
  • src/main/java/net/tfminecraft/simplefactions/managers/inventory/InstallationBuildConfirm.java
  • src/main/java/net/tfminecraft/simplefactions/map/Compiler.java
  • src/main/java/net/tfminecraft/simplefactions/map/infra/EffectiveTerrain.java
  • src/main/java/net/tfminecraft/simplefactions/map/infra/InfrastructureSources.java
  • src/main/java/net/tfminecraft/simplefactions/map/infra/InfrastructureSpread.java
  • src/main/java/net/tfminecraft/simplefactions/map/infra/TrackProvinceCache.java
  • src/main/java/net/tfminecraft/simplefactions/map/provinces/Province.java
  • src/main/resources/Guilds/branches.yml
  • src/main/resources/config.yml
  • src/test/java/net/tfminecraft/simplefactions/guild/GuildSavedInfrastructureBranchTest.java
  • src/test/java/net/tfminecraft/simplefactions/guild/hub/InfrastructureMenuCopyTest.java
  • src/test/java/net/tfminecraft/simplefactions/guild/hub/SupplyHubServiceTest.java
  • src/test/java/net/tfminecraft/simplefactions/guild/income/BranchIncomePreviewTest.java
  • src/test/java/net/tfminecraft/simplefactions/loaders/ConfigLoaderInfrastructureTest.java
  • src/test/java/net/tfminecraft/simplefactions/loaders/ProvinceLoaderInfrastructureTest.java
  • src/test/java/net/tfminecraft/simplefactions/loaders/SupplyHubBranchesTest.java
  • src/test/java/net/tfminecraft/simplefactions/managers/inventory/GuildCreatorIncomeLineTest.java
  • src/test/java/net/tfminecraft/simplefactions/map/CompilerProvinceExportTest.java
  • src/test/java/net/tfminecraft/simplefactions/map/infra/EffectiveTerrainTest.java
  • src/test/java/net/tfminecraft/simplefactions/map/infra/InfrastructureSourcesTest.java
  • src/test/java/net/tfminecraft/simplefactions/map/infra/InfrastructureSpreadTest.java
  • src/test/java/net/tfminecraft/simplefactions/map/infra/ProvinceInfrastructureTest.java
  • src/test/java/net/tfminecraft/simplefactions/map/infra/TrackProvinceCacheTest.java
  • src/test/java/net/tfminecraft/simplefactions/map/provinces/ProvinceTradeCarryTest.java
💤 Files with no reviewable changes (24)
  • src/test/java/net/tfminecraft/simplefactions/managers/inventory/GuildCreatorIncomeLineTest.java
  • src/test/java/net/tfminecraft/simplefactions/map/infra/InfrastructureSpreadTest.java
  • src/main/java/net/tfminecraft/simplefactions/map/Compiler.java
  • src/test/java/net/tfminecraft/simplefactions/map/infra/InfrastructureSourcesTest.java
  • src/test/java/net/tfminecraft/simplefactions/loaders/ConfigLoaderInfrastructureTest.java
  • src/test/java/net/tfminecraft/simplefactions/map/infra/EffectiveTerrainTest.java
  • src/test/java/net/tfminecraft/simplefactions/guild/hub/InfrastructureMenuCopyTest.java
  • src/test/java/net/tfminecraft/simplefactions/map/infra/ProvinceInfrastructureTest.java
  • src/main/java/net/tfminecraft/simplefactions/loaders/ConfigLoader.java
  • src/main/java/net/tfminecraft/simplefactions/Cache.java
  • src/main/java/net/tfminecraft/simplefactions/map/infra/EffectiveTerrain.java
  • src/main/resources/config.yml
  • src/main/java/net/tfminecraft/simplefactions/guild/hub/InfrastructureMenuCopy.java
  • src/main/java/net/tfminecraft/simplefactions/managers/InventoryManager.java
  • src/main/java/net/tfminecraft/simplefactions/map/infra/InfrastructureSources.java
  • src/main/java/net/tfminecraft/simplefactions/map/infra/InfrastructureSpread.java
  • src/test/java/net/tfminecraft/simplefactions/guild/hub/SupplyHubServiceTest.java
  • src/main/resources/Guilds/branches.yml
  • src/main/java/net/tfminecraft/simplefactions/enums/GuildModifier.java
  • src/main/java/net/tfminecraft/simplefactions/guild/income/Ledger.java
  • src/main/java/net/tfminecraft/simplefactions/managers/inventory/InstallationBuildConfirm.java
  • src/main/java/net/tfminecraft/simplefactions/guild/hub/InfrastructurePreview.java
  • src/main/java/net/tfminecraft/simplefactions/managers/ProvinceManager.java
  • src/test/java/net/tfminecraft/simplefactions/guild/income/BranchIncomePreviewTest.java

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 8 remain after this review.


📝 Summary

Summary by CodeRabbit

  • Changes
    • Infrastructure-based terrain, spread, income and upkeep calculations have been removed. Trade and production now use terrain-based values.
    • Installation construction now proceeds immediately, without a confirmation screen; successful construction displays a result message.
    • Province map exports no longer include terrain or infrastructure fields related to infrastructure calculations.
    • Railway track provinces continue to refresh at a fixed five-minute interval.

Walkthrough

The infrastructure system was removed from configuration, guild modifiers, province calculations, income accounting, previews and map exports. Province trade and production now use terrain-based carry. The build confirmation menu was removed, and /faction construct invokes construction directly. Track refresh uses a fixed 300-second interval.

Changes

Infrastructure system removal

Layer / File(s) Summary
Remove infrastructure settings and branches
src/main/java/net/tfminecraft/simplefactions/Cache.java, src/main/java/net/tfminecraft/simplefactions/loaders/ConfigLoader.java, src/main/java/net/tfminecraft/simplefactions/enums/GuildModifier.java, src/main/resources/config.yml, src/main/resources/Guilds/branches.yml, src/test/java/net/tfminecraft/simplefactions/guild/GuildSavedInfrastructureBranchTest.java, src/test/java/net/tfminecraft/simplefactions/loaders/SupplyHubBranchesTest.java
Removed infrastructure settings, configuration loading, branch modifiers and the infrastructure branch. Tests check how saved infrastructure branch data is handled and confirm the bundled branch configuration.
Remove province infrastructure calculations
src/main/java/net/tfminecraft/simplefactions/managers/ProvinceManager.java, src/main/java/net/tfminecraft/simplefactions/map/infra/*, src/main/java/net/tfminecraft/simplefactions/map/provinces/Province.java, src/main/java/net/tfminecraft/simplefactions/map/Compiler.java, src/main/java/net/tfminecraft/simplefactions/SimpleFactions.java, src/main/java/net/tfminecraft/simplefactions/guild/hub/VehicleFrameworkTrackProvinces.java, src/main/java/net/tfminecraft/simplefactions/map/infra/TrackProvinceCache.java, src/test/java/net/tfminecraft/simplefactions/map/*, src/test/java/net/tfminecraft/simplefactions/loaders/ProvinceLoaderInfrastructureTest.java
Removed province infrastructure storage, recalculation, spread and effective-terrain calculations. Trade and production now use terrain-based carry. Province map exports no longer include terrain or infrastructure fields. Track-province refresh uses a fixed 300-second interval.
Remove infrastructure income and realm previews
src/main/java/net/tfminecraft/simplefactions/guild/income/*, src/main/java/net/tfminecraft/simplefactions/guild/income/BranchIncomePreview.java, src/main/java/net/tfminecraft/simplefactions/managers/inventory/BranchIncomePreviewService.java, src/main/java/net/tfminecraft/simplefactions/managers/inventory/GuildCreator.java, src/test/java/net/tfminecraft/simplefactions/guild/income/BranchIncomePreviewTest.java, src/test/java/net/tfminecraft/simplefactions/guild/hub/SupplyHubServiceTest.java, src/test/java/net/tfminecraft/simplefactions/managers/inventory/GuildCreatorIncomeLineTest.java
Removed infrastructure upkeep from ledger calculations and settlement. Branch income previews now estimate the specified guild without infrastructure-upkeep adjustments or realm-wide estimates.
Remove installation confirmation previews
src/main/java/net/tfminecraft/simplefactions/guild/hub/InfrastructureMenuCopy.java, src/main/java/net/tfminecraft/simplefactions/guild/hub/InfrastructurePreview.java, src/main/java/net/tfminecraft/simplefactions/managers/CommandManager.java, src/main/java/net/tfminecraft/simplefactions/managers/InventoryManager.java, src/main/java/net/tfminecraft/simplefactions/managers/inventory/InstallationBuildConfirm.java, src/test/java/net/tfminecraft/simplefactions/guild/hub/InfrastructureMenuCopyTest.java
Removed the installation build confirmation menu and its previews. The construct command now calls the installation handler immediately and sends its result. Inventory clicks no longer handle pending installation confirmations.

Priority: ➖ Normal

Estimated code review effort: 4 (Complex) | ~45 minutes

Change: Bug fix

Merge Risk: ⚪ Minimal · up to 4e84a

Saved financial records remain loadable, and no actionable merge-blocking issue was established. The PR is mergeable after normal checks.

Security Architecture Review

Security architecture risk: 🔵 Low · up to 4e84a

The checked construction paths retain leader and province-ownership controls, and removing infrastructure bonuses does not remove the remaining installation-access policy. No introduced authorization bypass was established. Downstream compatibility, rollback and exceptional recovery remain only partially verified.

Retained concerns
No architecture-level concerns identified.

Security review details

Security Blast Radius

  • inferred — The examined construction entrypoint limits a caller to the faction resolved from their current leader identity and an owned province at their player-derived location. The terrain change has broader economic scope because recalculation iterates the server's guilds, but it does not itself confer additional command authority.

Trust Boundaries and Controls

  • observed — Caller-controlled construction type and name pass through command parsing and handler validation. The handler rejects an existing pending build, unowned or invalid provinces, water construction, invalid port proximity and duplicate installation identifiers. The old confirmation rechecked leader identity before calling this same handler; the new command resolves current leader identity immediately.

Resilience and Maintainability Implications

  • observed — Track sampling failure substitutes an empty set. The cache records a changed sample before invoking graph refresh and recalculation. This ordering predates the PR; recovery after a downstream callback failure is not established by the inspected paths and is not treated as an introduced defect.

Hardening Proposals

  • proposed — For rollback containment, preserve a pre-upgrade saved-data backup and verify external map consumers against the reduced export before deployment. Forward-loading tests should not be treated as evidence that retired branch state can be restored.
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@Drefvelin
Drefvelin merged commit 016280a into main Oct 4, 2026
2 checks passed
@Drefvelin
Drefvelin deleted the it-4-remove-infrastructure branch October 4, 2026 19:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant