diff --git a/.project/objectives/README.md b/.project/objectives/README.md
index 8589519a..2309188a 100644
--- a/.project/objectives/README.md
+++ b/.project/objectives/README.md
@@ -16,9 +16,9 @@
|---|---|---|---|---|---|---|---|
| **P0** | 43 | 0 | 0 | 0 | 0 | 0 | 43 |
| **P1** | 43 | 1 | 7 | 0 | 14 | 1 | 66 |
-| **P2** | 48 | 1 | 5 | 1 | 6 | 6 | 67 |
+| **P2** | 50 | 0 | 4 | 1 | 6 | 6 | 67 |
| **P3 (oos)** | 3 | 0 | 0 | 0 | 1 | 19 | 23 |
-| **total** | **137** | **2** | **12** | **1** | **21** | **26** | **199** |
+| **total** | **139** | **1** | **11** | **1** | **21** | **26** | **199** |
@@ -30,7 +30,6 @@
| [asset-sprite](../team-leads/asset-sprite.md) | 6 |
| [shipwright](../team-leads/shipwright.md) | 5 |
| [combat-dev](../team-leads/combat-dev.md) | 2 |
-| [terraformer](../team-leads/terraformer.md) | 2 |
| [simulator-infra](../team-leads/simulator-infra.md) | 1 |
| [asset-audio](../team-leads/asset-audio.md) | 1 |
| [testwright](../team-leads/testwright.md) | 1 |
@@ -128,7 +127,7 @@
| [p1-35](p1-35-unit-lore-paragraphs.md) | ✅ done | "Per-unit lore paragraphs — historical/cultural context for the dwarven roster" | [shipwright](../team-leads/shipwright.md) | 2026-04-27 |
| [p1-36](p1-36-ai-personalities-t1-t10-coverage.md) | 🟡 partial | "AI personalities — T1–T10 build order coverage + clan_affinity routing" | [warcouncil](../team-leads/warcouncil.md) | 2026-05-01 |
| [p1-37](p1-37-mc-ai-clan-affinity-routing.md) | ✅ done | "mc-ai clan_affinity routing — Rust AI reads unit clan_affinity at build-decision time" | [warcouncil](../team-leads/warcouncil.md) | 2026-05-01 |
-| [p1-38](p1-38-biome-economy-coupling.md) | 🟡 partial | Biome → economy coupling — population & luxury driven by live ecology | [shipwright](../team-leads/shipwright.md) | 2026-05-01 |
+| [p1-38](p1-38-biome-economy-coupling.md) | 🟡 partial | Biome → economy coupling — population & luxury driven by live ecology | [shipwright](../team-leads/shipwright.md) | 2026-05-02 |
| [p1-39](p1-39.md) | 🟡 partial | Port per-yield difficulty multipliers from GDScript into Rust crates (Rail-1) — research + culture | [warcouncil](../team-leads/warcouncil.md) | 2026-05-01 |
| [p1-40](p1-40-single-source-of-truth-resources.md) | ✅ done | Collapse data// override layer into single source of truth at resources/ | — | 2026-04-29 |
| [p1-41](p1-41-game-pack-subscription-manifest.md) | ✅ done | Game-pack subscription manifest + loader filter (Phase B of resources/ unification) | — | 2026-04-29 |
@@ -216,10 +215,10 @@
| [p2-53g](p2-53g-ranged-specifics.md) | ✅ done | Ranged specifics — Volley, Aimed Shot, Fire Arrows | [combat-dev](../team-leads/combat-dev.md) | 2026-05-03 |
| [p2-53h](p2-53h-cavalry-specifics.md) | ✅ done | Cavalry specifics — Charge, Pursue, Wheel | [combat-dev](../team-leads/combat-dev.md) | 2026-05-03 |
| [p2-53i](p2-53i-engineer-pioneer-medic-scout.md) | ✅ done | Support specifics — Engineer, Pioneer, Medic, Scout | [shipwright](../team-leads/shipwright.md) | 2026-05-03 |
-| [p2-54](p2-54-resource-visibility-three-axis.md) | 🔵 in_progress | Resource visibility — three-axis (visibility/yield_gate/improvement_gate) refactor | [terraformer](../team-leads/terraformer.md) | 2026-05-01 |
+| [p2-54](p2-54-resource-visibility-three-axis.md) | ✅ done | Resource visibility — three-axis (visibility/yield_gate/improvement_gate) refactor | [terraformer](../team-leads/terraformer.md) | 2026-05-02 |
| [p2-54a](p2-54a-deposits-three-axis-migration.md) | ✅ done | Migrate deposits/*.json to three-axis visibility schema | [terraformer](../team-leads/terraformer.md) | 2026-05-01 |
| [p2-54b](p2-54b-player-observation-cache.md) | ✅ done | Per-player tile observation cache — flora/fauna last-observed state | [terraformer](../team-leads/terraformer.md) | 2026-05-01 |
-| [p2-54c](p2-54c-renderer-observations-and-indicators.md) | 🟡 partial | Renderer reads observations + indicator decorations for tech-gated resources | [terraformer](../team-leads/terraformer.md) | 2026-05-01 |
+| [p2-54c](p2-54c-renderer-observations-and-indicators.md) | ✅ done | Renderer reads observations + indicator decorations for tech-gated resources | [terraformer](../team-leads/terraformer.md) | 2026-05-01 |
| [p2-54d](p2-54d-ai-tech-priority-from-visibility.md) | ✅ done | AI tech-priority bias from visible-but-gated luxuries + indicator decorations | [terraformer](../team-leads/terraformer.md) | 2026-05-01 |
## Out of Scope (Game 2 / Game 3)
diff --git a/.project/objectives/p1-38-biome-economy-coupling.md b/.project/objectives/p1-38-biome-economy-coupling.md
index eabe6ace..a599f0f6 100644
--- a/.project/objectives/p1-38-biome-economy-coupling.md
+++ b/.project/objectives/p1-38-biome-economy-coupling.md
@@ -5,7 +5,7 @@ priority: p1
status: partial
scope: game1
owner: shipwright
-updated_at: 2026-05-01
+updated_at: 2026-05-02
evidence_phase_d:
- src/packages/guide/src/data/ecology.ts
- public/games/age-of-dwarves/data/balance/biome_capacity.json
diff --git a/.project/objectives/p2-54-resource-visibility-three-axis.md b/.project/objectives/p2-54-resource-visibility-three-axis.md
index dd145be0..63d85e23 100644
--- a/.project/objectives/p2-54-resource-visibility-three-axis.md
+++ b/.project/objectives/p2-54-resource-visibility-three-axis.md
@@ -2,10 +2,10 @@
id: p2-54
title: Resource visibility — three-axis (visibility/yield_gate/improvement_gate) refactor
priority: p2
-status: in_progress
+status: done
scope: game1
owner: terraformer
-updated_at: 2026-05-01
+updated_at: 2026-05-02
canonical_doc: public/games/age-of-dwarves/docs/RESOURCES.md
coordinates_with:
- p1-05
diff --git a/public/games/age-of-dwarves/data/objectives.json b/public/games/age-of-dwarves/data/objectives.json
index aa661eba..64ed6b36 100644
--- a/public/games/age-of-dwarves/data/objectives.json
+++ b/public/games/age-of-dwarves/data/objectives.json
@@ -1,12 +1,12 @@
{
- "generated_at": "2026-05-03T01:01:16Z",
+ "generated_at": "2026-05-03T01:15:55Z",
"totals": {
- "partial": 12,
+ "partial": 11,
"oos": 26,
- "in_progress": 2,
+ "done": 139,
"missing": 21,
+ "in_progress": 1,
"stub": 1,
- "done": 137,
"total": 199
},
"objectives": [
@@ -837,7 +837,7 @@
"status": "partial",
"scope": "game1",
"owner": "shipwright",
- "updated_at": "2026-05-01",
+ "updated_at": "2026-05-02",
"summary": "Population growth and luxury supply have been decoupled from the live ecology\nsimulation since `mc-flora` was wired up. Cities read static per-terrain food\nyields (`grassland.food=2`, `plains.food=1`); 70 fauna species exist purely\nas combat encounters with no contribution to the city economy; the\n`mc-happiness::get_growth_modifier` tiering (1.25 / 1.00 / 0.50 / 0.00) was\ncomputed but unused on the GDScript side. This objective re-couples the\ncity economy to the ecology layer in four phases (C → A → B → D), each\nsized to land independently with its own balance regression risk.\n\nThe four phases were approved together as a single `p1` objective in plan\n`~/.claude/plans/hi-so-in-valiant-mango.md` (2026-04-27), but ship in\nsequence so `p1-05`'s baseline bands (median `pop_peak=69`, batch\n`p016b_20260417_024754`) are not disturbed."
},
{
@@ -1724,10 +1724,10 @@
"id": "p2-54",
"title": "Resource visibility — three-axis (visibility/yield_gate/improvement_gate) refactor",
"priority": "p2",
- "status": "in_progress",
+ "status": "done",
"scope": "game1",
"owner": "terraformer",
- "updated_at": "2026-05-01",
+ "updated_at": "2026-05-02",
"summary": "Replace the binary `revealed_by_tech` field on resources with three orthogonal axes\n(`visibility` / `yield_gate` / `improvement_gate`) plus forward-compatible schema\nextensions for environmental indicator decorations and a per-player observation cache.\n\nMulti-cycle objective. This cycle (p2-54) delivers the schema + data + Rust struct.\nFollow-on cycles handle rendering, AI, and the observation cache.\n\n---"
},
{
@@ -1754,7 +1754,7 @@
"id": "p2-54c",
"title": "Renderer reads observations + indicator decorations for tech-gated resources",
"priority": "p2",
- "status": "partial",
+ "status": "done",
"scope": "game1",
"owner": "terraformer",
"updated_at": "2026-05-01",
diff --git a/tooling/claude/dot-claude/settings.local.json b/tooling/claude/dot-claude/settings.local.json
index 9c15fa2b..afb2ed5d 100644
--- a/tooling/claude/dot-claude/settings.local.json
+++ b/tooling/claude/dot-claude/settings.local.json
@@ -51,7 +51,9 @@
"Skill(update-config)",
"Bash(mkdir -p /tmp/mc-divergence)",
"Bash(git worktree *)",
- "mcp__experts__loop_stop"
+ "mcp__experts__loop_stop",
+ "Read(//private/tmp/mc-divergence/inspect/**)",
+ "Read(//private/tmp/mc-divergence/**)"
]
}
}
|