From c9a4b474b4540079ac32e90ab7b4dcd05c09a4ea Mon Sep 17 00:00:00 2001 From: Jonathan Bourdon Date: Mon, 6 Apr 2026 17:13:47 -0400 Subject: [PATCH] Ignore local Codex state and remove worksheet --- .gitignore | 2 + worksheet.md | 137 --------------------------------------------------- 2 files changed, 2 insertions(+), 137 deletions(-) delete mode 100644 worksheet.md diff --git a/.gitignore b/.gitignore index b165f9e..b5c85a8 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,5 @@ pnpm-debug.log* .env .env.* !.env.example + +.codex diff --git a/worksheet.md b/worksheet.md deleted file mode 100644 index dd150c9..0000000 --- a/worksheet.md +++ /dev/null @@ -1,137 +0,0 @@ -# Pre-Commit Review Worksheet - -This worksheet covers the uncommitted work from the long session after `0bb72be`. - -## 1. World Bootstrap, Scenario, And Generation - -- [ ] Confirm the backend now starts from the empty scenario and still wires auth/player-state services correctly. - Review: [Program.cs](/home/jbourdon/repos/space-game/apps/backend/Program.cs#L12), [Program.cs](/home/jbourdon/repos/space-game/apps/backend/Program.cs#L69), [Program.cs](/home/jbourdon/repos/space-game/apps/backend/Program.cs#L97), [Program.cs](/home/jbourdon/repos/space-game/apps/backend/Program.cs#L132) -- [ ] Confirm the world-build pipeline is now split into explicit phases instead of a single muddy bootstrap path. - Review: [WorldBuilder.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Scenario/WorldBuilder.cs#L4), [WorldTopologyBuilder.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Scenario/WorldTopologyBuilder.cs#L5), [ScenarioValidationService.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Scenario/ScenarioValidationService.cs#L5), [ScenarioContentBuilder.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Scenario/ScenarioContentBuilder.cs#L9), [WorldRuntimeAssembler.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Scenario/WorldRuntimeAssembler.cs#L5) -- [ ] Confirm known systems are generation input now, not hardcoded forced inclusions. - Review: [WorldGenerationOptions.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Simulation/WorldGenerationOptions.cs#L7), [SystemGenerationService.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Scenario/SystemGenerationService.cs#L29), [SystemGenerationService.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Scenario/SystemGenerationService.cs#L234), [StaticDataProvider.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Bootstrap/StaticDataProvider.cs#L35) - -## 2. Static Data Canonicalization And Ship Model Cleanup - -- [ ] Confirm static data now loads the promoted `shared/data` files with enum-string deserialization. - Review: [StaticDataProvider.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Bootstrap/StaticDataProvider.cs#L19), [StaticDataProvider.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Bootstrap/StaticDataProvider.cs#L27), [StaticDataProvider.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Bootstrap/StaticDataProvider.cs#L30) -- [ ] Confirm `ShipDefinition` is now using the X4 domain model directly. - Review: [WorldDefinitions.cs](/home/jbourdon/repos/space-game/apps/backend/Definitions/WorldDefinitions.cs#L372), [WorldDefinitions.cs](/home/jbourdon/repos/space-game/apps/backend/Definitions/WorldDefinitions.cs#L390), [WorldDefinitions.cs](/home/jbourdon/repos/space-game/apps/backend/Definitions/WorldDefinitions.cs#L438) -- [ ] Confirm the old compatibility baggage is gone or reduced. - Review: [WorldDefinitions.cs](/home/jbourdon/repos/space-game/apps/backend/Definitions/WorldDefinitions.cs#L472), [WorldDefinitions.cs](/home/jbourdon/repos/space-game/apps/backend/Definitions/WorldDefinitions.cs#L474), [WorldDefinitions.cs](/home/jbourdon/repos/space-game/apps/backend/Definitions/WorldDefinitions.cs#L479) -- [ ] Confirm ship classification and movement capability checks now use explicit helpers instead of fake capability bags or fake role taxonomies. - Review: [KnownShipTaxonomy.cs](/home/jbourdon/repos/space-game/apps/backend/Shared/Runtime/KnownShipTaxonomy.cs#L3), [SimulationRuntimeSupport.cs](/home/jbourdon/repos/space-game/apps/backend/Shared/Runtime/SimulationRuntimeSupport.cs#L6), [SimulationRuntimeSupport.cs](/home/jbourdon/repos/space-game/apps/backend/Shared/Runtime/SimulationRuntimeSupport.cs#L12), [SimulationRuntimeSupport.cs](/home/jbourdon/repos/space-game/apps/backend/Shared/Runtime/SimulationRuntimeSupport.cs#L182) - -## 3. Auth, Versioning, And Player-State Separation - -- [ ] Confirm local auth is wired with JWT access/refresh and no longer depends on the old single-player world-owned faction state. - Review: [AuthService.cs](/home/jbourdon/repos/space-game/apps/backend/Auth/Simulation/AuthService.cs#L3), [AuthService.cs](/home/jbourdon/repos/space-game/apps/backend/Auth/Simulation/AuthService.cs#L37), [PostgresAuthRepository.cs](/home/jbourdon/repos/space-game/apps/backend/Auth/Simulation/PostgresAuthRepository.cs#L5), [HttpContextPlayerIdentityResolver.cs](/home/jbourdon/repos/space-game/apps/backend/Auth/Simulation/HttpContextPlayerIdentityResolver.cs#L6) -- [ ] Confirm forgot/reset password is wired through the delivery seam rather than hardcoded email behavior. - Review: [AuthService.cs](/home/jbourdon/repos/space-game/apps/backend/Auth/Simulation/AuthService.cs#L58), [AuthService.cs](/home/jbourdon/repos/space-game/apps/backend/Auth/Simulation/AuthService.cs#L74), [IPasswordResetDelivery.cs](/home/jbourdon/repos/space-game/apps/backend/Auth/Simulation/IPasswordResetDelivery.cs#L5), [DevPasswordResetDelivery.cs](/home/jbourdon/repos/space-game/apps/backend/Auth/Simulation/DevPasswordResetDelivery.cs#L5) -- [ ] Confirm dev accounts and roles are seeded only through the dev seeder. - Review: [DevAuthSeeder.cs](/home/jbourdon/repos/space-game/apps/backend/Auth/Simulation/DevAuthSeeder.cs#L12), [Program.cs](/home/jbourdon/repos/space-game/apps/backend/Program.cs#L112), [Program.cs](/home/jbourdon/repos/space-game/apps/backend/Program.cs#L132) -- [ ] Confirm version reporting exists and is reviewable during local backend restarts. - Review: [AppVersionService.cs](/home/jbourdon/repos/space-game/apps/backend/Shared/Runtime/AppVersionService.cs#L6), [GetVersionHandler.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Api/GetVersionHandler.cs#L5) -- [ ] Confirm player state is no longer owned by `SimulationWorld` and now lives behind a store/projection boundary. - Review: [IPlayerStateStore.cs](/home/jbourdon/repos/space-game/apps/backend/PlayerFaction/Simulation/IPlayerStateStore.cs#L3), [PlayerStateStore.cs](/home/jbourdon/repos/space-game/apps/backend/PlayerFaction/Simulation/PlayerStateStore.cs#L3), [PlayerFactionProjectionService.cs](/home/jbourdon/repos/space-game/apps/backend/PlayerFaction/Simulation/PlayerFactionProjectionService.cs#L3), [WorldService.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Simulation/WorldService.cs#L18) - -## 4. GM / Dev Loop - -- [ ] Confirm the GM account can mutate an empty world without requiring a fake player scenario. - Review: [WorldService.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Simulation/WorldService.cs#L262), [WorldService.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Simulation/WorldService.cs#L287), [WorldService.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Simulation/WorldService.cs#L326) -- [ ] Confirm direct ship control now works for GM as well as player-owned ships. - Review: [WorldService.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Simulation/WorldService.cs#L98), [WorldService.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Simulation/WorldService.cs#L115), [WorldService.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Simulation/WorldService.cs#L131) -- [ ] Confirm `Mine Resource` validation is enforced at enqueue time and uses the richer cargo model. - Review: [WorldService.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Simulation/WorldService.cs#L552), [WorldService.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Simulation/WorldService.cs#L570), [WorldService.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Simulation/WorldService.cs#L775) - -## 5. Viewer Auth, Landing, And Dev UX - -- [ ] Confirm the viewer is gated behind auth and boots into the landing page until a session exists. - Review: [App.vue](/home/jbourdon/repos/space-game/apps/viewer/src/App.vue#L107), [AuthLandingPage.vue](/home/jbourdon/repos/space-game/apps/viewer/src/components/AuthLandingPage.vue#L101), [AuthSessionPanel.vue](/home/jbourdon/repos/space-game/apps/viewer/src/components/AuthSessionPanel.vue#L23) -- [ ] Confirm auth session persistence and GM access checks are centralized. - Review: [authStore.ts](/home/jbourdon/repos/space-game/apps/viewer/src/ui/stores/authStore.ts#L12), [authStore.ts](/home/jbourdon/repos/space-game/apps/viewer/src/ui/stores/authStore.ts#L15), [authStore.ts](/home/jbourdon/repos/space-game/apps/viewer/src/ui/stores/authStore.ts#L19) -- [ ] Confirm the new viewer shell includes the entity list, inspector, and right-click order context menu. - Review: [App.vue](/home/jbourdon/repos/space-game/apps/viewer/src/App.vue#L140), [App.vue](/home/jbourdon/repos/space-game/apps/viewer/src/App.vue#L156), [App.vue](/home/jbourdon/repos/space-game/apps/viewer/src/App.vue#L275), [viewerScene.ts](/home/jbourdon/repos/space-game/apps/viewer/src/ui/stores/viewerScene.ts#L4), [viewerOrderContextMenu.ts](/home/jbourdon/repos/space-game/apps/viewer/src/ui/stores/viewerOrderContextMenu.ts#L13) -- [ ] Confirm the inspector now mixes read-only state with actionable ship controls. - Review: [ViewerEntityInspectorPanel.vue](/home/jbourdon/repos/space-game/apps/viewer/src/components/ViewerEntityInspectorPanel.vue#L103), [ViewerEntityInspectorPanel.vue](/home/jbourdon/repos/space-game/apps/viewer/src/components/ViewerEntityInspectorPanel.vue#L320), [ViewerEntityInspectorPanel.vue](/home/jbourdon/repos/space-game/apps/viewer/src/components/ViewerEntityInspectorPanel.vue#L408), [ViewerEntityInspectorPanel.vue](/home/jbourdon/repos/space-game/apps/viewer/src/components/ViewerEntityInspectorPanel.vue#L495) -- [ ] Confirm the right-click menu respects GM access and issues direct orders rather than changing behaviors. - Review: [ViewerShipOrderContextMenu.vue](/home/jbourdon/repos/space-game/apps/viewer/src/components/ViewerShipOrderContextMenu.vue#L53), [ViewerShipOrderContextMenu.vue](/home/jbourdon/repos/space-game/apps/viewer/src/components/ViewerShipOrderContextMenu.vue#L149), [ViewerShipOrderContextMenu.vue](/home/jbourdon/repos/space-game/apps/viewer/src/components/ViewerShipOrderContextMenu.vue#L224) -- [ ] Confirm the GM window supports faction, ship, and station spawning. - Review: [api.ts](/home/jbourdon/repos/space-game/apps/viewer/src/api.ts#L132), [api.ts](/home/jbourdon/repos/space-game/apps/viewer/src/api.ts#L140), [api.ts](/home/jbourdon/repos/space-game/apps/viewer/src/api.ts#L148), [GmOpsWindow.vue](/home/jbourdon/repos/space-game/apps/viewer/src/components/gm/GmOpsWindow.vue#L663), [GmOpsWindow.vue](/home/jbourdon/repos/space-game/apps/viewer/src/components/gm/GmOpsWindow.vue#L699) - -## 6. Ship Orders, Behaviors, Catalog, And AI Refactor - -- [ ] Confirm the automation catalog is now the central behavior/order vocabulary and is exposed to the viewer. - Review: [ShipAutomationCatalog.cs](/home/jbourdon/repos/space-game/apps/backend/Shared/Runtime/ShipAutomationCatalog.cs#L59), [GetShipAutomationCatalogHandler.cs](/home/jbourdon/repos/space-game/apps/backend/Ships/Api/GetShipAutomationCatalogHandler.cs#L5) -- [ ] Confirm the queue-backed model is now the main AI path: emergency plan, sync managed behavior orders, build order plan, then only fallback to idle/blocked behavior plans. - Review: [ShipAiService.cs](/home/jbourdon/repos/space-game/apps/backend/Ships/AI/ShipAiService.cs#L40), [ShipAiService.cs](/home/jbourdon/repos/space-game/apps/backend/Ships/AI/ShipAiService.cs#L48), [ShipAiService.cs](/home/jbourdon/repos/space-game/apps/backend/Ships/AI/ShipAiService.cs#L74), [ShipAiService.Planning.Behaviors.cs](/home/jbourdon/repos/space-game/apps/backend/Ships/AI/ShipAiService.Planning.Behaviors.cs#L8) -- [ ] Confirm the old parallel `Build*BehaviorPlan(...)` path is gone for migrated behaviors. - Review: [ShipAiService.BehaviorQueue.cs](/home/jbourdon/repos/space-game/apps/backend/Ships/AI/ShipAiService.BehaviorQueue.cs#L25), [ShipAiService.BehaviorQueue.cs](/home/jbourdon/repos/space-game/apps/backend/Ships/AI/ShipAiService.BehaviorQueue.cs#L53), [ShipAiService.Planning.Orders.cs](/home/jbourdon/repos/space-game/apps/backend/Ships/AI/ShipAiService.Planning.Orders.cs#L69) -- [ ] Confirm the internal managed behavior orders were introduced intentionally and are cataloged. - Review: [SimulationKinds.cs](/home/jbourdon/repos/space-game/apps/backend/Shared/Runtime/SimulationKinds.cs#L177), [SimulationKinds.cs](/home/jbourdon/repos/space-game/apps/backend/Shared/Runtime/SimulationKinds.cs#L179), [SimulationKinds.cs](/home/jbourdon/repos/space-game/apps/backend/Shared/Runtime/SimulationKinds.cs#L180), [ShipAutomationCatalog.cs](/home/jbourdon/repos/space-game/apps/backend/Shared/Runtime/ShipAutomationCatalog.cs#L115) -- [ ] Confirm `ShipAiService` was split and moved to `Ships/AI` without changing the external orchestration contract. - Review: [ShipAiService.cs](/home/jbourdon/repos/space-game/apps/backend/Ships/AI/ShipAiService.cs#L7), [ShipAiService.BehaviorQueue.cs](/home/jbourdon/repos/space-game/apps/backend/Ships/AI/ShipAiService.BehaviorQueue.cs#L25), [ShipAiService.Planning.Orders.cs](/home/jbourdon/repos/space-game/apps/backend/Ships/AI/ShipAiService.Planning.Orders.cs#L10) - -## 7. Suggested Final Sanity Pass Before Commit - -- [ ] Build backend: `dotnet build apps/backend/SpaceGame.Api.csproj` -- [ ] Build viewer: `npm run build` in `apps/viewer` -- [ ] Smoke test with `gm/gm`: - create faction - spawn station - spawn miner - verify the inspector shows direct orders above the behavior divider -- [ ] Smoke test an empty restart: - `/api/world` returns an empty world - `/api/version` returns current version info - `/api/player-faction` behaves via auth/player-state store rather than a world-owned player faction - -## 8. Pending Work (Non-Blocking For This Commit) - -- [ ] Do a systematic live validation pass for all behaviors/orders now marked `Supported`. - Focus review: [ShipAutomationCatalog.cs](/home/jbourdon/repos/space-game/apps/backend/Shared/Runtime/ShipAutomationCatalog.cs#L59), [ShipAiService.cs](/home/jbourdon/repos/space-game/apps/backend/Ships/AI/ShipAiService.cs#L40) -- [ ] Continue the viewer control-surface polish. - Focus review: [ViewerEntityInspectorPanel.vue](/home/jbourdon/repos/space-game/apps/viewer/src/components/ViewerEntityInspectorPanel.vue#L408), [ViewerShipOrderContextMenu.vue](/home/jbourdon/repos/space-game/apps/viewer/src/components/ViewerShipOrderContextMenu.vue#L149), [viewer.css](/home/jbourdon/repos/space-game/apps/viewer/src/styles/viewer.css#L1) -- [ ] Revisit the long-term ship AI execution model. - The current queue-backed architecture is coherent, but it still runs through subtask plans internally. - Focus review: [ShipAiService.Planning.Behaviors.cs](/home/jbourdon/repos/space-game/apps/backend/Ships/AI/ShipAiService.Planning.Behaviors.cs#L8), [ShipAiService.Planning.Orders.cs](/home/jbourdon/repos/space-game/apps/backend/Ships/AI/ShipAiService.Planning.Orders.cs#L69), [ShipAiService.Execution.cs](/home/jbourdon/repos/space-game/apps/backend/Ships/AI/ShipAiService.Execution.cs#L1) -- [ ] Revisit the celestial/orbital hierarchy model. - The runtime currently has a flat celestial list with `ParentNodeId`, but orbital updates are still handled by special-case loops instead of a generic parent-first hierarchy pass. - Desired direction: keep a flat ordered list, but compute child positions from parent-relative orbital data in one forward pass. - Focus review: [SpatialBuilder.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Scenario/SpatialBuilder.cs#L39), [SpatialRuntimeModels.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Runtime/SpatialRuntimeModels.cs#L26), [OrbitalStateUpdater.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Simulation/OrbitalStateUpdater.cs#L170), [Celestial.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Contracts/Celestial.cs#L65) -- [ ] Revisit scenario-authored ship automation. - `ScenarioDefinition.PatrolRoutes` is too coarse; scenario ships should eventually be able to author their own default behavior and parameters directly. - Open question: whether scenarios should also be allowed to author an initial order queue, not only a default behavior. - Desired direction: remove top-level patrol-route bootstrap and move authored automation closer to ship formations. - Focus review: [ScenarioDefinition](/home/jbourdon/repos/space-game/apps/backend/Definitions/WorldDefinitions.cs#L559), [PatrolRouteDefinition](/home/jbourdon/repos/space-game/apps/backend/Definitions/WorldDefinitions.cs#L590), [ScenarioContentBuilder.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Scenario/ScenarioContentBuilder.cs#L23), [ScenarioContentBuilder.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Scenario/ScenarioContentBuilder.cs#L218) -- [ ] Revisit behavior composition over internal pseudo-orders. - The shared queue model is in place, but some behaviors still compile to internal executable orders like `mine-and-deliver-run`, `supply-fleet-run`, and `salvage-run`. - Desired direction: higher-level behaviors should prefer composing a small set of real basic orders rather than relying on behavior-only executable order kinds. - Focus review: [ShipAiService.BehaviorQueue.cs](/home/jbourdon/repos/space-game/apps/backend/Ships/AI/ShipAiService.BehaviorQueue.cs#L53), [ShipAiService.Planning.Orders.cs](/home/jbourdon/repos/space-game/apps/backend/Ships/AI/ShipAiService.Planning.Orders.cs#L69), [SimulationKinds.cs](/home/jbourdon/repos/space-game/apps/backend/Shared/Runtime/SimulationKinds.cs#L177), [ShipAutomationCatalog.cs](/home/jbourdon/repos/space-game/apps/backend/Shared/Runtime/ShipAutomationCatalog.cs#L115) -- [ ] Revisit the procedural generation dependency on known systems. - `SystemGenerationService` still requires at least one known system because known systems are being used both as selectable authored systems and as templates for generated systems. - Desired direction: procedural generation should be able to work with `UseKnownSystems = false` and an empty known-system pool. - Focus review: [SystemGenerationService.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Scenario/SystemGenerationService.cs#L16), [SystemGenerationService.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Scenario/SystemGenerationService.cs#L25), [SystemGenerationService.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Scenario/SystemGenerationService.cs#L29) -- [ ] Revisit the production/dependency graph boundary. - `ProductionGraphBuilder` currently models ware and ship production, while module construction lives separately in `ModuleRecipes`. - Desired direction: module construction should eventually be represented in the same dependency graph, because station AI ultimately answers the same upstream-input question for production and module building. - Focus review: [ProductionGraphBuilder.cs](/home/jbourdon/repos/space-game/apps/backend/Industry/Planning/ProductionGraphBuilder.cs#L5), [StaticDataProvider.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Bootstrap/StaticDataProvider.cs#L33), [StaticDataProvider.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Bootstrap/StaticDataProvider.cs#L72), [StaticDataProvider.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Bootstrap/StaticDataProvider.cs#L89) -- [ ] Revisit the ship classifier helpers in `SimulationRuntimeSupport`. - `ShipPurpose` is now part of `ShipDefinition`, but helpers like `IsMiningShip`, `IsTransportShip`, `IsConstructionShip`, and `IsMilitaryShip` still reason mostly from `ShipType`. - Desired direction: use `ShipPurpose` as the primary role signal in those helpers, and use `ShipType` only for refinements where needed. - Focus review: [ShipPurpose](/home/jbourdon/repos/space-game/apps/backend/Definitions/WorldDefinitions.cs#L372), [ShipDefinition.Purpose](/home/jbourdon/repos/space-game/apps/backend/Definitions/WorldDefinitions.cs#L449), [SimulationRuntimeSupport.cs](/home/jbourdon/repos/space-game/apps/backend/Shared/Runtime/SimulationRuntimeSupport.cs#L12) -- [ ] Revisit `GetTotalCargoCapacity()` and AI cargo assumptions. - If ships can support multiple cargo kinds, AI should use the relevant cargo capacity for the current job instead of the total capacity across unrelated bays. - Example: a mining ship with a dedicated fuel bay should not treat fuel storage as mined-ore capacity. - Desired direction: remove or reduce `GetTotalCargoCapacity()` usage in AI paths that really need per-cargo-kind reasoning. - Focus review: [ShipDefinition cargo helpers](/home/jbourdon/repos/space-game/apps/backend/Definitions/WorldDefinitions.cs#L472), [SimulationRuntimeSupport.cs](/home/jbourdon/repos/space-game/apps/backend/Shared/Runtime/SimulationRuntimeSupport.cs#L182), [ShipAiService.Planning.Orders.cs](/home/jbourdon/repos/space-game/apps/backend/Ships/AI/ShipAiService.Planning.Orders.cs#L170), [ShipAiService.Execution.cs](/home/jbourdon/repos/space-game/apps/backend/Ships/AI/ShipAiService.Execution.cs#L445) -- [ ] Revisit the auth/account architecture boundary. - The current auth stack is custom (repository, password flow, JWT issuance, reset flow) rather than using the more conventional ASP.NET Core Identity model. - Desired direction: make an explicit architectural decision later about whether to keep owning this custom stack or align with the standard .NET Identity approach before external-provider growth. - Focus review: [AuthService.cs](/home/jbourdon/repos/space-game/apps/backend/Auth/Simulation/AuthService.cs#L3), [PostgresAuthRepository.cs](/home/jbourdon/repos/space-game/apps/backend/Auth/Simulation/PostgresAuthRepository.cs#L5), [HttpContextPlayerIdentityResolver.cs](/home/jbourdon/repos/space-game/apps/backend/Auth/Simulation/HttpContextPlayerIdentityResolver.cs#L6), [Program.cs](/home/jbourdon/repos/space-game/apps/backend/Program.cs#L65) -- [ ] Revisit the runtime/domain mutation boundary for ships. - Ship mutations like enqueueing orders, removing direct orders, and updating default behavior should eventually live closer to a focused ship-domain service rather than being split across `WorldService` and `PlayerFactionService`. - Desired direction: keep runtime ship data compact and cache-friendly, but move ship mutation logic toward data-oriented ship services operating over the ship collection, instead of drifting into an anemic app-service model. - Focus review: [WorldService.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Simulation/WorldService.cs#L98), [WorldService.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Simulation/WorldService.cs#L131), [PlayerFactionService.cs](/home/jbourdon/repos/space-game/apps/backend/PlayerFaction/Simulation/PlayerFactionService.cs#L45), [ShipAiService.cs](/home/jbourdon/repos/space-game/apps/backend/Ships/AI/ShipAiService.cs#L7) -- [ ] Expand GM/entity editing beyond the current bootstrap loop. - Focus review: [WorldService.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Simulation/WorldService.cs#L262), [WorldService.cs](/home/jbourdon/repos/space-game/apps/backend/Universe/Simulation/WorldService.cs#L326), [GmOpsWindow.vue](/home/jbourdon/repos/space-game/apps/viewer/src/components/gm/GmOpsWindow.vue#L699)