Problem
Teams adding custom fields like an owners list in yaml or building on top of Rill (custom distributions) need to attach user-defined metadata to project files so their tooling can key off it. Today, adding any unrecognized field to a strictly validated resource (metrics views, explores, canvases, alerts, reports, components, rill.yaml) fails parsing:
yaml: unmarshal errors: line 7: field custom_field not found in type parser.MetricsViewYAML
This happens at the top level and in nested fields (e.g. inside a dimension or measure), because yaml.v3's KnownFields(true) applies recursively to the whole document. As a result, a project containing such metadata cannot be deployed on the stock Rill product.
Proposal
Exempt any YAML key prefixed with custom_ from strict validation, at any nesting depth:
- Stock Rill accepts and ignores
custom_-prefixed keys, so the same project files deploy cleanly on Rill Cloud.
- Custom distributions that define matching
custom_-prefixed fields on their parser structs still receive the values.
- All other unknown fields keep erroring, so typo detection is preserved.
- The prefix is easy to grep for and easy to comment in and out.
Developed in collaboration with Claude Code
Problem
Teams adding custom fields like an owners list in yaml or building on top of Rill (custom distributions) need to attach user-defined metadata to project files so their tooling can key off it. Today, adding any unrecognized field to a strictly validated resource (metrics views, explores, canvases, alerts, reports, components,
rill.yaml) fails parsing:This happens at the top level and in nested fields (e.g. inside a dimension or measure), because
yaml.v3'sKnownFields(true)applies recursively to the whole document. As a result, a project containing such metadata cannot be deployed on the stock Rill product.Proposal
Exempt any YAML key prefixed with
custom_from strict validation, at any nesting depth:custom_-prefixed keys, so the same project files deploy cleanly on Rill Cloud.custom_-prefixed fields on their parser structs still receive the values.Developed in collaboration with Claude Code