Prompt file imported from akspa0/parp-tools (
.codex/prompts/wow-viewer-shared-io-implementation.md). Copyright stays with the author.
Implement the next narrow wow-viewer shared-format or shared-I/O slice without losing the current ownership and validation rules.
Read First
gillijimproject_refactor/memory-bank/activeContext.mdgillijimproject_refactor/memory-bank/progress.mdgillijimproject_refactor/plans/wow_viewer_shared_io_library_plan_2026-03-26.mdwow-viewer/README.mdAGENTS.md
Goal
Move one more reusable non-PM4 format capability into wow-viewer/src/core/WowViewer.Core or wow-viewer/src/core/WowViewer.Core.IO with explicit validation and without reintroducing tool-local parser ownership. Typical slices include ADT root or split ADT family seams, WDT summaries, WMO top-level readers, or early BLP or DBC or DB2 detection or summary work.
Current Working Rules
WowViewer.CoreandWowViewer.Core.IOare the intended shared home for non-PM4 file detection, chunk reading, and future format ownership.WowViewer.Tool.InspectandWowViewer.Tool.Convertershould stay thin consumers of those shared seams.- The default direction is library-first
wow-viewerwork, not broaderMdxViewerintegration. - Shared detection or summary behavior is real progress, but it is not the same thing as deep payload parsing or write support.
Current WMO Continuation Note
- The current validated WMO root-light seam is standard and Alpha
MOLTsemantic summary in sharedCore.IO, with real proof for Alphaironforge.wmo.MPQand standard0.6.0world/wmo/khazmodan/cities/ironforge/ironforge.wmo. - Already-settled facts for the standard 48-byte layout: bytes
2..3are a raw non-zeroheaderFlagsWordon real Ironforge (0x0101), offsets24..39are quaternion rotation, and offsets40and44are attenuation start and end. - If the user says to continue this work without naming a narrower seam, default to one of these next WMO follow-ups instead of revisiting resolved offsets:
- prove whether
headerFlagsWordvaries across additional real standard roots - add a per-light inspect dump for standard
MOLTentries
- prove whether
- Do not claim per-bit meaning for
headerFlagsWorduntil more than Ironforge has been checked.
Active Shared Surface To Build On
FourCC,ChunkHeader,ChunkHeaderReaderChunkedFileReader- map contracts:
MapChunkIds,MapFileKind,MapChunkLocation,MapFileSummary MapFileSummaryReader- file detection contracts:
WowFileKind,WowFileDetection WowFileDetectorWowViewer.Tool.Inspectverbmap inspectWowViewer.Tool.Converterverbdetect- regression floor in
wow-viewer/tests/WowViewer.Core.Tests
Non-Negotiable Constraints
- Do not turn a narrow shared-I/O slice into a broad migration-plan rewrite.
- Do not add new tool-local heuristics when the seam should live in
CoreorCore.IO. - Do not claim full parsing or write support when the slice only proves detection or top-level summary.
- Prefer one concrete shared seam with proof over several partial abstractions.
What The Work Must Produce
- The exact seam to add or change.
- The files that should own it in
wow-viewer. - The validation required for that seam.
- Any current-production touch point that remains reference-only.
- The continuity files that must be updated after the slice lands.
Deliverables
Return all items:
- the next shared I/O slice to implement
- why that slice is the right next step
- exact files to change
- exact validation to run
- what should stay out of scope for this slice
- which memory or prompt surfaces must be updated afterward
First Output
Start with:
- the current shared I/O boundary you are assuming
- the single next seam you would extract or add
- the narrowest proof that would show the slice is real
- what you are explicitly not claiming yet
