This checklist complements BRANCH_AND_DEPLOYMENT_WORKFLOW.md. The exact validated commit is the release unit.
Before starting or closing release work:
- implementation/documentation changes are on
develop; -
mainis an ancestor ofdevelop; - there are no independent main-only feature/fix commits;
- no force-push, squash, rebase or cherry-pick is planned between acceptance and stable promotion.
At a stable promotion boundary, main and develop should point to the same exact accepted SHA.
For a runtime release:
-
custom_components/sv_dashboard/manifest.jsonhas the intended package version; -
FRONTEND_VERSIONmatches the intended frontend/cache version; - every internal
?v=frontend import uses the same version when frontend code changed; - unchanged internal frontend modules may retain their existing cache key when only the package/top-level resource version changes;
- the HACS metadata/minimum Home Assistant requirement remains correct;
- no changed frontend is shipped under a cache key that was already served for different code.
Documentation-only cleanup does not require a package version bump when no runtime/browser asset changes.
For prerelease validation:
- the GitHub release is explicitly marked prerelease; do not publish a beta as a stable release merely to influence HACS;
- beta testers enable the HACS per-repository Pre-release switch before testing update discovery;
- after a HACS refresh, the update entity advertises the semantic
v0.6.0-beta.Ntag rather than adevelopcommit SHA; - the tester records the displayed installed/available versions and, when relevant, a screenshot of the Home Assistant update notification;
- a HACS-generated external release-link 404 is tracked separately from package/runtime health; HACS 2.0.x currently constructs that link without GitHub's required
/tag/segment (see #41).
Before the first stable release, explicitly review the repository default-branch/release-channel policy so unaccepted develop commits cannot be mistaken for the stable update channel.
The exact develop Candidate must pass the repository gates:
- Python compile checks;
- JavaScript syntax checks;
- Node regression suite;
- JSON validation;
- Home Assistant 18-language key/placeholder parity;
- frontend 18-language key/placeholder parity and locale fallback checks;
- backend 18-language message/placeholder parity;
- SV domain/branding audit;
-
git diff --check/whitespace checks; - HACS validation;
- Hassfest.
Record the exact Candidate SHA and Validate workflow run.
Runtime acceptance is required when the change affects Home Assistant behavior, data, entities or frontend output.
- deploy the exact Candidate SHA to the designated acceptance instance;
- record Candidate and actual Runtime SHA/version separately;
- perform the task-specific functional checks named by the active Issue/change;
- perform a normal Home Assistant reload/restart only when required by the changed code;
- do not add unrelated health/transport gates before functional acceptance;
- if a diagnostic patch proved a fix, integrate it into canonical source, remove the temporary path, create a new Candidate and retest the affected behavior;
- mark
Validatedonly for the exact integrated Runtime SHA that actually passed the required checks.
For documentation-only changes, repository validation plus content review can be sufficient; do not invent a Home Assistant runtime deployment solely to validate Markdown.
When applicable:
- generated dashboard opens successfully;
- Vehicle/Charging/Statistics/Trips/GPS/Wake-up/Notifications/System structure remains correct for the selected capabilities;
- compact vehicle-overview card works independently;
- changed user-facing strings remain complete across all 18 supported languages;
- labels remain concise enough for Home Assistant controls/cards;
- new/changed package entities appear with correct naming and controls;
- setup/options flow behaves correctly for a fresh config entry;
- multiple-vehicle behavior is not broken;
- missing optional vehicle capabilities degrade safely rather than creating fake values;
- missing third-party card dependencies produce a clear setup state rather than a broken dashboard.
Before promotion/release:
- no VIN, account/customer ID, exact location, GPS track, recipient name, credential, token or raw private export was added;
- public screenshots were visually inspected after opaque redaction;
- no
.storagefile or private package Store dump is committed; - diagnostic examples use sanitized identifiers rather than real private values.
After exact validation and explicit maintainer/user acceptance:
- verify
mainis still an ancestor of the exact ValidateddevelopSHA; - fast-forward
mainto that same SHA; - do not create a new squash/rebase/cherry-pick commit for promotion;
- verify
main == developat the promotion point; - create the tag/GitHub release from the promoted
mainSHA when a release is intended.
- update
CHANGELOG.mdfor user-facing changes; - update README/installation/entity/feature/localisation documentation when the contract changed;
- keep still-open work in GitHub Issues rather than duplicating temporary version-specific runbooks in
docs/; - close or update the operative Issue with Candidate / Runtime / Validated and the final promotion/release SHA.