docs(@projects): ✓ update p1-44c followup objective docs
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
parent
a5da3bea30
commit
0cb76bfb35
1 changed files with 28 additions and 12 deletions
|
|
@ -9,6 +9,8 @@ parent: p1-44
|
|||
evidence:
|
||||
- src/game/engine/scenes/city/city_screen.gd — _refresh_building_queues + _make_building_queue_panel added (cycle 35)
|
||||
- src/game/engine/tests/unit/test_p1_44c_per_building_ui.gd — 5 GUT headless tests (cycle 35)
|
||||
- src/simulator/api-gdext/src/lib.rs:2225 — get_building_queues exposes BTreeMap queues to GDScript (f52e20bff, cycle 36)
|
||||
- src/simulator/crates/mc-ai/src/tactical/production.rs:202 — building_origin_for routes gated units to producer queue (f52e20bff, cycle 36)
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
|
@ -24,8 +26,11 @@ Phase B tightest-scope cut.
|
|||
- ✗ `city.gd::production_queue` retired in GDScript: replaced by
|
||||
`construction_queue` (buildings + upgrades) + `building_queues` dict per
|
||||
producer building. Bridge updated to consume the Rust BTreeMap shape.
|
||||
**NOTE**: GDExt bridge does not yet expose `queues` field on city — needs
|
||||
api-gdext extension (simulator-infra domain, cycle 36 target).
|
||||
**NOTE**: GDExt bridge NOW exposes `get_building_queues()` in api-gdext
|
||||
(f52e20bff, cycle 36, `src/simulator/api-gdext/src/lib.rs:2225`). The
|
||||
remaining work is the GDScript-side retirement of `production_queue: Array`
|
||||
in `src/game/engine/src/entities/city.gd:57` and wiring the bridge
|
||||
accessors into city entity + dispatch.
|
||||
- ✓ `city_screen.gd` rework: `_refresh_building_queues()` + `_make_building_queue_panel()`
|
||||
added. Reads `city.get("queues", {})` and creates one PanelContainer per producer
|
||||
building in `%BuildingQueuesContainer` (falls back silently when bridge field absent).
|
||||
|
|
@ -34,20 +39,25 @@ Phase B tightest-scope cut.
|
|||
- ✗ `Building` schema gains `produces: Array<unit_id>` mirror (currently
|
||||
unit JSON declares `requires_building`; the bidirectional mirror is
|
||||
authoring redundancy — see p1-43 validator rules).
|
||||
- ✗ AI emission: `mc-ai/tactical/production.rs` emits one
|
||||
`Action::SetProduction { city_id, building_id: Option<BuildingId>, item_id }`
|
||||
per producer building per turn. Per-building scoring decides what each
|
||||
producer queues. `building_id == None` means construction.
|
||||
- ✓ AI emission: `mc-ai/tactical/production.rs` emits `Action::EnqueueBuild`
|
||||
with `building_origin` field per city per turn. `building_origin_for()` at
|
||||
line 219 routes units that declare `requires_building` to the producer
|
||||
building queue; all other items (buildings, wonders, ungated units) route
|
||||
to `"__city_center__"`. GDScript dispatch at
|
||||
`ai_turn_bridge_dispatch.gd:234` reads `building_origin` and calls
|
||||
`city._bridge._gd_city.call("enqueue_to_building", building_origin, item_id)`.
|
||||
Evidence: `src/simulator/crates/mc-ai/src/tactical/production.rs:202`
|
||||
(f52e20bff, cycle 36).
|
||||
- ✗ Themed civilian unit roster: `battle_priest` (temple), `sage`
|
||||
(library/university), `cartographer` (observatory), `merchant` (market),
|
||||
`bard` (gathering_hall), `loremaster` (great_hall). Per-unit list
|
||||
confirmed by p1-43 design pass.
|
||||
(library/university), `cartographer` (observatory) — 3 still missing.
|
||||
`bard.json` (gathering_hall), `loremaster.json` (great_hall),
|
||||
`merchant.json` (market) — 3 already authored.
|
||||
- ✓ Headless GUT tests: 5 tests in `test_p1_44c_per_building_ui.gd` covering
|
||||
dict shape, queue separation, empty city, panel label derivation, and
|
||||
BTreeMap key accessibility. (cycle 35)
|
||||
- ✗ Regression batch: `apricot-run.sh launch smoke 10 200` to confirm AI
|
||||
cities with multiple producer buildings produce DIFFERENT units in the same turn.
|
||||
Blocked until bridge exposes queues + AI emission lands.
|
||||
- ✗ Regression batch: 10-seed `apricot-run.sh launch smoke 10 200` to confirm
|
||||
AI cities with multiple producer buildings produce DIFFERENT units in the
|
||||
same turn. Now unblocked (bridge exposed + AI emission wired in cycle 36).
|
||||
|
||||
## Out of scope
|
||||
|
||||
|
|
@ -62,3 +72,9 @@ Phase B tightest-scope cut.
|
|||
The Rust engine layer is now fully ready to host per-building queues with
|
||||
deterministic split production. p1-44c lifts the remaining presentation,
|
||||
AI, content, and verification work onto the new foundation.
|
||||
|
||||
Cycle-39 batch: stamp=20260506_232419 launched async (10 seeds, 200 turns,
|
||||
smoke mode). Fetch with `scripts/apricot-run.sh fetch 20260506_232419` after
|
||||
completion. Verify differentiation: look for multiple distinct unit-ids in
|
||||
`events.jsonl` unit_created entries per turn per player in cities with ≥2
|
||||
producer buildings.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue