fix(fifa17): preserve versioned resourceId on the wire (no special->base collapse)

shape_item emitted resourceId/definitionId = asset_id (base), collapsing every
versioned (special) card onto its base definition on the /club and squad wire.
The dev 32-card fixture is base-only (version 0), so Slice 7 never exposed it;
the real profile (1531 versioned cards) did.

Fifa17Identity now carries resource_id (= (version<<24)|asset_id, == asset_id
for a base card). shape_item emits resourceId/definitionId from resource_id and
assetId/cardassetid from asset_id — versioned and base stay distinct. The host
resolver populates resource_id from the catalog's reconstructed resource_id
(the catalog already parsed version; it was dropped before shaping).

Regression test: versioned 117617092 (v7 of asset 176580) shapes resourceId/
definitionId=117617092, assetId/cardassetid=176580.

Verified on the real staged /club: 1949 items, wire-id set exact, 0
wire->resourceId mismatches, 0 duplicate-multiplicity mismatches vs the source
manifest. adapter 111 + host 24 tests green; clippy -D warnings clean.
This commit is contained in:
funman300
2026-08-12 20:46:48 +00:00
parent 1631d3b1a2
commit e187cd49a2
5 changed files with 43 additions and 3 deletions
+1
View File
@@ -551,6 +551,7 @@ impl ItemIdentityResolver for Fifa17IdentityResolver {
// Wire ids live in 1e8..9e8 (policy) — well within u32.
item_id: wire as u32,
asset_id: ident.asset_id,
resource_id: ident.resource_id,
})
}
}