Result
High Confidence: The Retail format has a primary DLC path separated from the refchunks mechanism. Each Retail DLC map is assigned its own chunkid via its packagemapspec.json entry; refchunks are only additional dependencies. Therefore, a dedicated dlc_4/base/chunk_26 can be registered as a primary map container on a format level, rather than merely sitting as a refchunk next to chunk_1.
Not statically provable: When two specs share the same name, it is not proven whether the DLC MapSpec entry selects/overrides the Base entry and whether its primary chunk wins against gameresources in case of a name collision. The existing runtime finding for refchunks: [26] tests only an additionally mounted dependency and does not refute this primary path.
Exact Retail Evidence
From the fully read Retail Specs (documented measurement in docs/patchprecedence.md, Section 1; reproducible via tools/probe_patchprec.py --spec):
| Retail Path | Maps / Fields | Statement | Confidence |
|---|---|---|---|
dlc/dlc_1/base/packagemapspec.json |
4 Maps; chunkid: 20, basechunkid: 6, layer: -1, refchunks: [9,12,13], patchinfo.patchlevel: 2 |
chunk_20 is the primary DLC container; the three refchunks are secondary. |
High |
dlc/dlc_2/base/packagemapspec.json |
3 Maps; chunkid: 22, basechunkid: 6, layer: -1, refchunks: [9,13], patchlevel: 3 |
Same primary pattern with a different chunk ID. | High |
dlc/dlc_3/base/packagemapspec.json |
3 Maps; chunkid: 24, basechunkid: 6, layer: -1, no refchunks, patchlevel: 3 |
A DLC chunk is also a regular primary map container even without refchunks. | High |
base/packagemapspec.json |
31 Maps; chunkid 0,1,3,4,5,7–16; basechunkid 0/6; patchlevel: 4 |
The same chunkid mechanism selects primary map archives in the base case. |
High |
The engine knows these parser fields as adjacent literals at NewColossus_x64vk.exe VA 0x1426D0228 (refchunks), 0x1426D0238 (chunkid), 0x1426D0240 (basechunkid), 0x1426D0250 (packagemapspec.json) and 0x1426D0268 (patchinfo). This supports that chunkid and refchunks are separate inputs to the MapSpec parser. High.
The set of Retail data confirms the separation negatively: reported refchunks are almost never duplicated, whereas unreported ones are strongly so (dlc_1/2: total 15 versus 1,495 copies for the compared dependency chunks; dlc_3 without refchunks: 692/459/217 from chunk_9/12/13). A refchunk is thus an additional source, not the container that the map primarily names via chunkid. High.
Relevance for dlc_4
The already archived specs correctly identify the primary candidate:
re_probes/tnc_dlc_test/dlc_4/dlcinfo.json:dlcid: 4.re_probes/tnc_dlc_test/removed_from_game/dlc_4/base/packagemapspec.json: forgame/wolf/c02/c02p0standschunkid: 26(primary source),basechunkid: 6,layer: -1,refchunks: [1],patchlevel: 4.- In contrast, the measured detour was
refchunks: [26]next to the basechunk_1: the canary was missing fromchunk_1. This shows only that an additional refchunk does not receive override priority. High confidence.
patchlevel: 4 must be maintained for an existing base map name: Retail DLCs show that it is the patch search upper bound, and base/ uses 4. A lower value can omit patch layers for this map. Whether the upper bound is strictly per-spec or globally maximized remains open; 4 is compatible in both interpretations. Medium.
What a Single Test Must Decide
A controlled test must use a duplicated MapSpec name, not merely list chunk_26 in refchunks:
{ "name": "game/wolf/c02/c02p0", "chunkid": 26,
"basechunkid": 6, "layer": -1, "refchunks": [1] }
At patchinfo.patchlevel: 4, combined with dlc_4/base/chunk_26.resources and .texdb. A distinctly different, valid Canary in chunk_26 decides:
- Canary visible: The DLC Mapspec was primarily selected for the base map, and its container has won the collision.
- Canary unchanged upon confirmed Mount: The Base Mapspec or its container takes precedence.
- Map/Assets missing: The Mapspec may have been primarily selected, but the dependency set is incomplete; this is not a precedence judgment.
Previous hurdle: A newly built IDCL container requires a valid header hash at +0x08; this algorithm was still open in the documented runtime state. Therefore, a header rejection cannot be interpreted as refuting the primary DLC path. High.
Counter-evidence against an overly strong structural interpretation
basechunkid: 6 does not enforce layer: -1: Retail base maps with basechunkid: 6 have layer: 1, while all ten Retail DLC maps have layer: -1. Thus, the DLC values represent a tested pattern but are not a statically proven priority rule. Similarly, Retail provides bit-identical content for 7,733 DLC↔Base collisions; no direction for an unequal collision can be inferred from this.