diff --git a/.project/CHANGELOG.md b/.project/CHANGELOG.md index d0d9805e..bdc8997e 100644 --- a/.project/CHANGELOG.md +++ b/.project/CHANGELOG.md @@ -100,3 +100,4 @@ Test-coverage mandate response is paying off: data changes, city state transitio 2026-04-17 p1-05 BALANCE-TUNING pass (shipwright): JSON-only data edits targeting the p0_pop_peak median 29.5 → ≥30 gap in score_fix3 batch. (1) public/resources/improvements/farm.json yield food 2 → 3 — seeds with 20 farms (5, 10) get +20 food per city, seeds with ~3 farms (8) still get +3. Farm already the AI's top pick on grassland, so no candidate-list change needed. (2) public/games/age-of-dwarves/data/buildings/stub.json granary cost 40 → 30 — pre-tune for when granary enters the AI candidate list (warcouncil/game-ai scope). Both pure JSON, no Rust or GDScript changes. Validator 170/170 pass. Objective p1-05 stays partial until next 10-seed regression batch confirms median pop_peak ≥30 without regressing combats/techs/luxuries. [ref: p1-05] 2026-04-17 13:30 tourguide bring-up: new team-lead `tourguide` owns dev-guide developer experience. Closed p1-11 (wasm-pack output moved `src/simulator/pkg/` → `.local/build/wasm/` — 10 path updates + `./run verify` step 16 `_verify_no_build_in_src`) and p1-12 (12 doc surfaces aligned around "build output never under src/" rule; repo-root router row + instructions README inventory tag). p1-13 `guide-dev-route-coverage` partial: new `e2e/all-routes.spec.ts` (51 tests via `@lilith/playwright-e2e-docker`) runs 44/51 green on plum; 7 domain-data failures flagged in `.project/team-leads/tourguide.md` §Known red routes for guide-web / game-data / simulator-infra. Evidence: `.project/history/20260417_tourguide_dev_bringup.md`. [ref: tourguide, p1-11, p1-12, p1-13] +2026-04-17 14:30 tourguide p1-13 CLOSED: /parallel wave 1 landed two parallel fixes — guide-web agent overhauled the data-loader in `public/games/age-of-dwarves/guide/src/data/game.ts` (manifest-driven load; wrapper JSONs no longer pollute allResources/allImprovements/buildings; promotions.json wired via Raw→Canonical adapter; disciplinesData null-guard; DevSpritesPage magic-schools import replaced with shared SCHOOL_COLORS; sprite-audit network storm gated behind opt-in button + 8-worker fetch cap), game-data agent aligned `src/packages/engine-ts/src/types.ts` TileState to the Rust mc-core struct (+25 required fields: maturity, deadwood, soil_depth, lair-state, aerosol_mitigation, etc.) + replaced `ley_school: ''` sentinels with `'none'` (actual Rust enum is LeySchool, not school_affinity — original trace was misleading). Two consecutive `pnpm test:e2e --grep all-routes` runs: 51/51 passed (44.7s, 42.3s). p1-13 flipped partial → ✅ done. Tourguide bundle (p1-11 + p1-12 + p1-13) all ✅ done. [ref: tourguide, p1-13] diff --git a/.project/objectives/README.md b/.project/objectives/README.md index 71a31add..20b5516d 100644 --- a/.project/objectives/README.md +++ b/.project/objectives/README.md @@ -15,10 +15,10 @@ | Priority | ✅ | 🟡 | 🔴 | ❌ | ⚫ | Total | |---|---|---|---|---|---|---| | **P0** | 19 | 4 | 0 | 0 | 0 | 23 | -| **P1** | 9 | 3 | 0 | 0 | 0 | 12 | +| **P1** | 10 | 2 | 0 | 0 | 0 | 12 | | **P2** | 7 | 6 | 0 | 2 | 0 | 15 | | **P3 (oos)** | 0 | 0 | 0 | 0 | 9 | 9 | -| **total** | **35** | **13** | **0** | **2** | **9** | **59** | +| **total** | **36** | **12** | **0** | **2** | **9** | **59** | @@ -29,7 +29,6 @@ | [shipwright](../team-leads/shipwright.md) | 6 | | [warcouncil](../team-leads/warcouncil.md) | 3 | | [testwright](../team-leads/testwright.md) | 2 | -| [tourguide](../team-leads/tourguide.md) | 1 | @@ -76,7 +75,7 @@ | [p1-10](p1-10-game-setup-ux.md) | ✅ done | Game setup UX — new-game dialog, difficulty, clan preview | [shipwright](../team-leads/shipwright.md) | 2026-04-17 | | [p1-11](p1-11-build-output-src-purge.md) | ✅ done | Purge build output from src/ — wasm-pack moves to .local/build/wasm/ | [tourguide](../team-leads/tourguide.md) | 2026-04-17 | | [p1-12](p1-12-build-output-docs-alignment.md) | ✅ done | Align every doc reference to the relocated wasm-pack output | [tourguide](../team-leads/tourguide.md) | 2026-04-17 | -| [p1-13](p1-13-guide-dev-route-coverage.md) | 🟡 partial | Guide dev server boots on plum with zero-error route coverage | [tourguide](../team-leads/tourguide.md) | 2026-04-17 | +| [p1-13](p1-13-guide-dev-route-coverage.md) | ✅ done | Guide dev server boots on plum with zero-error route coverage | [tourguide](../team-leads/tourguide.md) | 2026-04-17 | ## P2 — Polish diff --git a/.project/team-leads/tourguide.md b/.project/team-leads/tourguide.md index bc71ce38..d7d7c949 100644 --- a/.project/team-leads/tourguide.md +++ b/.project/team-leads/tourguide.md @@ -104,14 +104,24 @@ The Tourguide edits these directly: temporary workaround — that reintroduces the rule violation p1-11 exists to fix. -## Known red routes (p1-13 status: partial as of 2026-04-17) +## Known red routes — CLOSED 2026-04-17 (all green) -The first `pnpm test:e2e` run after the p1-11 + p1-12 relocation lands -44 / 51 routes green. The remaining 7 are **not Tourguide-owned fixes** — -each traces to domain data / page logic outside this team-lead's surface -and is flagged here so the right owner picks it up. Evidence: -`test-results/guide-age-of-dwarves/all-routes-route-coverage-*-chromium/` -(error-context.md + video.webm per failure). +**Status: all 7 previously-red routes green as of Wave-2 confirmation +runs.** Two consecutive `pnpm test:e2e` runs both report 51/51 passed +(44.7s, 42.3s). The Wave-1 parallel-agent pass landed the following +fixes (the table below is retained as a historical record of the +handoff): + +- `guide-web` agent — manifest-driven data-loader refactor in + `src/data/game.ts`, promotions pipeline wired, disciplinesData null-guard, + DevSpritesPage magic-schools import replaced with shared `SCHOOL_COLORS`, + sprite-audit network storm tamed with opt-in button + 8-worker cap. +- `game-data` agent — TileState type alignment (+25 required fields), + `ley_school: ''` → `'none'` sentinel fix. The original error wording + `school_affinity` in the e2e trace was misleading; the actual field + was `ley_school` in `mc-core::grid::LeySchool`. + +### Historical handoff table (pre-fix state): | Route | Error | Probable owner | |---|---|---| diff --git a/mcp_home.png b/mcp_home.png new file mode 100644 index 00000000..390de4c3 Binary files /dev/null and b/mcp_home.png differ diff --git a/mcp_populations.png b/mcp_populations.png new file mode 100644 index 00000000..1329a19f Binary files /dev/null and b/mcp_populations.png differ diff --git a/mcp_promotions.png b/mcp_promotions.png new file mode 100644 index 00000000..c7db740f Binary files /dev/null and b/mcp_promotions.png differ diff --git a/mcp_resources.png b/mcp_resources.png new file mode 100644 index 00000000..47031ef5 Binary files /dev/null and b/mcp_resources.png differ diff --git a/public/games/age-of-dwarves/data/objectives.json b/public/games/age-of-dwarves/data/objectives.json index 24d22728..19b6ac9e 100644 --- a/public/games/age-of-dwarves/data/objectives.json +++ b/public/games/age-of-dwarves/data/objectives.json @@ -1,11 +1,11 @@ { - "generated_at": "2026-04-17T20:38:01Z", + "generated_at": "2026-04-17T20:43:54Z", "totals": { - "done": 35, - "stub": 0, - "partial": 13, "missing": 2, + "stub": 0, + "done": 36, "oos": 9, + "partial": 12, "total": 59 }, "objectives": [ @@ -353,7 +353,7 @@ "id": "p1-13", "title": "Guide dev server boots on plum with zero-error route coverage", "priority": "p1", - "status": "partial", + "status": "done", "scope": "game1", "owner": "tourguide", "updated_at": "2026-04-17", diff --git a/src/simulator/package.json b/src/simulator/package.json index 6169f979..8741b8bd 100644 --- a/src/simulator/package.json +++ b/src/simulator/package.json @@ -1,9 +1,7 @@ { "name": "@magic-civ/physics-rs", "version": "0.1.0", - "description": "Rust physics engine — compiled to WASM for web, GDExtension for Godot. Build output lives at repo-root .local/build/wasm/ (gitignored, per-host). Consumers resolve via Vite/Vitest alias, not the main/types fields below — those are informational only.", - "main": "../../.local/build/wasm/magic_civ_physics.js", - "types": "../../.local/build/wasm/magic_civ_physics.d.ts", + "description": "Rust physics engine — compiled to WASM for web, GDExtension for Godot. Build output lives at repo-root .local/build/wasm/ (gitignored, per-host). Consumers resolve via Vite/Vitest alias — this package has no `main`/`types` because Node's resolver can't follow `../../` out of the package root cleanly through pnpm symlinks, and the artifact's true location is outside this package tree.", "scripts": { "build": "bash build-wasm.sh", "build:gdext": "bash build-gdext.sh"