Manifest validation fails with 'validation failed for: None / expected a dictionary. Got None' (single-integration repo, valid manifest.json, likely duplicate of #5252)
Hitting the exact same symptom as #5252 (closed without a documented root cause) on a fresh repo, and ruled out two real hypotheses with actual evidence rather than guessing further -- reporting in case this helps pin it down.
Repro
Repository: code-imstillalive/nimbus (private; happy to grant read access to a maintainer on request)
Category: integration
Action: hacs/action@main, category: integration
Log output:
::INFO:: <Validation brands> completed
::INFO:: <Validation topics> completed
::INFO:: <Validation description> completed
::INFO:: <Validation license> completed
::INFO:: <Validation archived> completed
::INFO:: <Validation issues> completed
::INFO:: <Validation information> completed
##[warning] Integration manifest validation failed for: None
##[error] <Validation integration_manifest> failed: expected a dictionary. Got None
##[error] <Validation hacsjson> failed: The repository has an invalid 'hacs.json' fileWhat I checked before filing (ruling out the obvious candidates)
Line endings -- the local working tree shows CRLF (Windows
core.autocrlf=true), but confirmed viagit show HEAD:<path> | cat -Athat the actual committed blob (what CI checks out) is plain LF for bothmanifest.jsonandhacs.json. Not the cause.Multiple manifest.json files confusing discovery --
git ls-files | grep manifest.jsonreturns exactly one match:custom_components/nimbus_load/manifest.json.git ls-tree HEAD custom_components/shows exactly one entry (nimbus_load). No duplicate or stray manifest.json anywhere in the tracked repo.hacs.json itself -- valid JSON, contains
name(the one documented required field per https://hacs.xyz/docs/publish/include):{ "name": "Nimbus", "render_readme": true, "zip_release": false }manifest.json itself -- valid JSON, standard shape:
{ "domain": "nimbus_load", "name": "Nimbus", "codeowners": ["@code-imstillalive"], "config_flow": true, "dependencies": ["recorder"], "documentation": "https://github.com/code-imstillalive/nimbus", "integration_type": "service", "iot_class": "calculated", "issue_tracker": "https://github.com/code-imstillalive/nimbus/issues", "requirements": ["numpy>=1.24", "highspy"], "version": "0.56.0" }
What's notably different from a typical repo
requirementsincludeshighspy(a real, compiled LP-solver dependency, no version pin currently -- unrelated to this specific error but worth mentioning in case requirements parsing is somehow in the code path).- The repo also contains a separate, unrelated Docker-packaged HA Supervisor add-on (
nimbus_solver_app/, its ownconfig.yaml, nomanifest.jsonat all) alongside the HACS integration. Not sure if a repo containing both an add-on and an integration is a scenario your discovery logic has been tested against -- flagging in case it's relevant, since #5252 doesn't mention anything similar.
Actual real-world impact
None currently -- HACS itself installs this integration successfully for real users (confirmed live, same day). This only affects the hacs/action CI validator specifically, not actual installability. Filing for visibility on a genuine, reproducible instance of #5252's symptom, not because anything is broken for end users.
Happy to add any diagnostic output a maintainer would find useful.
Source: hacs/integration