# Keep agents and abilities newer than 3.2.3 out of legacy page slots · dara/icarus

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

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

Visibility: public

Requested revision: 8477f47619988ba448875cfc2d953727260faa10

Requested commit: 8477f47619988ba448875cfc2d953727260faa10

Commit: 8477f47619988ba448875cfc2d953727260faa10

Tree: 9b54d0eab88b587645885b0681afcde977761b19

Author: Dara Adedeji

Committer: Dara Adedeji

## Message

```
Keep agents and abilities newer than 3.2.3 out of legacy page slots

3.2.3 decodes an unknown AgentType as Jett and resolves an ability with
`agents[type].abilities[index]`. A Miks ultimate (index 4) in legacy
slot 5 or 11 therefore threw RangeError and failed the whole strategy;
Miks agents and abilities 0-3 loaded as Jett's.

- A frozen table of 3.2.3's agents and ability counts (four each, Astra
  five) decides what the legacy slots may hold. Agents (4), abilities (5)
  and legacy lineups (11) leave out anything 3.2.3 cannot resolve to the
  right agent.
- New abilities JSON mirror at StrategyPage field 20, read in preference
  to slot 5, so this build loses nothing.
- Audit: Miks is the only agent added since 3.2.3 and every other agent's
  ability count is unchanged; the table check covers future agents.

The rollback test now decodes with 3.2.3's real AgentType mapping and
AbilityInfo lookup (from the tag) instead of a field bag. It writes every
ability of every current agent and asserts each legacy entry resolves to
its own agent or is absent, with a control proving a raw Miks ultimate
throws.

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

```

## Parents

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

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