fix(@projects/@magic-civilization): 🐛 update p1-24 status to partial

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Natalie 2026-04-25 18:54:32 -07:00
parent b25be795ee
commit aedb233173
4 changed files with 15 additions and 13 deletions

View file

@ -108,7 +108,7 @@
| [p1-21](p1-21-unit-patrol-orders.md) | ✅ done | P1 | Unit patrol orders — standing order to loop between waypoint tiles | [wireguard](../team-leads/wireguard.md) | 🟢 |
| [p1-22](p1-22-mcts-wall-clock-budget.md) | 🟡 partial | P1 | MCTS per-decision wall-clock budget — bound per-turn cost on huge maps | [warcouncil](../team-leads/warcouncil.md) | 🟢 |
| [p1-23](p1-23-stats-tracker-restore.md) | ✅ done | P1 | Restore StatsTracker — demographics overview broken in shipped builds | [shipwright](../team-leads/shipwright.md) | 🟢 |
| [p1-24](p1-24-windows-path-separator.md) | ❌ missing | P1 | ai_personalities.json fails to load from packed builds (all platforms) — pass JSON contents not path | [shipwright](../team-leads/shipwright.md) | 🟢 |
| [p1-24](p1-24-windows-path-separator.md) | 🟡 partial | P1 | ai_personalities.json fails to load from packed builds (all platforms) — pass JSON contents not path | [shipwright](../team-leads/shipwright.md) | 🟢 |
| [p2-01](p2-01-minimap-improvements.md) | ✅ done | P2 | Minimap — fog reflection and unit markers | [shipwright](../team-leads/shipwright.md) | 🟢 |
| [p2-02](p2-02-hud-tooltips.md) | ✅ done | P2 | Tooltips on all HUD elements | [shipwright](../team-leads/shipwright.md) | 🟢 |
| [p2-03](p2-03-hotkey-cheat-sheet.md) | ✅ done | P2 | Hotkey cheat sheet (F1 / ?) | [shipwright](../team-leads/shipwright.md) | 🟢 |

View file

@ -15,10 +15,10 @@
| Priority | 🔵 | 🟡 | 🔴 | ❌ | ⚫ | ✅ | Total |
|---|---|---|---|---|---|---|---|
| **P0** | 0 | 3 | 0 | 1 | 0 | 39 | 43 |
| **P1** | 0 | 3 | 0 | 9 | 1 | 22 | 35 |
| **P1** | 0 | 4 | 0 | 8 | 1 | 22 | 35 |
| **P2** | 0 | 4 | 0 | 1 | 0 | 17 | 22 |
| **P3 (oos)** | 0 | 0 | 0 | 0 | 17 | 0 | 17 |
| **total** | **0** | **10** | **0** | **11** | **18** | **78** | **117** |
| **total** | **0** | **11** | **0** | **10** | **18** | **78** | **117** |
</td><td valign='top' style='padding-left:2em'>
@ -50,7 +50,7 @@
| [p0-20](p0-20-gpu-mcts-rollouts.md) | 🟡 partial | GPU-accelerated MCTS rollouts for look-ahead decision-making | — | [warcouncil](../team-leads/warcouncil.md) | 2026-04-19 | 🟢 unblocked |
| [p1-05](p1-05-balance-tuning.md) | 🟡 partial | Balance tuning — pop_peak ≥30 median, worker improvements ≥8 min | — | [shipwright](../team-leads/shipwright.md) | 2026-04-25 | 🟢 unblocked |
| [p1-22](p1-22-mcts-wall-clock-budget.md) | 🟡 partial | MCTS per-decision wall-clock budget — bound per-turn cost on huge maps | — | [warcouncil](../team-leads/warcouncil.md) | 2026-04-25 | 🟢 unblocked |
| [p1-24](p1-24-windows-path-separator.md) | ❌ missing | ai_personalities.json fails to load from packed builds (all platforms) — pass JSON contents not path | — | [shipwright](../team-leads/shipwright.md) | 2026-04-25 | 🟢 unblocked |
| [p1-24](p1-24-windows-path-separator.md) | 🟡 partial | ai_personalities.json fails to load from packed builds (all platforms) — pass JSON contents not path | — | [shipwright](../team-leads/shipwright.md) | 2026-04-25 | 🟢 unblocked |
| [p2-16](p2-16-audio-assets.md) | ❌ missing | Audio assets — SFX + music .ogg files shipped | — | [asset-audio](../team-leads/asset-audio.md) | 2026-04-17 | 🟢 unblocked |
| [p2-22](p2-22-sprite-generation-pipeline.md) | ❌ missing | Sprite generation pipeline — runnable end-to-end | — | [asset-sprite](../team-leads/asset-sprite.md) | 2026-04-17 | 🟢 unblocked |
| [p2-23](p2-23-unit-sprites-dwarf-roster.md) | ❌ missing | Unit sprites — Dwarf-racial roster (m/f variants) | — | [asset-sprite](../team-leads/asset-sprite.md) | 2026-04-17 | 🟢 unblocked |

View file

@ -1,11 +1,11 @@
{
"generated_at": "2026-04-26T01:42:26Z",
"generated_at": "2026-04-26T01:49:45Z",
"totals": {
"done": 78,
"in_progress": 0,
"partial": 10,
"partial": 11,
"stub": 0,
"missing": 11,
"missing": 10,
"oos": 18,
"total": 117
},
@ -752,7 +752,7 @@
"id": "p1-24",
"title": "ai_personalities.json fails to load from packed builds (all platforms) — pass JSON contents not path",
"priority": "p1",
"status": "missing",
"status": "partial",
"scope": "game1",
"owner": "shipwright",
"updated_at": "2026-04-25",

View file

@ -2,7 +2,7 @@
id: p1-24
title: ai_personalities.json fails to load from packed builds (all platforms) — pass JSON contents not path
priority: p1
status: missing
status: partial
scope: game1
owner: shipwright
updated_at: 2026-04-25
@ -35,10 +35,12 @@ Option 1 recommended.
## Acceptance
- ❌ Add `scoring_weights_for_clan_json(clan_id, personalities_json)` to `GdMcTreeController` (api-gdext/src/ai.rs) that takes the JSON string, deserializes via the existing `mc_ai::evaluator::PersonalityDef` parser, and returns the same `ScoringWeights` JSON output. Keep the path variant temporarily for tests but mark deprecated.
- ❌ `ai_turn_bridge.gd:79` reads the file via `FileAccess.get_file_as_string("res://public/games/age-of-dwarves/data/ai_personalities.json")` once per turn (cache to avoid re-read), passes the JSON to the new Rust entry.
- ❌ Audit other `data_dir`-style joins in `api-gdext/src/` for the same bug (every Rust call that receives a Godot-string path and reads files via std::fs is broken in packed builds).
- ❌ Re-run wine smoke against the fixed Windows .exe; expect zero `Path not found` errors for ai_personalities.json. Same check for macOS .app smoke.
- ✓ Added `ScoringWeights::from_personality_json(id, json_str)` in `mc-ai/src/evaluator.rs:148` (refactored existing `from_personality` to delegate). 16 evaluator unit tests still green on apricot. (2026-04-25)
- ✓ Added `scoring_weights_for_clan_json(clan_id, personalities_json)` to `GdMcTreeController` in `api-gdext/src/ai.rs`. Path-based variant retained but documented as deprecated for packed builds. (2026-04-25)
- ✓ `ai_turn_bridge.gd` reads `ai_personalities.json` via `FileAccess.get_file_as_string("res://public/games/age-of-dwarves/data/ai_personalities.json")` (cached as `_ai_personalities_json_cache` static var, read once per process), passes the JSON to the new Rust entry. (2026-04-25)
- ✓ Linux .so + Windows .dll rebuilt on apricot with the new APIs (1m44s + 1m14s respectively). (2026-04-25)
- ❌ Audit other `data_dir`-style joins in `api-gdext/src/` for the same bug (every Rust call that receives a Godot-string path and reads files via std::fs is broken in packed builds). Likely candidates: any `from_X(data_dir)` callsite.
- ❌ Re-run wine smoke against a fresh Windows export to confirm zero `Path not found` errors for ai_personalities.json. Currently blocked on apricot disk-full — `.local/iter/*` is 11GB across past evidence runs and the export-staging step needs ~5GB free.
## Caller chain to inspect