Problem
The split path has accounting inconsistencies: stats are updated even when a split doesn't produce a valid (>= MIN_TERRITORY_SIZE) polygon in some branches; total_territories_owned semantics (currently-owned vs lifetime) are ambiguous across split events; and the 'split - retained portion' history row attributes previous_owner_id in a way that's easy to misread. See app/Actions/Territory/ProcessActivityConquestAction.ts (split branch + updateConquestStats).
Acceptance
- Only mutate stats when the corresponding territory create/update succeeds (transactional).
- Clarify and document owned-count semantics; fix double-counting on splits.
- Tests for full-takeover, partial-split, and below-threshold cases.