mirror of
https://github.com/mikecarper/MeshCore.git
synced 2026-09-26 18:47:56 +00:00
Two gaps found while tracing a ThinkNode M7 report of a missing OTA manifest. The M7 itself was healthy in both channels; these are what the investigation turned up around it. Pass --prune to gen-slim-manifests.py in both workflows. The generator only ever added, so an env that stopped being built kept a manifest pointing at a release asset the KEEP_BUILDS=2 prune later deleted — a 404 for `ota update` on any node still running it. The flasher-side commit adds the flag along with an empty-input guard and --prune-limit, which fails the run rather than pruning when a build looks like it silently lost envs. Add "Verify production channel is baked in", which production lacked while beta has had it from the start. The manifest base is a compile-time -D, so a build that lost it or picked up the other channel's is invisible until a node runs `ota check` — and the failure mode is production hardware OTA-ing itself onto beta. Checked against real published binaries: passes the production M7 build, rejects the beta one. OTA_MANIFEST_BASE_URL is now stated explicitly in the production env: block, equal to build.sh's default, so the verify step asserts against the value the build was actually handed instead of a second hardcoded copy that could drift. Neither change triggers a build: .github/** is in both workflows' paths-ignore.