Manifest validation fails with 'validation failed for: None / expected a dictionary. Got None' (single-integration repo, valid manifest.json, likely duplicate of #5252)

Author: code-imstillaliveCreated Aug 22, 2026Updated Sep 14, 2026

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' file

What I checked before filing (ruling out the obvious candidates)

  1. Line endings -- the local working tree shows CRLF (Windows core.autocrlf=true), but confirmed via git show HEAD:<path> | cat -A that the actual committed blob (what CI checks out) is plain LF for both manifest.json and hacs.json. Not the cause.

  2. Multiple manifest.json files confusing discovery -- git ls-files | grep manifest.json returns 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.

  3. hacs.json itself -- valid JSON, contains name (the one documented required field per https://hacs.xyz/docs/publish/include):

    json
    {
      "name": "Nimbus",
      "render_readme": true,
      "zip_release": false
    }
  4. manifest.json itself -- valid JSON, standard shape:

    json
    {
      "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

  • requirements includes highspy (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 own config.yaml, no manifest.json at 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.