feat(topdata): parts autogen from CDN part.yml channel
Phase 2 of the parts-row autogen design: Crucible resolves parts 2DA rows from the immutable part.yml published with the asset HAK release, over the anonymous Bunny CDN channel, with the parts consumer required (no fail-open). - generalize resolveCDNChannelManifest: derive manifest basename + provenance label from config; drop hardcoded assets/vfxs.yml so part.yml resolves too - add filterPartsCDNChannelEntries + mode dispatch implementing the inventory contract (restype mdl under part/<cat>/, trailing-digit row id, dedup l/r/race/gender variants, sort by source, zero accepted rows = hard fail) - support hand category + parts/hand dataset mapping (12 datasets total) - native pipeline: single augment -> normalize -> override sequence with the configured parts_rows policy; overrides may update but never synthesize a row - reject multiple parts_rows consumers in project validation - tests: parts filter contract, category coverage, offline basename, orphan override reject, and a parity guard proving a bare CDN-only parts build Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1864,6 +1864,20 @@ func TestValidateAutogenConsumerSourcesCDNChannel(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestValidateRejectsMultiplePartsRowsConsumers(t *testing.T) {
|
||||
consumers := []AutogenConsumerConfig{
|
||||
{ID: "parts-a", Mode: "parts_rows"},
|
||||
{ID: "parts-b", Mode: "parts_rows"},
|
||||
}
|
||||
if failures := validateAutogenConsumerSources(consumers); len(failures) == 0 {
|
||||
t.Fatal("expected error for two parts_rows consumers")
|
||||
}
|
||||
single := []AutogenConsumerConfig{{ID: "parts", Mode: "parts_rows"}}
|
||||
if failures := validateAutogenConsumerSources(single); len(failures) != 0 {
|
||||
t.Fatalf("single parts_rows consumer must validate, got %v", failures)
|
||||
}
|
||||
}
|
||||
|
||||
func loadAndValidate(root string) error {
|
||||
proj, err := Load(root)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user