version in the manifest is newer than the running firmware:
# Check latest version
curl https://updates.sensyte.io/version.json
# Response:
# …
One command, from this directory. It runs a full idf.py build, copies all
five flash artifacts, computes hashes, and regenerates both manifests.
.\deploy.ps1 -Version "X.Y.Z" -Notes "What changed"
It refuses to publish any artifact older than an input it is built from — a partition
table that disagrees with partitions.csv, or a SPIFFS image older than the
web UI. Those ship a board that boots wrong rather than failing loudly, so the check is
a hard failure. See README.md for details.