# What is not finished, and what has not been tested Two separate lists. A feature can be finished and untested, or half-built and exercised every day. Written 2026-08-27. ## Never run against the real thing Everything below is written from a published protocol or from N1MM's source and tested against a fake that speaks the same protocol. A fake agrees with whatever the person who wrote it believed, so these are the places where a wrong belief is still sitting there undiscovered. | What | Tested against | What has never happened | |---|---|---| | `RigctldRadio` | a stand-in for `rigctld` over a real socket | no real `rigctld`, no real radio. The extended answer format, the `+` prefix and the split commands are from the documented protocol. If the format is wrong, nothing works rather than something being subtly off — check this first. | | `OtrspBox` | a `MemoryStream`, checking the bytes | no real SO2R box. Command forms are from N1MM's `N1MMPort.cs`. | | `ClusterClient` | a node fake over a real socket, sending the telnet negotiation, the login prompt and spot lines | no live cluster node. Which nodes send bare CR, and which send option negotiation, is guessed from N1MM's code. | | `StationNetwork` | the message format, round-tripped | no second station, and no N1MM on the same network. | | `CwDaemonSender` | the UDP messages | no `cwdaemon`, no radio keyed. | | `WinkeyerSender` | nothing | no test at all, and no WinKeyer. The host-mode open sequence is from the WinKeyer datasheet. | The Cabrillo output has not been put in front of a contest sponsor's robot. ## Half-built **Alternating CQ (SO2R).** Needs to know when the keyer has finished sending. `MessageSender` is fire-and-forget: it has `SendAsync`, `AbortAsync` and `SetSpeedAsync` and no completion signal. Both `cwdaemon` and a WinKeyer can report completion, so the interface has to grow first. Timing it from the length of the text would be a guess that goes wrong exactly when the contest is busy. **Voice keying.** `MessageSender` was written to cover a voice keyer playing a recording, and nothing implements it. No DVK support either, so the second radio of an SO2R station cannot call CQ by voice. **The check window's Call History and Exchange columns.** Left out rather than shown empty: there is no call history file support to fill them from. **Call history files.** Not read at all. They are what fills a known station's name, state or zone in as soon as the call is typed. **QTC handling for WAE.** Not started. WAE logs will not be complete without it. **Digital modes.** A contact can be logged as RTTY or another digital mode, and the contest rules score it, but there is no digital window: no decoding, no transmitting, no interface to fldigi, MMTTY or similar. **Band-plan colouring of the bandmap scale.** N1MM colours the scale by CW, digital and phone segment. The segments differ by ITU region and there is no band-plan table here, so it is left out rather than guessed. **Contest coverage.** Eight contests are built in, plus whatever `.udc` files are in the user-defined folder. N1MM ships well over a hundred. Opening a log from a contest not in the registry fails with the contest name, which is the right answer but it is still a wall. **The Available Mults and Qs window.** Not started. ## Known rough edges **The log window's column widths** are the grid's own automatic sizing with a character-count floor. A column can change width as rows scroll into view. **Contacts arriving over the station network** are applied from the socket thread, and `AppSession.TakeFromNetwork` reopens the whole contest to do it. That is correct but heavy, and it discards what is typed in an entry window on another radio. **Two entry windows and one keyer.** The SO2R box is told which radio to key before each message, but nothing stops both radios sending at once if the operator asks them to.