First cut release. Snapshots ./src/ as ./versions/v0.1.0/ via
`just cut-version v0.1.0` (22 files: 21 chapter MDs + SUMMARY.md).
Deployed alongside `latest` at:
https://swaits.github.io/meshcore-spec/v0.1.0/
Also:
- CHANGELOG.md adopts Keep a Changelog-style version sections.
Future entries land under [Unreleased] and graduate to a version
heading when cut. The existing date-stamped pass entries stay
put as a historical record of the work captured in v0.1.0.
- README.md fixes a stale "per vX.Y.Z tag" mention left over from
the tag-based versioning model, and links the current release
explicitly.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Record this pass at the top of CHANGELOG.md:
- Upstream baseline: meshcore-dev/MeshCore @ 1a7b361 (2026-04-28).
Every normative claim was cross-checked against this commit.
- Process: adopted conventional commits; established
"upstream-firmware-is-the-golden-source-of-truth" as a load-bearing
principle for the project.
- Added: ack-crc test vectors; explicit ACK CRC algorithm; attempt
semantics including tail-byte encoding for attempt > 3; reliable
DM delivery; multipart direct-only and finalizer plain-ACK;
sender-behavior/transmission-priority section in routing; README
provenance + Author.
- Clarified: AES plaintext zero-padding scheme; MULTIPART chain
descending count + plain finalizer.
- Corrected: 17-routing previously misrepresented upstream's
path-replacement as a hash-size/SNR heuristic; upstream actually
replaces unconditionally.
- Out of scope: ai-bot-specific values (route TTL, SNR margin,
1-byte hash rejection, 150ms PATH_RETURN, 0x1424 sync word,
pending-ACK 64/125s) were considered and dropped since they are
not upstream behavior. Radio/hardware-state firmware items also
excluded as out of protocol scope.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>