{"record":{"id":"ce0bcf8ce228beb9","repo":"windmill-labs/windmill","slug":"the-elements-of-the-vault-id-field-should-be-strin","errorCode":null,"errorMessage":"The elements of the vault_id field should be strings in the format: `label@filename`","messagePattern":"The elements of the vault_id field should be strings in the format: `label@filename`","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"backend/parsers/windmill-parser-yaml/src/lib.rs","lineNumber":561,"sourceCode":"                    ret.additional_inventories\n                        .extend(parse_additional_inventories(value)?);\n                }\n                Yaml::String(key) if key == \"vault_password\" => {\n                    let Yaml::String(filename) = value else {\n                        return Err(anyhow!(\n                            \"Vault Password File expects a String containing the file name\"\n                        ));\n                    };\n                    ret.vault_password = Some(filename.to_string());\n                }\n                Yaml::String(key) if key == \"vault_id\" => {\n                    let Yaml::Array(filenames) = value else {\n                        return Err(anyhow!(\"Vault ID field expects an array of strings in the format: `label@filename`\"));\n                    };\n\n                    for f in filenames {\n                        let Yaml::String(filename) = f else {\n                            return Err(anyhow!(\"The elements of the vault_id field should be strings in the format: `label@filename`\"));\n                        };\n                        validate_vault_id(filename)?;\n                        ret.vault_id.push(filename.to_string());\n                    }\n                }\n                Yaml::String(key) if key == \"options\" => {\n                    if let Yaml::Array(opts) = &value {\n                        ret.options = parse_ansible_options(opts);\n                    }\n                }\n                Yaml::String(key) if key == \"git_repos\" => {\n                    let Yaml::Array(repos) = &value else {\n                        return Err(anyhow!(\"git_repos field expects an array of repos\"));\n                    };\n\n                    for r in repos {\n                        ret.git_repos.push(\n                            parse_git_repo(r)","sourceCodeStart":543,"sourceCodeEnd":579,"githubUrl":"https://github.com/windmill-labs/windmill/blob/e474e8803ce2ff5c2df09a58dab51d45f5c922ca/backend/parsers/windmill-parser-yaml/src/lib.rs#L543-L579","documentation":"When `vault_id` is an array, every element must itself be a YAML string in `label@filename` format. If an element parses as a number, bool, list or hash instead of a string, parse_ansible_reqs throws this element-level error before validate_vault_id is reached.","triggerScenarios":"A list item under `vault_id:` is a non-string scalar or nested structure, e.g. `vault_id: [123]` or an entry indented as a mapping.","commonSituations":"Unquoted numeric or boolean-looking labels (e.g. `vault_id: [123@file]`-like typos, `yes@file` parsed as bool), or entries accidentally indented as sub-mappings.","solutions":["Quote each element: `- \"123@vault.txt\"` so YAML parses it as a string.","Remove or flatten any nested mapping/list elements.","After the type is fixed, also satisfy validate_vault_id's character rules (letters, digits, `.`, `_`, `-`, `/`, `@`)."],"exampleFix":"# before\nvault_id:\n  - 123@file\n# after\nvault_id:\n  - \"123@file\"","handlingStrategy":"type-guard","validationCode":"fn vault_id_elems_are_strings(doc: &Yaml) -> bool {\n    match yaml_lookup(doc, \"vault_id\") {\n        Some(Yaml::Array(items)) => items.iter().all(|i| matches!(i, Yaml::String(_))),\n        _ => false,\n    }\n}","typeGuard":"fn all_strings(v: &Yaml) -> bool {\n    matches!(v, Yaml::Array(items) if items.iter().all(|i| matches!(i, Yaml::String(_))))\n}","tryCatchPattern":"match parse_ansible_reqs(content) {\n    Ok(r) => r,\n    Err(e) if e.to_string().contains(\"elements of the vault_id field should be strings\") => {\n        eprintln!(\"Quote every vault_id list element\");\n        Err(e)\n    }\n    Err(e) => Err(e),\n}","preventionTips":["Quote every vault_id element in YAML","Avoid labels that YAML coerces to numbers/bools","Lint the list shape before saving the script"],"tags":["ansible","vault","yaml","type-mismatch"],"backgroundTag":"schema-validation-failed","analyzedSha":"e474e8803ce2ff5c2df09a58dab51d45f5c922ca","analyzedAt":"2026-09-03T12:38:19.024Z","contentChangedAt":"2026-09-03T12:38:19.024Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}