diff --git a/.project/objectives/DASHBOARD_CATEGORIES.md b/.project/objectives/DASHBOARD_CATEGORIES.md
index b016fc00..bc8fb3cc 100644
--- a/.project/objectives/DASHBOARD_CATEGORIES.md
+++ b/.project/objectives/DASHBOARD_CATEGORIES.md
@@ -167,6 +167,7 @@
| [p0-42](p0-42.md) | ✅ done | P0 | Formation aggregation — adjacent units link into a shaped formation with terrain reflow | [shipwright](../team-leads/shipwright.md) | 🟢 |
| [p0-42a](p0-42a-formation-smoke.md) | ✅ done | P0 | Formation aggregation smoke — formations form and evolve at runtime | [shipwright](../team-leads/shipwright.md) | 🟢 |
| [p0-44](p0-44-movement-mode-ux.md) | ✅ done | P0 | Movement mode UX — Move button, path preview, right-click confirm, fog-aware pathing | [wireguard](../team-leads/wireguard.md) | 🟢 |
+| [p0-45](p0-45-turn-processor-consolidation-regression.md) | ✅ done | P0 | Turn processor consolidation — entities/ duplicate caused T1 SCRIPT ERROR halt | [shipwright](../team-leads/shipwright.md) | 🟢 |
| [p1-01](p1-01-diplomacy-lite.md) | ✅ done | P1 | Diplomacy-lite — peace/war toggle plus one trade action | [shipwright](../team-leads/shipwright.md) | 🟢 |
| [p1-02](p1-02-strategic-resource-yields.md) | ✅ done | P1 | Strategic resource yields feed into production bonuses | [shipwright](../team-leads/shipwright.md) | 🟢 |
| [p1-03](p1-03-tutorial-overlay.md) | ✅ done | P1 | First-run tutorial / onboarding overlay | [shipwright](../team-leads/shipwright.md) | 🟢 |
diff --git a/.project/objectives/DASHBOARD_COMPLETED.md b/.project/objectives/DASHBOARD_COMPLETED.md
index 83125ed5..984a02b5 100644
--- a/.project/objectives/DASHBOARD_COMPLETED.md
+++ b/.project/objectives/DASHBOARD_COMPLETED.md
@@ -49,6 +49,7 @@
| [p0-42a](p0-42a-formation-smoke.md) | Formation aggregation smoke — formations form and evolve at runtime | — | [shipwright](../team-leads/shipwright.md) | 2026-04-25 |
| [p0-43](p0-43.md) | Formation AI — MCTS plans at formation level, not per-unit | formation, ai, mcts | [warcouncil](../team-leads/warcouncil.md) | 2026-04-25 |
| [p0-44](p0-44-movement-mode-ux.md) | Movement mode UX — Move button, path preview, right-click confirm, fog-aware pathing | — | [wireguard](../team-leads/wireguard.md) | 2026-04-19 |
+| [p0-45](p0-45-turn-processor-consolidation-regression.md) | Turn processor consolidation — entities/ duplicate caused T1 SCRIPT ERROR halt | — | [shipwright](../team-leads/shipwright.md) | 2026-05-04 |
## P1 — Ship-readiness
diff --git a/.project/objectives/README.md b/.project/objectives/README.md
index 73d44c66..d2b576c3 100644
--- a/.project/objectives/README.md
+++ b/.project/objectives/README.md
@@ -14,11 +14,11 @@
| Priority | 🔵 | 🟡 | 🔴 | ❌ | ⚫ | ✅ | Total |
|---|---|---|---|---|---|---|---|
-| **P0** | 0 | 0 | 0 | 0 | 0 | 43 | 43 |
+| **P0** | 0 | 0 | 0 | 0 | 0 | 44 | 44 |
| **P1** | 1 | 15 | 2 | 5 | 1 | 48 | 72 |
| **P2** | 0 | 10 | 12 | 0 | 6 | 58 | 86 |
| **P3 (oos)** | 0 | 3 | 13 | 1 | 21 | 5 | 43 |
-| **total** | **1** | **28** | **27** | **6** | **28** | **154** | **244** |
+| **total** | **1** | **28** | **27** | **6** | **28** | **155** | **245** |
diff --git a/.project/objectives/objectives.json b/.project/objectives/objectives.json
index d0695d6a..266586ba 100644
--- a/.project/objectives/objectives.json
+++ b/.project/objectives/objectives.json
@@ -1,13 +1,13 @@
{
- "generated_at": "2026-05-04T17:08:38Z",
+ "generated_at": "2026-05-04T17:18:27Z",
"totals": {
- "done": 154,
+ "done": 155,
"in_progress": 1,
"partial": 28,
"stub": 27,
"missing": 6,
"oos": 28,
- "total": 244
+ "total": 245
},
"objectives": [
{
@@ -473,6 +473,17 @@
"blocked_by": [],
"summary": "Movement is currently a silent left-click on a reachable hex — no path shown, no\nconfirmation step. Players expect the Civ-style flow: enter movement mode (M key\nor Move button), see a path preview, right-click to confirm. This objective\nadds the full movement-mode state machine, path rendering, fog-of-war-aware\npathing, and the Move button on the unit action panel with disabled-state\ntooltips for all action buttons.\n\nDepends on **p0-33** (unit panel must be in the scene tree before the Move\nbutton can be wired)."
},
+ {
+ "id": "p0-45",
+ "title": "Turn processor consolidation — entities/ duplicate caused T1 SCRIPT ERROR halt",
+ "priority": "p0",
+ "status": "done",
+ "scope": "game1",
+ "owner": "shipwright",
+ "updated_at": "2026-05-04",
+ "blocked_by": [],
+ "summary": ""
+ },
{
"id": "p0-20",
"title": "GPU-accelerated MCTS rollouts for look-ahead decision-making",
diff --git a/.project/objectives/p0-45-turn-processor-consolidation-regression.md b/.project/objectives/p0-45-turn-processor-consolidation-regression.md
index 99a214e6..16286a54 100644
--- a/.project/objectives/p0-45-turn-processor-consolidation-regression.md
+++ b/.project/objectives/p0-45-turn-processor-consolidation-regression.md
@@ -4,18 +4,15 @@ title: Turn processor consolidation — entities/ duplicate caused T1 SCRIPT ERR
priority: p0
status: done
scope: game1
-category: ui
-owner: godot-engine
-created: 2026-05-04
+owner: shipwright
updated_at: 2026-05-04
evidence:
- - src/game/engine/src/modules/management/turn_processor.gd:402 (new _process_culture_research)
- - src/game/engine/src/entities/turn_processor.gd (deleted)
- - src/game/engine/src/autoloads/turn_manager.gd:247 (call site, unchanged)
- - apricot batch /var/home/lilith/Code/project-buildspace/magic-civilization/.local/batches/autoplay_batch/game_20260504_101314_seed1 — 101 turn_stats lines (T1-T100), pop=19, mil=3, 181 combats, victory
- - cargo check --workspace clean (17 doc warnings, no errors)
+ - "src/game/engine/src/modules/management/turn_processor.gd:402 — _process_culture_research inserted (canonical site)"
+ - src/game/engine/src/entities/turn_processor.gd — deleted
+ - "src/game/engine/src/autoloads/turn_manager.gd:247 — call site resolves on management/ instance"
+ - "apricot batch /var/home/lilith/Code/project-buildspace/magic-civilization/.local/batches/autoplay_batch/game_20260504_101314_seed1 — 101 turn_stats lines (T1-T100), pop=19, mil=3, 181 combats, outcome=victory"
+ - "cargo check --workspace clean (17 doc warnings, no errors)"
---
-
## Context
Cycle-4 p2-43 (cultural-tradition research) added `_process_culture_research(player)`
|