magicciv/.project/objectives/p0-16-worker-improvement-loop.md
Natalie 69cbca4bef fix(@projects/@magic-civilization): 🐛 update runner setup docs for forgejo
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-17 02:10:56 -07:00

2.4 KiB

id title priority status scope owner updated_at evidence
p0-16 Worker / tile-improvement build loop p0 partial game1 shipwright 2026-04-17
public/resources/improvements/farm.json
public/resources/improvements/mine.json
public/resources/improvements/hunting_grounds.json
src/game/engine/src/entities/unit.gd
src/game/engine/src/modules/ai/simple_heuristic_ai.gd

Summary

Workers build farms, mines, hunting grounds that modify tile yields. Data JSON + renderer support exist. Recent batch (loop8) had seeds with worker_improvements/seed = 0 → regression from loop7's min=8. The loop is partially assembled: worker AI picks the tile, tile yield reflects improvement on next turn, but some seed combinations still stall.

Acceptance

  • ✗ Every seed in a 10-seed T300 batch produces ≥5 worker improvements (checklist target). Last measured: loop8 showed some seeds at 0 (regression from loop7 min=8). Needs fresh 10-seed T300 batch under current apricot build.
  • ? Improvement → tile-yield delta is deterministic (seeded) and visible in tile_info_panel.show_tile tooltip. Renderer hook exists in tile.gd; tooltip visual not yet proof-screenshotted.
  • ? Tech unlocks gate advanced improvements (e.g. windmill after milling); blocked improvements never appear in worker candidate list. Logic path lives in simple_heuristic_ai.gd; no dedicated GUT test confirms the gate.
  • ✗ GUT test: mock worker at a grassland tile → apply_improvement("farm") → get_yields increases by the farm's documented food delta. Test file does not exist.
  • ? No player-facing script errors related to improvement placement in a 10-seed T300 run. Needs fresh batch grep for SCRIPT ERROR + improvement co-occurrence.

Remaining to reach done

  1. Run a 10-seed T300 batch with current apricot build; count worker_improvements per seed from turn_stats.jsonl aggregate; assert min ≥ 5.
  2. Author GUT unit test test_worker_improvement_yield.gd at src/game/engine/tests/unit/ covering grassland + farm yield delta.
  3. Author GUT unit test covering tech-gated improvement exclusion (e.g. worker at tile without milling never picks windmill).
  4. Grep batch script_errors.log for improvement-related failures; resolve or cite zero-match.

Non-goals

  • Great-person-style unique improvements (Game 2).
  • Automated worker AI beyond heuristic (MCTS p0-01 may absorb later).