fix(project): exempt cdn_channel consumers from released-source validation; review polish
build-binaries / build-binaries (pull_request) Successful in 2m24s
test-image / build-image (pull_request) Successful in 50s
test / test (pull_request) Successful in 1m34s

- Extend ValidateLayout exemption so cdn_channel consumers skip root/include/
  derive/manifest requirements (they resolve entirely from Source.* at runtime).
- Add TestValidateLayoutAcceptsCDNChannelConsumerWithoutReleasedSourceFields.
- Fix inverted precedence comment in CDN-base resolution block (autogen.go:325).
- Add broken-YAML subtest to TestResolveCDNChannelHardFail.
- Add assumption comment to autogenConsumerManagedLockKeyMatcher re folder_name+preserve.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-21 15:09:12 +02:00
co-authored by Claude Sonnet 4.6
parent e674f5cad9
commit f833f979ea
4 changed files with 67 additions and 4 deletions
+5 -3
View File
@@ -1682,10 +1682,12 @@ func validateAutogenConfig(cfg AutogenConfig) []error {
if strings.TrimSpace(consumer.Mode) == "accessory_visualeffects" && accessoryVisualeffectsConfigConfigured(consumer.AccessoryVisualeffects) {
failures = append(failures, validateAccessoryVisualeffectsConfig(fieldPrefix+".accessory_visualeffects", consumer.AccessoryVisualeffects)...)
}
// A manifest_file consumer reads a pre-resolved local manifest, so the
// released-source fields (root/include/derive/manifest) are never read
// A manifest_file consumer reads a pre-resolved local manifest, and a
// cdn_channel consumer resolves entirely from Source.* at runtime, so
// neither reads the released-source fields (root/include/derive/manifest)
// at build time — don't require them. See resolveAutogenConsumerManifest.
if strings.TrimSpace(consumer.ManifestFile) == "" {
if strings.TrimSpace(consumer.ManifestFile) == "" &&
strings.TrimSpace(consumer.Source.Kind) != "cdn_channel" {
if strings.TrimSpace(consumer.Root) == "" {
failures = append(failures, fmt.Errorf("%s.root is required", fieldPrefix))
}