Skip to content

docs(MOR-3821): TCI server design - #4382

Merged
morozsm merged 7 commits into
mainfrom
codex/mor-3821-tci-design
Oct 28, 2026
Merged

morozsm merged 7 commits into
mainfrom
codex/mor-3821-tci-design

Conversation

@morozsm

@morozsm morozsm commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

Linear: MOR-3821
Change class: docs

Design document for a TCI (ExpertSDR3 protocol) server in Core, so OpsLog, JTDX, WSJT-X Improved, MSHV and loggers can use any RigPlane radio. Docs only: one new file, docs/superpowers/specs/2026-10-27-tci-server-design.md. No code, no behaviour change.

What it decides

  • Two layers: a radio-agnostic leaf rigplane.tci (stdlib and itself only; enforced by an import-linter contract and an AST test; no separate package until a second outside user exists) and one thin rigplane.tci_adapter over the existing command ingress, ManagedTxAuthority and AudioSession.
  • No second mechanism: the RFC 6455 code, the fail-closed TX gate and the managed-key choreography are extracted from web/rigctld first (P0a to P0e) instead of copied.
  • Command subset for phase "control", TX safety, phase "audio" stream mapping, listener defaults (127.0.0.1:50001, opt-in), test plan (eesdr-tci conformance, seam tests, recorded client transcripts, RX-only real-app smoke) and a delivery plan of 15 units bundled into five PRs (about 8.7k lines, each PR up to the owner's 4000-line rule, built from logical failing-first commits).

Evidence limits

No live TCI session was captured. Client behaviour comes from the TCI 2.1 spec, eesdr-tci and AetherSDR's published docs (second-hand); open items are marked and closed by a planned capture step (C0). No AetherSDR source was read.

Review

Local Codex pre-review ran three rounds on this file (9, 6 and 3 findings). Rounds 1 and 2 were fixed in full. Round 3's two P1 findings are fixed in the final commit; its one P2 is recorded as open question Q11. By the owner's rule for design docs no fourth round was run, so PRE-REVIEW: CLEAN was not reached for this head and no Agent Review: PASS has been posted. The coordinator reviews the final version.

Open questions (section 13)

Decided on 2026-10-27/28 (coordinator and owner): Q1 port 50001, Q2 TCI off in Core unless --tci, Q3 tune not honoured in release 1, Q5 trx_count:1 first, Q6 parity with rigctld and one shared network-exposure setting, Q7 extract shared mechanisms first, Q8 PRs up to 4000 lines, Q9 framing inside the leaf, Q10 TX capture later with the owner present, Q11 input restoration a documented known limitation. Open: Q4 protocol/device strings, settled by capture C0.

🤖 Generated with Claude Code

morozsm and others added 5 commits October 27, 2026 20:01
Design for a TCI (ExpertSDR3 protocol) server as a thin adapter over the
existing command ingress, managed TX authority and audio session: command
subset, TX safety, audio phase, listener config, test plan and PR phasing.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…n adapter

Add the coordinator's layering decision: rigplane.tci is a protocol package
that imports only the standard library and itself, enforced by an
import-linter contract and an AST test; rigplane.tci_adapter is the only
code that knows Core. Re-plan the PRs accordingly.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Channel B independent of split, refuse unsupported TX sources, independent
liveness watchdog, TOT stated as configured, TX playout buffer, real mono RX
audio, TX_CHRONO cadence per channel count, owner-specific audio admission,
two-way direction-labelled capture with a coverage report.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Split TX tuple follows the single TCI modulation, refusals go to the requester
only, effective TX frequency includes XIT, DDS/IF derived per channel, explicit
mode table without NFM, TX input established and verified before source=tci.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Key-time TX input preparation runs inside the authority after admission
(before_on hook), split TX tuple verifies the numeric DATA sub-mode (new P0e),
and the unsupported input-restore claim is removed in favour of an open
question.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-28T00:32:38.196117Z f268463 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

morozsm and others added 2 commits October 27, 2026 20:31
…ive PRs

Port 50001, trx_count 1 first, extract shared mechanisms first, framing in the
leaf. The owner's 4000-line rule replaces the 1000-line plan: 15 units are
bundled into five PRs with logical commits, failing-first and seam tests.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
TCI off unless --tci, tune not honoured in release 1, parity with rigctld with
one shared network-exposure setting, TX capture later with the owner present,
input restoration a documented known limitation.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@morozsm

morozsm commented Oct 28, 2026

Copy link
Copy Markdown
Collaborator Author

Agent Review: PASS c35de5f

Coordinator review of the design doc after three Codex rounds (round 3 P1s fixed; its P2 recorded as Q11 known limitation). Docs only, one file. Decisions recorded in §13: Q1/Q5/Q7/Q8/Q9 by coordinator, Q2/Q3/Q6/Q10/Q11 by the owner. Additional decisions: rigctld's unmanaged 0.0.0.0 default is NOT changed by C4 (stays an explicit question in that PR); the A2 (TX audio) merge gate on the C0-TX session stays as written.

@morozsm
morozsm added this pull request to the merge queue Oct 28, 2026
Merged via the queue into main with commit 48751de Oct 28, 2026
16 of 18 checks passed
@morozsm
morozsm deleted the codex/mor-3821-tci-design branch October 28, 2026 00:42
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