Skip to content

docs(automation-bridge): full verb audit — document every bridge verb (#3928)#3929

Open
jensenpat wants to merge 1 commit into
aethersdr:mainfrom
jensenpat:fix/3928-bridge-verb-docs
Open

docs(automation-bridge): full verb audit — document every bridge verb (#3928)#3929
jensenpat wants to merge 1 commit into
aethersdr:mainfrom
jensenpat:fix/3928-bridge-verb-docs

Conversation

@jensenpat

Copy link
Copy Markdown
Collaborator

What

Issue #3928 asked to document the four verbs PR #3920 added to the header but not to the public reference. This goes further per the request: a full audit of every automation-bridge verb, so docs/automation-bridge.md is a complete, categorized reference an agent can drive from. The audit found the doc was missing far more than four — ~20 verbs and several sub-actions had no public documentation.

Audit method

Extracted the complete verb surface from the code (the handleLine dispatch, every doInvoke action, every doGet model, and all do* sub-action handlers), cross-checked it against the doc, and verified completeness against the raw cmd == / model == / action == token lists. Result: every cmd token, get model, and invoke action is now documented (self-checked — zero missing).

What was undocumented (now fixed)

Area Was missing
New sections window, resize, menu, tune, slice (full: add/remove/select/tx/txant/rxant/rxsource), txwaterfall, floors, whoami, mark, log, record, station
Transmit (gated) group key, cwx, txtest, atu, testtone — with the AETHER_AUTOMATION_ALLOW_TX rail + force-unkey watchdog spelled out
invoke actions selectRow, submit (+ submit-vs-setText)
get models dsp (corrected active/methods/tuning shape — no top-level enabled), meters; noted receiveSync aliases sync
streams resync (alias refresh); ~500 ms re-poll framed as best-effort, not a contract
dumpTree node fields windowState, checkable-button text/checked, sliceId, per-node noiseFloorDbm/displayFloorDbm
TX-safety callout corrected the button name-fallback to the narrowed mox/ptt/transmit/cwx set (tune/atu/vox were dropped in #3918 so "Tune Now" isn't false-blocked)

Plus a new Verb index at the top of ## Verbs: one categorized quick-reference table of the complete catalog, each row linking to its section.

Proof — spot-checked live

Docs-only (no code change), but every documented request/response shape was run against a live bridge (QT_QPA_PLATFORM=offscreen, FLEX-8400M) and the JSON matched, e.g.:

get dsp active      → {"model":"dsp","ok":true,"property":"active","value":"none"}
window fullscreen   → {"action":"fullscreen","ok":true,"windowState":"fullscreen", …}
streams resync      → {"ok":true,"scope":"radio","resync":"requested","hint":"re-poll 'streams radio' after ~500ms …"}
log set aether.dsp on → {"enabled":true,"id":"aether.dsp","ok":true}
floors              → {"ok":true,"floors":[{"panIndex":0,"noiseFloorDbm":-99.68,"displayFloorDbm":-99.17,"visible":true}]}
invoke … selectRow 0 → {"ok":true,"selectedRow":0,"selectedRowText":"✓", …}

Fixes #3928.

💻 Generated with Claude Code (Opus 4.8) with architecture by @jensenpat

@aethersdr-agent

Copy link
Copy Markdown
Contributor

Hi @jensenpat — thanks for the thorough verb audit here, this is genuinely useful reference work. 🙏

I looked into the failing check and I'm confident this is a CI-infrastructure failure, not a problem with your change.

Why I'm confident

  • This PR modifies exactly one file — docs/automation-bridge.md (448 additions, 9 deletions, no source files touched). A documentation-only diff cannot cause a C++ compilation failure.
  • The job that failed is check-macos, and it failed in the Build step (run 28479828370). All the earlier steps — Homebrew deps, DeepFilterNet3 setup, ccache, Configure, Opus/RADE — passed, then the compile step itself fell over.
  • At the time I checked, the Linux build and check-windows jobs were still in progress (not failed). A real source defect would fail the compile on every platform, not just macOS.

Put together — docs-only diff + macOS-only failure in the compile step — this is almost certainly a transient on the macOS runner (an interrupted/poisoned ccache entry, a Homebrew/toolchain hiccup, or the runner running out of resources mid-compile), not anything in your text.

A caveat on transparency: the log tooling I have surfaces step-level pass/fail but not the raw compiler output for this run, so I can't quote the exact error line — I'm deliberately not inventing one. The diagnosis above is from the changed-file list and the job topology, both of which are unambiguous.

Suggested fix

Just re-run the failed check-macos job — a maintainer can hit Re-run failed jobs on the run page, or push an empty commit (git commit --allow-empty -m "ci: re-trigger") to kick a fresh build. No code change is warranted. If a clean re-run still fails the macOS compile on a docs-only branch, that's a CI config issue on main worth a separate look (and would affect every open PR, not just this one).

No Copilot or other reviewer comments are present on this PR, so there's nothing code-related to fold in here.

Thanks again for taking the time on this — it's a docs win and the failure isn't on you. 👍


🤖 aethersdr-agent · cost: $3.1847 · model: claude-opus-4-8

@jensenpat jensenpat marked this pull request as ready for review June 30, 2026 23:26
@jensenpat jensenpat requested a review from a team as a code owner June 30, 2026 23:26
…aethersdr#3928)

PR aethersdr#3920 added four verbs to the header comments but never to the public
reference. A full audit of AutomationServer.{cpp,h} against
docs/automation-bridge.md found the doc was missing far more than those four:
~20 verbs and several sub-actions had no public documentation at all.

Audit method: extracted the complete verb surface from every handler (handleLine
dispatch, doInvoke actions, doGet models, and all do* sub-action handlers),
cross-checked it against the doc, and verified completeness against the raw
`cmd ==`/`model ==`/`action ==` token lists. Every cmd token, get model, and
invoke action is now documented (self-checked).

Added/updated:
- New "Verb index" — one categorized quick-reference table of the complete
  catalog, each row linking to its section.
- New sections: window, resize, menu, tune, slice (full: add/remove/select/tx/
  txant/rxant/rxsource), txwaterfall, floors, whoami, mark, log, record, station,
  and a "Transmit verbs (gated)" group (key, cwx, txtest, atu, testtone) with the
  ALLOW_TX rail + force-unkey watchdog spelled out.
- invoke: documented selectRow and submit (and submit-vs-setText).
- get: added dsp (with the corrected active/methods/tuning shape) and meters;
  noted receiveSync is an alias of sync.
- streams: added resync (alias refresh); framed the ~500ms re-poll as best-effort.
- dumpTree: documented windowState, checkable-button text/checked, sliceId, and
  the per-node noiseFloorDbm/displayFloorDbm.
- TX-safety callout: corrected the button name-fallback to the narrowed
  mox/ptt/transmit/cwx set (tune/atu/vox were dropped in aethersdr#3918).

Docs-only; no code change. Every documented request/response shape was
spot-checked live against a running bridge (offscreen, FLEX-8400M).

Fixes aethersdr#3928.

💻 Generated with Claude Code (Opus 4.8) with architecture by @jensenpat

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@jensenpat jensenpat force-pushed the fix/3928-bridge-verb-docs branch from e94d10c to a2813f1 Compare June 30, 2026 23:31

@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.

Thanks for this, @jensenpat — this is an unusually thorough docs PR, and the "full audit" framing holds up under verification.

I cross-checked the doc against src/core/AutomationServer.cpp rather than taking the audit on faith, and the high-risk factual claims are all accurate:

  • Complete verb coverage — every cmd == token in handleLine (33 of them: ping/dumpTree/grab/floors/whoami/invoke/close/drag+mouse/showMenu+openMenu/contextMenu/menu/resize/window/get/connect/disconnect/tune/slice/pan/streams/txwaterfall/log/mark/audioCapture/record/station/key/cwx/txtest/atu/testtone) appears in the new Verb index. No misses.
  • TX-safety fallback list — the narrowed mox/ptt/transmit/cwx set and the "tune/atu/vox dropped in #3918" rationale match isTransmitControl/isTransmitAction (AutomationServer.cpp:859-895) and the explanatory comment verbatim.
  • get dsp shapedspEngineSnapshot returns exactly active/methods/tuning with no top-level enabled (lines 1264-1266), and methods.<NAME> carries available. The doc's correction is right.
  • invoke selectRow/submit — the side-effect-free setText vs returnPressed-firing submit, and the selectedRow/selectedRowText echo, match lines 2431-2504.
  • streams resync (alias refresh), the windowState enum, and the ~500ms best-effort hint all match the implementation.

No code changes, scope is confined to the single doc file, and CI is green. The #transmit-verbs--gated anchor's double hyphen is correct for GitHub's emoji-stripping anchor generation, so the index links resolve.

Nothing blocking from me — this materially improves the reference. Nice work.


🤖 aethersdr-agent · cost: $4.6001 · model: claude-opus-4-8

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.

docs(automation-bridge): document selectRow / window / get dsp / streams resync verbs

1 participant