magicciv/.project/objectives/p2-39-chronicle-hall-phantom-unlock.md
Natalie 95795ad3fe fix(@projects/@magic-civilization): 🐛 mark p2-39 as complete
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-28 18:21:40 -04:00

2.6 KiB
Raw Blame History

id title priority status scope updated_at evidence
p2-39 Resolve `chronicle_hall` phantom unlock in `chronicle_keeping` culture tech p2 done game1 2026-04-27
public/resources/culture/oral_tradition.json (line 96 — `chronicle_keeping.unlocks.buildings = ["chronicle_hall"]`)
public/games/age-of-dwarves/data/buildings/mundane_wonders.json (line 102115 — `bardic_circle`, the actual `chronicle_keeping`-gated wonder)
.project/objectives/p3-01-courier-diplomacy.md (cycle 3 audit that surfaced the phantom)

Summary

The chronicle_keeping culture tech (era_4 oral_tradition pillar) declares unlocks.buildings = ["chronicle_hall"], but no chronicle_hall building file exists anywhere in public/resources/buildings/ or public/games/age-of-dwarves/data/buildings/. Surfaced by the p3-01 cycle 3 audit when the era_4 Rune Scribe culture path tried to extend chronicle_hall.enables_units and discovered it was a phantom.

The actual building gated on culture_required: "chronicle_keeping" is bardic_circle (mundane_wonders.json:102 — tier 4, era 2 wonder). The phantom is a stale unlock string left over from an earlier design.

This is a pre-existing data integrity bug, separate from p3-01's courier scope.

Resolution options

Option A — point the unlock at the real building: rewrite oral_tradition.json:96 from "chronicle_hall" to "bardic_circle". Smallest diff. Truthful given current data.

Option B — author a real chronicle_hall building: an era_4 normal (non-wonder) culture-tech-unlocked institution. Distinct from bardic_circle (wonder, tier 4). Bigger diff. Adds a new strategic institution and unblocks the era_4 Rune Scribe culture path that p3-01 abandoned.

Default to Option A unless explicitly requested otherwise. Option B becomes viable only if the design wants culture-side courier production at era_4, which is currently out of scope.

Acceptance criteria

  • [✓] Decide A vs B (default A). Option A chosen.
  • [✓] If A: edit public/resources/culture/oral_tradition.json:96 "chronicle_hall""bardic_circle". Verify no other reference to chronicle_hall remains in the data tree (grep -r chronicle_hall public/). — Only hit in dist/guide bundle (compiled artifact, not source data).
  • [✓] python3 tools/validate-game-data.py → 0 failed. (317 passed, 0 failed)
  • [✓] Run dashboard regen.

Non-goals

  • Authoring or rebalancing the era_4 Rune Scribe culture path (separate scope inside p3-01 if pursued later).
  • Audit of other phantom unlocks across the culture trees (out of scope; address one at a time as discovered).

Dependencies

  • None. Pure data integrity fix.