Prompt file imported from akspa0/parp-tools (
.codex/prompts/development-repair-implementation-plan.md). Copyright stays with the author.
Implement the next non-GUI development repair slice in gillijimproject_refactor using the original 4.x source dataset as the source of truth and the current repair plan/spec as the architecture contract.
Read First
gillijimproject_refactor/plans/development_repair_plan.mdgillijimproject_refactor/specifications/development_repair_pipeline_spec.mdgillijimproject_refactor/memory-bank/data-paths.mdgillijimproject_refactor/memory-bank/activeContext.mdgillijimproject_refactor/plans/pm4_support_plan.mdgillijimproject_refactor/src/MdxViewer/memory-bank/activeContext.md
Goal
Make concrete implementation progress on the repair pipeline that reconstructs the original development map into reproducible 3.3.5-compatible outputs.
The intended end state is:
- all original source tiles are audited and classified
- usable split tiles are merged and normalized into valid monolithic 3.3.5 ADTs
- missing or unusable terrain tiles are rebuilt from WDL with explicit synthetic-tile labeling
WL*files are converted into 3.x-compatible liquid data- PM4 evidence is used deliberately and with provenance, not as undocumented magic
- every tile records what fallback path was used
Non-Negotiable Architecture
- Treat
test_data/development/World/Maps/developmentas the source of truth. - Treat museum exports and older generated outputs as reference-only, not canonical input.
- Do not run
development-repairwithtest_data/WoWMuseum/335-dev/...as input; that path is validation/reference-only. - Do not silently collapse all tile failures into one repair path.
- Do not claim a tile is "fixed" unless the output manifest says exactly which repair route was used.
- Do not hide rollback primitives behind ad hoc one-off shell workflows.
- Reuse existing rollback implementations where they are already the strongest reference, but port or wrap them cleanly in the active toolchain.
- Preserve the distinction between:
- original terrain preserved
- original terrain normalized/repaired
- scan-order recovered terrain
- WDL-generated terrain
- PM4-refined terrain
Required Tile Classes
Every tile must be classified into one of these buckets before repair:
healthy-splitindex-corruptscan-only-rootwdl-rebuildmanual-review
Use the active development-analyze command and/or the same rules it encodes as the front door for this classification.
Required Starting Files
gillijimproject_refactor/src/WoWMapConverter/WoWMapConverter.Core/Services/DevelopmentMapAnalyzer.csgillijimproject_refactor/src/WoWMapConverter/WoWMapConverter.Cli/Program.csgillijimproject_refactor/src/WoWMapConverter/WoWMapConverter.Core/Formats/Liquids/WlToLiquidConverter.csgillijimproject_refactor/src/WoWMapConverter/WoWMapConverter.Core/Formats/PM4/Pm4CoordinateService.csgillijimproject_refactor/src/WoWMapConverter/WoWMapConverter.Core/Formats/PM4/Pm4CoordinateValidator.csgillijimproject_refactor/WoWRollback/WoWRollback.Cli/Commands/DevelopmentRepairCommand.csgillijimproject_refactor/WoWRollback/WoWRollback.Cli/Commands/RepairMcnkIndicesCommand.csgillijimproject_refactor/WoWRollback/WoWRollback.PM4Module/SplitAdtMerger.csgillijimproject_refactor/WoWRollback/WoWRollback.PM4Module/Services/WdlToAdtGenerator.csgillijimproject_refactor/WoWRollback/WoWRollback.PM4Module/GlobalUniqueIdFixer.cs
Required Implementation Order
- Confirm the current audited tile classes from the original development dataset.
- Decide what the next minimal production-worthy slice is.
- Prefer implementing the first active
development-repairorchestration seam inwowmapconverterover adding more isolated rollback-only commands. - Wire the first repair command to cover only the stable, high-value phases:
- split merge
MCNKindex repair- WDL generation for missing/unusable terrain
WL*toMH2O- per-tile manifest emission
- Keep PM4 terrain refinement limited to validated
MPRLusage in the first active slice. - Leave CK24/WMO reconstruction and viewer
UniqueIDrange filtering as explicit next phases unless they are directly required for the chosen slice.
Required Provenance Model
Every repaired tile must emit enough metadata to answer:
- what source files existed
- what source files were actually used
- whether split merge ran
- whether chunk indices were repaired
- whether WDL generation ran
- whether PM4
MPRLpatching ran - whether
WL*liquids were converted - whether minimap-derived
MCCVpainting ran - whether the tile still needs manual review
Strong Reuse Guidance
When choosing between active-core code and rollback code:
- prefer active-core code when the behavior already exists there
- prefer rollback code when it is clearly the stronger reference implementation
- if a rollback implementation is required for the active path, either:
- port the logic into active core, or
- wrap it behind a clean active command surface with explicit dependencies
Do not leave the real repair path undocumented in a rollback-only corner.
Validation Rules
- Use the fixed development paths from the memory bank.
- Build the changed project(s).
- If you did not run the new repair command on real
developmentdata, say so explicitly. - If you only improved the audit or command wiring, say so explicitly.
- If automated tests were not added or run, say so explicitly.
- Do not claim the reconstructed map is correct from build-only validation.
- Do not generalize from one tile if the command is still single-tile or sample-only.
Deliverables
Return all items:
- the exact repair slice implemented
- files changed and why
- which phases are now active versus still planned
- validation status split into build, tests, and real-data execution
- any tile classes or data-shape problems still blocking broader rollout
- any plan/spec or memory-bank updates still required
First Output
Start with:
- the current state of the active repair pipeline
- the next minimal implementation slice worth landing
- which rollback primitive, if any, should be treated as the source of truth for that slice
- what files you will change first
- what real-data validation you can perform after the change
