# Port main's strategy changes into cloud's lib/strategy split · dara/icarus

[View on GitCafe](https://git.cafe/dara/icarus/commit/a4131f6a1944be4f00d0e8203103111323bf1be6)

Repository: [dara/icarus](https://git.cafe/dara/icarus)

Visibility: public

Requested revision: a4131f6a1944be4f00d0e8203103111323bf1be6

Requested commit: a4131f6a1944be4f00d0e8203103111323bf1be6

Commit: a4131f6a1944be4f00d0e8203103111323bf1be6

Tree: d58e88ae876b7678831c536ff6e688338359973d

Author: Dara Adedeji

Committer: Dara Adedeji

## Message

```
Port main's strategy changes into cloud's lib/strategy split

Cloud moved migration, page loading and page switching out of
strategy_provider.dart; main kept changing them there. Re-applied:

- StrategyMigrator: lineup graph and sunset scale migrations, agent
  weapon migration, forced migrations by original version, the
  finalize-at-current-version rule, and the graph shift in the 16:9
  world migration.
- Page data carries a LineUpGraph (StrategyEditorPageData,
  applyStrategyEditorPageData, local page source flush/load).
- Page transitions route agents over the navigation mesh when world
  geometry is enabled (strategy_page_session_provider).
- createNewStrategy takes the picked map and auto-name for cloud
  creates too, and returns the StrategyData main's navigator expects.
- switchSide(allPages:) patches every other page's side through the
  Convex op queue for cloud strategies; local strategies keep main's
  Hive path. Page-edit capability gates both.
- Unsaved tracking listens to the graph instead of legacy groups.

Cloud lineups stay on the lineupGroup payload (the Convex contract is
unchanged): sync, upload, export and hydration go through the graph's
legacy group projection. Each site is marked TODO(lineupGraph). Live
sync treats a missing agent `weapon` as none when comparing payloads,
matching the existing showVisionCone default, so hydrating older cloud
data never authors a rewrite.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

```

## Parents

- [6e6fb3d87407c2d1fe244749c14b216609916d65](https://git.cafe/dara/icarus/commit/6e6fb3d87407c2d1fe244749c14b216609916d65?format=markdown)

[Source at this commit](https://git.cafe/dara/icarus/tree/a4131f6a1944be4f00d0e8203103111323bf1be6?format=markdown)
