Skip to content

release: prep v26.10.1 — controls that work or say why not, a CTR2 relay, Qt 6.12 - #6159

Merged
ten9876 merged 2 commits into
mainfrom
release/v26.10.1
Oct 4, 2026
Merged

ten9876 merged 2 commits into
mainfrom
release/v26.10.1

Conversation

@ten9876

@ten9876 ten9876 commented Oct 4, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Six-file release prep for v26.10.1, metadata and docs only. No source, test or CI changes.

Cutoff: origin/main at 18c5245e5 (#6155, merged 2026-10-04). Anything that merges after it is folded in before the tag.

95 merged changes (95 PRs, no direct commits) from 12 human contributors, plus AetherClaude (2) and Dependabot (0). There are no first-time contributors this cycle. That was checked for each login by looking for a merged PR before v26.9.5's tag, not from author_association.

Changelog

Built from v26.9.5..18c5245e5 mapped through the commit-to-PR API (repos/…/commits/<sha>/pulls), not from commit subjects. All 95 PRs are cited in the section. The notes lead with three things:

The structural half covers Qt 6.12 for every binary and source build (#5842, #6055) and the slice receive controls moving behind the seam (#5892, #5907, #5919; raw Flex commands above the seam 413 → 369, confirmed with check_command_plane.py at the cutoff). Upgrade-visible changes are called out with On upgrading inline: the Ulanzi default and removed MOX/TUNE pills (#5964), auto RF gain arming and law (#5976, #6062), DIGU/DIGL opening with AGC off (#6119), HL2 squelch calibration and the Auto SQL fallback (#6127), and the macOS 14.4 floor (#5842).

The previous tag v26.9.5 is an ancestor of main, so nothing is excluded from the range.

Docs refresh, not just version strings

Judgment calls flagged for the maintainer

Scope

file change
CMakeLists.txt project(AetherSDR VERSION 26.10.1)
README.md Current version line, plus the prose refresh above
AGENTS.md Current version line
CHANGELOG.md new [v26.10.1] — 2026-10-04 section; [Unreleased] stays and stays empty; history below byte-identical
packaging/linux/io.github.aethersdr.aethersdr.metainfo.xml <release version="26.10.1" date="2026-10-04"/> first in <releases>
ROADMAP.md cycle heading → post-v26.10.1, plus the prose refresh above

Validation

check_release_prep.py --mapping mapping.json: 29 checks, 1 FAIL (explained above), 0 WARN.

After merge: tag the resulting main commit, not this branch.

🤖 Generated with Claude Code

…lay, Qt 6.12. Principle VIII.

Bumps the six release files to 26.10.1 (2026-10-04) and writes the
CHANGELOG section from the 95 PR bodies in v26.9.5..18c5245, mapped
through the commit-to-PR API. Refreshes README and ROADMAP: In flight
advanced for aetherd, Icom, ANAN-G2, RTL-SDR and the Hermes-Lite 2, a CTR2
relay entry, the Open RFCs list re-diffed, and Recently shipped trimmed to
the v26.10.x cycle at the month rollover.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@ten9876
ten9876 requested review from a team as code owners October 4, 2026 17:59
@ten9876 ten9876 self-assigned this Oct 4, 2026

@ten9876 ten9876 left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This fulfills the stated six-file v26.10.1 release-prep scope at 0fd897ac7. There is no linked closing issue; documentation additions/corrections do not require an RFC under GOVERNANCE.md. The version, date, release range, contributor counts, and complete PR citation coverage check out. No blocking defect found. The disclosed September-highlight trim remains an editorial decision for Jeremy, and two wording clarifications below are non-blocking.

Scope

File/group Change Claimed in body? Verdict
CMakeLists.txt, AGENTS.md, AppStream metainfo Version/date metadata Yes In scope; consistent 26.10.1 / 2026-10-04
CHANGELOG.md 93-line release section and contributor credits Yes In scope; 95/95 PRs cited, older history byte-identical
README.md Version, hardware coverage and roadmap refresh Yes In scope; maturity labels preserved
ROADMAP.md Backend progress, CTR2, RFC status and October highlights Yes, including removal of September highlights In scope; editorial trim needs maintainer disposition

The six-file/no-source/no-tests/no-CI claims hold. The sole commit is release prep, authored 2026-10-04, and GitHub verifies its signature. No unrelated commit, runtime preference change, public API addition, or enforcement-baseline change is bundled here.

At ROADMAP.md:316, replacing September's Recently shipped list causes the validator's disclosed historical-version failure. I reproduced exactly 29 checks: 1 FAIL, 0 WARN; the failure concerns the removed September markers, not corruption of the preserved CHANGELOG history. Jeremy: accept the explicitly disclosed rollover trim or retain those highlights. This is an editorial disposition, not evidence of a code regression.

Blockers

None.

Nits — non-blocking

  1. Clarify which CTR2 firmware milestone is pending — README.md:252, ROADMAP.md:172, and CHANGELOG.md:29. “Waits on the CTR2's USB firmware” is underspecified relative to the cutoff evidence: #6155 records a live CTR2 relay and successful USB Start → install rule → relay starts; #6091's closure already records development firmware receiving radio status. Neither establishes a public firmware release or complete qualification. Name the remaining dependency (public release, completion, or qualification) and acknowledge the development-firmware result so the docs distinguish availability from implementation. This is a source-document comparison; I did not independently exercise CTR2 hardware.

  2. Carry forward the known old-bookmark exception — CHANGELOG.md:55. The upgrade sentence says selecting DIGU/DIGL turns AGC off, but #6119 explicitly defers old DIGU/DIGL band-stack bookmarks restoring their saved AGC to #6142, which remains open. Add a short caveat such as “Existing DIGU/DIGL band-stack bookmarks can restore their saved AGC mode; see #6142.” This reports an accepted, documented limitation of the shipped change, not a newly reproduced runtime finding or a request to fix #6142 in release prep.

Verification and attacks that held

  • Independently regenerated the commit-to-PR mapping for v26.9.5..18c5245e5, including original PR bodies and prior-contribution queries: 95 commits, 95 PRs, zero direct commits, 12 human contributors, 2 AetherClaude changes, zero Dependabot changes, no first-time contributors. The citation/count checker passes; the four additional references resolve to the stated tracking issue/RFCs.
  • Ran release-prep validation with that independent mapping: all six versions and both dates agree, AppStream validates, 22 releases are uniquely versioned/date-descending, Unreleased is empty, historical CHANGELOG content is byte-identical, local links resolve, headings/fences are sound, and git diff --check passes. Only the disclosed rollover failure remains.
  • Configured the exact PR head in a scratch worktree: configure/generate succeeds and CMAKE_PROJECT_VERSION:STATIC=26.10.1. Ran the command-plane checker at v26.9.5 and at the PR head: 413 → 369, both at their baselines.
  • Cross-checked material upgrade claims against their original PR bodies, including Qt platform floors (#5842/#6055), Ulanzi defaults (#5964), RF gain (#5976/#6062), squelch calibration (#6127), AGC (#6119), authenticated accessories (#6008), and RTL M1 (#5924). Checked the changed RFC statuses and the retained experimental/receive-only qualifications. This verifies documentary provenance, not every shipped runtime behavior.
  • Test-boundary preflight found no added/modified tests or socket-owning targets. No application build, CTest suite, mutation test, or GUI bridge session was run: this PR changes documentation/metadata only. No operator application or radio was touched. The separate model-invocable code-review skill was unavailable; manual and parallel document audits were used instead.

CI and recommendation

Needs maintainer decision on the disclosed ROADMAP trim; otherwise the review is clean apart from the two non-blocking clarifications. At posting, Static checks and sanitizer configure pass; Linux build, Windows and macOS checks are still pending. This is not a merge-ready verdict. The pull-request runs were created at 17:59:25 UTC after main's unchanged 18c5245e5 cutoff (17:43:51 UTC), so there is no stale-base gap at review time; branch protection nevertheless has strict: false.

Resolve the editorial disposition, clarify the two caveats if desired, then require the remaining required checks and CODEOWNERS review before merging. Posted as COMMENT, with no inline threads, approval, or merge action.

@ten9876 ten9876 left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review: v26.10.1 release prep

Issue fit. This is a release prep with no linked issue. Its job is defined by the release-prep skill, and I reviewed it against that: the six release files, a changelog that matches the commit-to-PR mapping, and README and ROADMAP prose refreshed to match the tree. It does that job. I reproduced every count and citation from my own mapping, I re-measured each numeric claim I could at both tags, and I found no blocker. There are two factual slips in prose that will ship (nits 1–2) and two calls for the maintainer.

Test-boundary preflight: the diff touches no test sources, tests.cmake, src/, third_party/ or workflows, so there is no socket test to flag.

Scope

File Change Claimed in body Verdict
CMakeLists.txt:10 project(... VERSION 26.10.1) yes ok
AGENTS.md:211 Current version line yes ok
README.md version line, CTR2 highlight, 4O3A auth, HL2/ANAN/RTL paragraphs, Roadmap lines yes ok (nit 2)
CHANGELOG.md:22-113 new [v26.10.1] section; [Unreleased] stays empty; history byte-identical yes ok (nits 1–2)
ROADMAP.md cycle heading, In-flight advances, new CTR2 entry, Open RFCs diff, Recently shipped rewritten and trimmed yes ok (trim needs the maintainer's ruling, below)
packaging/linux/...metainfo.xml:71 <release version="26.10.1" date="2026-10-04"/> yes ok

Everything in the diff is explained by the body. The branch is one commit, authored 2026-10-04. git diff --check 18c5245e5 0fd897ac7 is clean. The body's own scope and validation claims hold.

Blockers

None.

Nits (non-blocking)

  1. CHANGELOG.md:107: "AGENTS.md is cut to a 301-line core". AGENTS.md is 300 lines at #6072's merge commit, at the cutoff 18c5245e5, and at this head. wc -l and awk 'END{print NR}' agree. The 301 was copied from #6072's body. Say 300, or drop the count:

    - `AGENTS.md` is cut to a 300-line core with path-scoped `docs/agents/` sub-docs, long comment blocks are condensed, and the Constitution moves to 2.1.0 (#6072). `BUILD-OPTIONS.md` documents every compile-time switch, kept current by a static check (#6098). `/pr-land` merges on a clean green without chasing `main` (#6157).
  2. The CTR2 relay is described as working "over Wi-Fi or USB" with no qualification in two headline places: README.md:149 (Highlights) and CHANGELOG.md:26 (intro: "A CTR2-Max controller can now reach the radio through AetherSDR over Wi-Fi or USB"). The detail bullet (CHANGELOG.md:40), the README Roadmap line and the ROADMAP entry all say correctly that USB waits on the CTR2's USB firmware. One related point that operators will only learn from release notes: on hidapi builds the applet opens in USB mode on every launch, and nothing persists (src/models/Ctr2ProxyModel.h:26, #6155's design). So every operator on today's firmware has to switch to Wi-Fi each time. That is merged behaviour, not a prep defect, but the bullet could say so. Suggested intro sentence:

    A CTR2-Max controller can now reach the radio through AetherSDR over Wi-Fi, with a USB link whose host side is ready for the CTR2's upcoming USB firmware.

    For the README highlight, end with "…and a relay that puts a CTR2-Max controller on the radio over Wi-Fi (USB pending CTR2 firmware)".

Needs a maintainer decision (@ten9876)

  • Recently shipped trimmed to v26.10.x. The skill lists this as a maintainer gate ("the month-rollover text … the list is trimmed to it at the rollover"). The validator FAIL is the expected result of that trim, and I reproduced it: 29 checks, 1 FAIL, 0 WARN. The body does not mention one side effect. The trim also removes the last ROADMAP mentions of #5630 and #5684, two RFCs that are approved, shipped (v26.9.4) and still open (0 hits at the head). Both are still in CHANGELOG, so this only matters if ROADMAP is meant to account for every open approved RFC. Closing those two issues would also resolve it.
  • The CTR2 In-flight entry, as the body already flags.

What I verified and what I tried to break

Verified by running:

  • Mapping. I mapped all 95 commits in v26.9.5..18c5245e5 myself through commits/<sha>/pulls, separately from the PR's mapping. The result was 95 PRs, every one cited, and the four out-of-range numbers are #3849, #5262, #5468 and #6091 (issue/RFCs). release_contents.py --check agrees: 95/12, 13 Contributors entries, first-time none. Per-author counts (36/31/5/5/3/3/3/2/2/2/1/1/1) match the Contributors paragraph, and I spot-checked each person's attributed items against the PR authors.
  • check_release_prep.py --base 18c5245e5 --mapping: 29 checks, 1 FAIL (the trim). appstreamcli validates.
  • Command plane 413 → 369. I ran tools/check_command_plane.py on git archive extracts of v26.9.5 and of the cutoff: 413 and 369 (44, matching ROADMAP).
  • Frozen booleans 71 → 70. FROZEN_BOOL_COUNT in tools/check_capability_records.py is 71 at v26.9.5 and 70 at the cutoff.
  • Icom "VOX and CW break-in" leaving Remaining is correct: IcomCivBackend::setVox and setCwBreakIn both exist (IcomCivBackend.cpp:4568, :5167).
  • Open RFCs against label:rfc. Every open rfc-labelled issue missing from the list is RFC Approved, and nothing in the list has lost the label. #5893 is closed; #6106 and #6079 are open and awaiting a decision. #6091 is closed with RFC Approved.
  • "Six backends": src/core/backends/ has anan, flex, hl2, icom, rtl and sim.
  • Figures against the source PR bodies: macOS 14.4 for DMGs vs 14.5 for source builds (#5842/#6055 really do differ), glibc 2.34/2.38, the 2 kHz split threshold, the 70 ms TX tail, ±9999 Hz RIT/XIT, AGC-off 4–64 dB with a 10 dB default, FFT AVG 10 ms/step, 31.3 MB, black point −60…−160, squelch +32 dB, CW onset 128 → 85 ms, set_ts 0 → RPRT -1 on Flex too, pkexec udev install, USB as the default with hidapi, 36.6 Hz bins, and #6125 bisected to #5907 (so it is correctly not listed as a fix to a released regression).
  • The CTR2 files the changelog names exist at the cutoff (docs/ctr2-usb-relay-design.md, tools/ctr2-firmware-reference/, packaging/linux/70-aethersdr-ctr2.rules).

Not verified:

  • CMake configure / CMAKE_PROJECT_VERSION. I did not run it; CI build covers it.
  • The running app. The diff is metadata only, so there is no runtime surface to drive.
  • CI is still running. build, check-windows and check-macos were pending when I reviewed. Their runs were created at 17:59Z, after main's tip (17:43Z, the cutoff itself), so the merge base is current.

…, AGENTS.md line count. Principle VIII.

- CTR2: the intro, README highlight and Roadmap line, and ROADMAP entries
  say Wi-Fi works today and USB's host side is ready, has carried the
  radio's status stream to development firmware, and waits on a CTR2 USB
  firmware release; the CHANGELOG bullet notes USB is the default and
  nothing persists, so current firmware needs Wi-Fi chosen each launch.
- #6119's upgrade note carries the open #6142 bookmark exception.
- AGENTS.md is 300 lines, not 301.
- The 413 -> 369 command-plane drop credits #6049's and #6124's reroutes
  alongside the seam migration.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@ten9876

ten9876 commented Oct 4, 2026

Copy link
Copy Markdown
Collaborator Author

Review findings addressed in 5153aeab5. Validation is unchanged: 95/95 PRs cited, 29 checks, and the only FAIL is still the disclosed rollover trim.

Maintainer dispositions. The Recently-shipped trim and the CTR2 In-flight entry were both put to the maintainer before the PR opened, and both were chosen. The PR body now also notes the trim's side effect on #5630 and #5684.

@ten9876
ten9876 merged commit 8df6db2 into main Oct 4, 2026
7 checks passed
@ten9876
ten9876 deleted the release/v26.10.1 branch October 4, 2026 18:26

@aethersdr-agent aethersdr-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Issue fit

No linked issue, and none is wanted: a release prep is the /release-prep skill's own deliverable, so I reviewed it against .claude/skills/release-prep/SKILL.md as the spec. It satisfies it — the six release files, a CHANGELOG section in house style, a real README/ROADMAP content refresh (not a version bump), the validation list run and printed, and every judgment call routed to the maintainer in the body rather than decided quietly. I re-derived the numbers from the tree rather than trusting the body, and they hold.

Scope

File Change Claimed? Verdict
CMakeLists.txt:10 project(... VERSION 26.10.1) yes in scope
README.md:13 Current version line yes in scope
README.md:39,78-82,94-120,239-250 Highlights + Supported Hardware + Roadmap prose refresh yes in scope — mandated by the skill §4
AGENTS.md:211 Current version line yes in scope
CHANGELOG.md:11-103 New [v26.10.1] — 2026-10-04 section yes in scope; [Unreleased] stays and stays empty, history below byte-identical
ROADMAP.md Cycle heading, In flight, Open RFCs, Recently shipped yes in scope
packaging/linux/…metainfo.xml:71 <release version="26.10.1" date="2026-10-04"/> yes in scope

Nothing beyond the six files; check_release_prep.py confirms the diff touches no src/, tests/, third_party/ or .github/workflows/ path. No new public surface, no deleted guard, no default changed, no UI or behavior change — there is no code here. Nothing smells like a smuggled preference: every ROADMAP and README sentence I spot-checked traces to a PR in the range.

Blockers

None.

The one validator FAIL is the skill's own month-rollover gate colliding with its "historical mentions stay" check, it is disclosed verbatim in the body, and it is routed to the maintainer. Same for the CTR2 In-flight entry, the zero-Dependabot intro wording and ready-vs-draft. Those are decisions the body correctly surfaces, not findings:

FAIL only the four current-version lines lose the `26.9.5` string outside CHANGELOG
     - **The Glacier waterfall palette**. RFC #5670 (v26.9.5).   [+8 more]

I reproduced that run myself: 29 checks, 1 FAIL, 0 WARN, and the nine lines it lists are exactly the trimmed (v26.9.5) Recently-shipped markers — no historical mention outside that list is lost. The trim is sanctioned (§4: "the list is trimmed to that cycle at the month rollover (gate)"), so the FAIL is the check being unable to tell a rollover trim from a find-and-replace. Worth considering whether check_release_prep.py should learn to exempt Recently-shipped markers at a rollover, so the next October prep does not ship a FAIL by construction — but that is a follow-up to the tool, not to this PR.

Nits

All non-blocking.

  • ROADMAP.md:68-73 — "VOX and CW break-in" leaves Icom's Remaining, but both ship partially. The body justifies the removal with #4799/#5113, and setVox/setCwBreakIn do exist. But src/core/backends/icom/IcomCivBackend.cpp:4568-4570 opens with

    void IcomCivBackend::setVox(bool on, int level, int delayMs)
    {
        Q_UNUSED(delayMs);

    and the comment at :519 says so outright — "setVox implements enable/gain only". The capability record agrees: src/core/backends/RadioCapabilities.h:587-590 carries VoxControl::hasDelay precisely because the hang time may not be applied. Break-in is the same shape — src/core/backends/icom/IcomControls.cpp:292-296 notes "The existing boolean control selects OFF or semi break-in. Full break-in needs a future three-state UI." Suggest "VOX hang time and full break-in" stay in Remaining rather than the whole of VOX and break-in.

  • ROADMAP.md:265-268, 297-299 — the community backlog lists two features that already shipped. #3574 (NEXRAD/weather-radar overlay) is closed, and the radar overlay is in this very README's Highlights and in the v26.9.3 entry this PR trims out. #999 (IQ stream over TCI for skimmers) is closed, shipped as concurrent TCI DAX IQ skimming in v26.9.2. Both sit under "not yet scheduled — 👍 the issue to signal demand", which now invites votes on closed issues. The skill's §4 refresh list names Queued and Open RFCs but not this list, so this is convention, not a rule — and it is pre-existing. The prep is just the pass where it would normally get caught.

  • CHANGELOG.md:93 (Project and packaging) — the macOS 14.4 floor never reaches README. "Both macOS DMGs now require macOS 14.4" is upgrade-blocking for Intel Macs that cannot run Sonoma, but README.md's platform line still reads "macOS DMG (Apple Silicon + Intel)" with no floor. Worth one clause there; operators read the README, not the changelog, before downloading.

  • CHANGELOG.md:49 — the #6142 caveat understates itself. "A DIGU/DIGL band-stack bookmark saved before this change can still restore its saved AGC mode (#6142)." Per the issue, the stale med also re-saves itself, so it never ages out without a manual off. "and saves it again" would say that.

What I tried to break

Everything below is reasoned from the checkout and from GitHub metadata; I ran the prep validator and the two ratchet tools, but no build and no tests (the PR is metadata-only, and CI's seven checks on 5153aea are all green).

  • "All 95 PRs are cited." Re-derived instead of trusted. v26.9.5..18c5245e5 is 95 commits; 77 carry a trailing (#N); the new section cites 100 distinct numbers; the set difference is exactly 23 = the 18 subject-less PRs + the 5 non-PR refs the body enumerates (#3849, #5262, #5468, #6091, #6142), and every one of the 77 detectable PR numbers is cited. The arithmetic closes with nothing left over.
  • The contributor block. git log --format=%an over the range gives 36 / 31 / 5 / 5 / 3 / 3 / 3 / 2 / 2 / 2 / 1 / 1 / 1 — byte-for-byte the counts in CHANGELOG.md:97, summing to 95, 12 humans plus one bot, 13 entries. No count drift of the kind #5464 and v26.8.1 hit.
  • The two quantitative claims that are easiest to fake. python3 tools/check_command_plane.py prints 369 raw Flex command(s) above the seam; baseline 369 across 32 file(s), and git show v26.9.5:tools/check_command_plane.py sums to 413 across 32 files — so 413 → 369 and ROADMAP's "44 raw Flex commands" are both real. FROZEN_BOOL_COUNT is 71 at v26.9.5 and 70 on this head, exactly as CHANGELOG.md:21 claims. AGENTS.md is exactly 300 lines, as the "300-line core" claim says.
  • The macOS version numbers, which look like a typo. The changelog says DMGs need 14.4 but source builders below 14.5 lose their path. That is not an inconsistency: cmake/qt-pin.env:40 pins QT_MIN_MACOS=14.4 for the binaries, and scripts/setup/setup-qt.sh:205 says "Xcode $QT_MIN_XCODE needs macOS 14.5+" — two different floors for two different things. Claim survives.
  • Cross-file maturity contradictions, the #4872/#5026 failure mode. No maturity label moved; HL2 stays experimental with the "experimental → supported call itself is still open" paragraph intact; the ANAN-G2 and RTL-SDR stay receive-only in all three files; the ROADMAP's "the rest of panadapter/waterfall parity … remains" does not contradict the changelog. The README's "six backends" matches six directories under src/core/backends/, and "seven NR" matches the seven method names in AetherRxProfiles.cpp.
  • Spot-checked the prose against source rather than against the PR bodies. rfLevelToPanGain (src/core/RigctlProtocol.cpp:241-249) over the HL2's −12…+48 dB range does put 0.5 at +18 dB; Hl2RxDsp.cpp:355 documents the "~85 ms group delay (4096 samples at 48 kHz)"; RtlSdrDdc.h:22 documents the continuous 65536-point FFT; SquelchLevelScale.h exists for the new squelchLevelScale capability; "6.12.0 LTS" is sourced in docs/BUILDING.md:25. README.md:159 already says "Qt 6.12 is required", so the headline does not contradict it.
  • The Open RFCs edit. #5893 really is closed, so its removal is right; #6106 and #6079 are open and rfc-labelled without RFC Approved, so they belong there and not up in the cycle. I did not re-check all 39 entries in that list against label:rfc — I verified the three the diff moves plus #5468, so the body's "diffed against label:rfc" claim is spot-checked, not exhaustively confirmed.
  • No socket tests, fake peers, or tests.cmake changes — the diff adds no test of any kind and the skill gates this PR to exactly six non-test files, so there is nothing to record under the socket-test reporting duty. Nothing to flag for removal either.
  • The odd ${PR_DIFF} strings in the diff I was handed (Serial ${PR_DIFF} Controllers, C${PR_DIFF}C bank, KK7GWY ${PR_DIFF} Claude) are a harness artifact, not content: grep -n 'PR_DIFF' across CHANGELOG.md, ROADMAP.md, README.md and AGENTS.md in the head checkout returns nothing. The files are clean; every one of those is an &.
  • CodeGuard and Copilot returned nothing, and the harness marked no security-sensitive change. I did not run a scan, so that is an absence of findings rather than a clean bill.

Recommendation

Approve with nits. This is the most thoroughly self-validated prep in the recent record: every number in it reconciles against the tree, the single validator FAIL is the skill's own documented rollover tension and is disclosed with the exact lines, and the five judgment calls are stated as the maintainer's rather than made quietly. The nits are all one-clause wording fixes — the Icom Remaining line at ROADMAP.md:68-73 is the one I would actually change before merging, since it claims two control gaps closed that the source says are closed only partway. Then merge and tag the resulting main commit, as the body already says.

Thanks for the citation-complete section and for running the validator honestly instead of trimming the trim to make it pass.


🤖 aethersdr-agent · cost: $7.8271 · model: claude-opus-5

on8st added a commit to on8st/AetherSDR that referenced this pull request Oct 4, 2026
Main gained the RTL M1 work (aethersdr#5924), receive-control routing (aethersdr#5919),
the int16 cast guards (aethersdr#6089), BUILD-OPTIONS.md (aethersdr#6098) and the
v26.10.1 release prep (aethersdr#6159). Seven files this branch touches merged
without conflict.

WdspChannel::Config now has a defaulted operator== (aethersdr#5924); this
branch's txAmCarrierLevel and txFmDeviationHz take part in it.
None of main's changes sits under AETHER_HL2_TX_TXA.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant