feat(#56): War as a first-class state — declare/end ops, mutual-defense drag-in, relation sync #67

Merged
kamilkrzywda merged 1 commits from feat/56-war-as-state into master 2026-10-15 17:50:27 +02:00
Owner

Fixes #56

Fixes #56
kamilkrzywda added 1 commit 2026-10-15 17:47:20 +02:00
Promote the bare 'war' relation to a named War entity in GameState.wars:
- War: { id, sides[], declaredTurn, declaredDate?, aims?, status, front? }
- TurnResult.wars: { declare: WarDeclareOp[], end: WarEndOp[] }
- syncWarRelations: derive 'war' from active wars, fallback to 'hostile' on end
- Mutual-defense drag-in: belligerent allies added to sides (one level)
- Bare 'war' back-compat: never downgraded, never force-created
- Stub: empty wars (e2e unaffected); ~30 new unit tests

v0.33.0
kamilkrzywda scheduled this pull request to auto merge when all checks succeed 2026-10-15 17:50:25 +02:00
kamilkrzywda merged commit f45c01b8d6 into master 2026-10-15 17:50:27 +02:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OpenCode/History#67