fix(@projects/@magic-civilization): 🐛 update priority counts and stub counts

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
Natalie 2026-04-19 18:04:47 -07:00
parent 6092a3966c
commit fe45592e32
2 changed files with 10 additions and 10 deletions

View file

@ -15,10 +15,10 @@
| Priority | ✅ | 🟡 | 🔴 | ❌ | ⚫ | Total |
|---|---|---|---|---|---|---|
| **P0** | 33 | 6 | 0 | 0 | 0 | 39 |
| **P1** | 17 | 2 | 2 | 0 | 1 | 22 |
| **P1** | 18 | 2 | 1 | 0 | 1 | 22 |
| **P2** | 14 | 5 | 0 | 8 | 0 | 27 |
| **P3 (oos)** | 0 | 0 | 0 | 0 | 17 | 17 |
| **total** | **64** | **13** | **2** | **8** | **18** | **105** |
| **total** | **65** | **13** | **1** | **8** | **18** | **105** |
</td><td valign='top' style='padding-left:2em'>
@ -30,7 +30,7 @@
| [warcouncil](../team-leads/warcouncil.md) | 5 |
| [shipwright](../team-leads/shipwright.md) | 3 |
| [testwright](../team-leads/testwright.md) | 2 |
| [wireguard](../team-leads/wireguard.md) | 2 |
| [wireguard](../team-leads/wireguard.md) | 1 |
| [asset-audio](../team-leads/asset-audio.md) | 1 |
</td></tr></table>
@ -102,7 +102,7 @@
| [p1-17](p1-17-guide-next-auto-deploy.md) | ✅ done | Forgejo workflow auto-deploys dev guide on push to main | [tourguide](../team-leads/tourguide.md) | 2026-04-18 |
| [p1-18](p1-18-village-discovery-feedback.md) | ✅ done | Village discovery — world-map feedback (notification, reward popup, minimap ping) | [wireguard](../team-leads/wireguard.md) | 2026-04-19 |
| [p1-19](p1-19-tutorial-opt-in.md) | ✅ done | Tutorial opt-in — HUD button, disappears after turn 5, starts from Step 1 | [wireguard](../team-leads/wireguard.md) | 2026-04-19 |
| [p1-20](p1-20-unit-action-capability-registry.md) | 🔴 stub | Unit action capability registry — one source of truth for "what can this unit do right now?" | [wireguard](../team-leads/wireguard.md) | 2026-04-18 |
| [p1-20](p1-20-unit-action-capability-registry.md) | ✅ done | Unit action capability registry — one source of truth for "what can this unit do right now?" | [wireguard](../team-leads/wireguard.md) | 2026-04-19 |
| [p1-21](p1-21-unit-patrol-orders.md) | 🔴 stub | Unit patrol orders — standing order to loop between waypoint tiles | [wireguard](../team-leads/wireguard.md) | 2026-04-18 |
## P2 — Polish

View file

@ -1,10 +1,10 @@
{
"generated_at": "2026-04-20T00:53:52Z",
"generated_at": "2026-04-20T00:59:45Z",
"totals": {
"missing": 8,
"done": 65,
"partial": 13,
"stub": 2,
"done": 64,
"missing": 8,
"stub": 1,
"oos": 18,
"total": 105
},
@ -603,10 +603,10 @@
"id": "p1-20",
"title": "Unit action capability registry — one source of truth for \"what can this unit do right now?\"",
"priority": "p1",
"status": "stub",
"status": "done",
"scope": "game1",
"owner": "wireguard",
"updated_at": "2026-04-18",
"updated_at": "2026-04-19",
"summary": "The game has no unified answer to *\"what actions can unit U take on turn T in\nstate S?\"* Today the unit panel (`unit_panel.gd:19-40`) hardcodes three\nbuttons — Fortify, Skip, Found City — and decides visibility with bespoke\nper-unit booleans scattered across the JSON (`can_found_city`,\n`can_build_improvements`, `flags: [\"ranged\"]`) and ad-hoc GDScript predicates\n(`is_civilian()`). Meanwhile `mc-ai/src/tactical/movement.rs` enumerates\nmoves and attacks but has no registry for non-motion actions. UI and AI have\nno shared truth.\n\nEvery future action — patrol (p1-21), siege pack/deploy, pillage, embark,\nbuild-road, heal, upgrade — compounds that debt by adding another hardcoded\nbutton plus its own scattered check. A siege engine in `packed` state can\nmove but not bombard; in `deployed` state can bombard but not move. Patrol\nhas the same shape (idle ↔ patrolling, with auto-cancel). Fortify has the\nsame shape. Without a registry, each state gate becomes a new bespoke flag.\n\nThis objective lands the foundation: a JSON-driven capability declaration,\na Rust `ActionKind` enum with a single `legal_actions(unit, state)` query,\nand a unit-panel refactor that renders buttons from that list. **Behavior\ndoes not change** — the three existing actions are folded in with no\nsemantic change. The payoff is every subsequent action objective (patrol,\nsiege, pillage, embark, ...) ships as one enum variant + one JSON keyword\nmapping + one handler, with no UI or AI scaffolding to re-invent."
},
{