Spot-check hak precedence in-world: the 13 duplicate resrefs and sow_top's 2DAs #92

Open
opened 2026-08-01 07:42:47 +00:00 by archvillainette · 0 comments
Owner

Split out of #75, which is otherwise closed. The sync completes and a character is in the module; this is the one item of its Done means that no machine can answer.

Why it stays a real check

Every duplicate resref resolves to exactly one blob in the merged manifest, and the client will happily sync a clean, internally consistent repository that contains the wrong texture. Nothing fails, nothing warns. The only symptom is a surface looking wrong in the world.

The rule under test is precedence, and it is inverted between us and upstream. #62 recorded it: module_haks is earliest-wins, upstream nwn_nwsync_write is last-added-wins, which is why the conformance comparisons feed specs reversed. assemble's positional order is Mod_HakList order and sow_top is first. A wrong order still assembles, still verifies, still syncs.

Conformance cannot catch this either. It proves our bytes match upstream's for one hak; it says nothing about which hak should have won across eleven.

What to check

In-world, on the testing target, with a synced client:

  • The 13 cross-hak duplicate resrefs shared by sow_core_01 and sow_over_01bloodstain1.tga and friends. Earliest-hak-wins means sow_core_01 wins. Confirm the winning texture is the one that renders.
  • sow_top's 2DAs. sow_top is first in Mod_HakList, so its 2DA rows are the ones that must be in effect. Any row it overrides is visible in-game as a name, an icon or an appearance.

Enumerate the 13 first rather than trusting the count — crucible can list duplicate resrefs across the assembled spec set, and the list belongs in a comment here so the next person checks the same 13.

Done means

Each of the 13 identified, and each seen in-world as the earliest hak's version. sow_top's 2DA rows confirmed in effect against at least one override that is visible without a debug build.

If any of them is wrong, the bug is in precedence — assemble's spec order, or what sow-module CI passes it — not in internal/nwsync. The blob bytes are proven against upstream 2.1.2 (#59) and the whole zone verifies clean (#88).

Notes

Manual and stays manual: needs a published zone, a running server and a client. Content under test is module v0.2.1-rc1 against haks v0.2.1-rc1 and topdata v0.2.3-rc2.

Refs #75, #62, #59.

Split out of #75, which is otherwise closed. The sync completes and a character is in the module; this is the one item of its **Done means** that no machine can answer. ## Why it stays a real check Every duplicate resref resolves to exactly one blob in the merged manifest, and the client will happily sync a clean, internally consistent repository that contains the wrong texture. Nothing fails, nothing warns. The only symptom is a surface looking wrong in the world. The rule under test is precedence, and it is inverted between us and upstream. #62 recorded it: `module_haks` is **earliest-wins**, upstream `nwn_nwsync_write` is **last-added-wins**, which is why the conformance comparisons feed specs reversed. `assemble`'s positional order **is** `Mod_HakList` order and `sow_top` is first. A wrong order still assembles, still verifies, still syncs. Conformance cannot catch this either. It proves our bytes match upstream's for one hak; it says nothing about which hak should have won across eleven. ## What to check In-world, on the testing target, with a synced client: - The 13 cross-hak duplicate resrefs shared by `sow_core_01` and `sow_over_01` — `bloodstain1.tga` and friends. Earliest-hak-wins means `sow_core_01` wins. Confirm the winning texture is the one that renders. - `sow_top`'s 2DAs. `sow_top` is first in `Mod_HakList`, so its 2DA rows are the ones that must be in effect. Any row it overrides is visible in-game as a name, an icon or an appearance. Enumerate the 13 first rather than trusting the count — `crucible` can list duplicate resrefs across the assembled spec set, and the list belongs in a comment here so the next person checks the same 13. ## Done means Each of the 13 identified, and each seen in-world as the earliest hak's version. `sow_top`'s 2DA rows confirmed in effect against at least one override that is visible without a debug build. If any of them is wrong, the bug is in precedence — `assemble`'s spec order, or what sow-module CI passes it — not in `internal/nwsync`. The blob bytes are proven against upstream 2.1.2 (#59) and the whole zone verifies clean (#88). ## Notes Manual and stays manual: needs a published zone, a running server and a client. Content under test is module `v0.2.1-rc1` against haks `v0.2.1-rc1` and topdata `v0.2.3-rc2`. Refs #75, #62, #59.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ShadowsOverWestgate/sow-tools#92