development is x86_64 with no RFID reader attached, so the reader path exits 1
by design. That looks like breakage when it is not, so document it.
- The expected output on this host, including why /dev/ttyS0 gives
'Input/output error' (node exists, hardware does not answer) rather than
'device not found' - the app distinguishes the two.
- The 5-stage startup as a diagram, with the code and exit code for each stage,
and why stages 1-2 fail fast on purpose.
- How to exercise the reader path with no hardware: the PTY tests, plus a
standalone snippet that writes a real RDM6300 frame. Both the snippet and the
documented outputs were run verbatim, not written from memory.
- The pipe trap: head closes the pipe early and the shell then reports
128+SIGPIPE, so redirect to a file when checking the real exit code.