Skip to content

v0.6.3-esp32 release ships a binary that internally identifies as 0.6.2 #505

@proffesor-for-testing

Description

@proffesor-for-testing

Summary

The v0.6.3-esp32 release asset cognitum-esp32s3-v0.6.3.bin has the right filename but its embedded app_desc says version: 0.6.2, date: Apr 28 2026. Boot logs from any ESP32 running this firmware will report App version: 0.6.2 and main: ESP32-S3 CSI Node (ADR-018) — v0.6.2 — Node ID: N, regardless of what the release was tagged.

Why now

Surfaced during 2026-05-05 fleet testing. Boot logs and external monitoring of the deployed fleet still say "0.6.2" two weeks after the v0.6.3 release was rolled out, which made me initially think the deployment had been rolled back. Verified by SHA-comparing the running ESP32's flash dump against the release asset:

  • ESP32 ota_0 SHA: 2a69d3bc464a768f9f6f33f436b6a56d501e6df414c5a6663ed78efacd3490e8
  • cognitum-esp32s3-v0.6.3.bin SHA: 2a69d3bc464a768f9f6f33f436b6a56d501e6df414c5a6663ed78efacd3490e8 ✓ identical

So the binary is the v0.6.3 release. It just identifies as 0.6.2 internally.

Done looks like

  • version.txt is bumped before tagging (the CMake build reads PROJECT_VER from this file via file(STRINGS ... PROJECT_VER LIMIT_COUNT 1))
  • Optional: a CI guard that fails the release workflow if the tag name doesn't match version.txt

Work items

  • One-line fix in the release workflow: echo "0.6.3" > version.txt && git commit -am "chore: bump to 0.6.3" && git tag v0.6.3-esp32
  • (Optional) Re-tag the existing v0.6.3-esp32 release with a fresh build, OR cut a v0.6.4-esp32 with the version string corrected

Repro

$ strings cognitum-esp32s3-v0.6.3.bin | grep -E "^0\\.6\\."
0.6.2

$ python3 -c '
import struct
data = open("cognitum-esp32s3-v0.6.3.bin","rb").read()
i = data.find(struct.pack("<I", 0xABCD5432))   # ESP-IDF app_desc magic
print("version:", data[i+16:i+48].split(b"\\x00",1)[0].decode())
print("date:   ", data[i+96:i+112].split(b"\\x00",1)[0].decode())
'
version: 0.6.2
date:    Apr 28 2026

The MGMT-only SPI-cache crash fix (RuView#396) IS in this firmware regardless — that's confirmed by the boot log line csi_collector: Promiscuous mode enabled (MGMT-only, RuView#396). So nothing functional needs to change; just the version-string accounting.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions