Configuration and Casing

Casing follows the schema boundary. Never recursively convert a configuration object.

Boundary Rule Examples
Backend facade requirement names top-level lower_case_with_underscore custom_css, css_variables
Registry fields each field follows its documented registry schema base_path, entry_point, tag_name
Nested frontend configuration carried by backend YAML preserve lower camelCase customCSS, themeConfig, iconifyIcons
Frontend AppConfig and package metadata lower camelCase configOverrides, hostCssKeys
config_overrides:
  customization:
    customCSS: ""
    cssVariables: {}
  routePrefix: /admin

proxy:
  injections:
    css:
      themeConfig: true
      customCss: true
      iframe: true

Only the backend wrapper keys are snake case in this example. Nested frontend objects are passed through and retain their defined casing.

Temporary mountRoute exception

meta.mountRoute is a current backend compatibility bug. The intended backend field is meta.mount_route, but existing deployments require mountRoute until the backend correction ships. Treat it as one explicit exception, not evidence that registry or backend fields are generally camelCase.

Compliance must version this exception so it can be removed when the backend schema changes.