pub(crate) fn scope_values_path(path: &str, prefix: &[String]) -> String {
let path = path.trim();
if path.is_empty() {
// An empty path in a chart-local contract denotes that chart's own
// values root (a whole-tree wrapper scope, a root defaults target),
// which under parent composition IS the subchart prefix. Leaving it
// empty would re-root the fact at the PARENT's document root.
return helm_schema_core::join_value_path(prefix.iter().cloned());
}
if prefix.is_empty() {
return path.to_string();
}
let path = helm_schema_core::ValuesPath::parse(path);
helm_schema_core::ValuesPath::from_segments(
prefix
.iter()
.cloned()
.map(helm_schema_core::Segment::from)
.chain(path.segments().cloned()),
)
.encode()
}