Layer 3 Doc-vs-Impl Audit (2026-06-26)¶
Snapshot audit of Layer 3 documentation drift against the in-repo src/rfgen/ implementation, taken on the same branch as the 6 new TorchSig emitter wrappers (feat(emitters): add 6 TorchSig builder wrappers...). This file is informational and prescribes no fixes; severity tags are calibrated to the user’s downstream tolerance for misleading vs imprecise drift.
Dominant pattern: several Layer 3 doc files still describe a richer pre-implementation surface (long catalog of class names, dotted taxonomy strings, ChannelPipeline / ChainKind machinery, Transformation.CHANNEL enum member) that no longer matches the lean code shipped under src/rfgen/. Several Layer 3 reference pages are also referenced from peer docs but do not exist on disk (docs/reference/api/{device-fingerprint,propagation,rx-frontend}.md).
# |
Doc |
Doc claim |
Impl status |
Severity |
|---|---|---|---|---|
1 |
|
|
|
high |
2 |
|
|
|
high |
3 |
|
Lists |
Actual classes: |
high |
4 |
|
|
|
high |
5 |
|
Radar covers Barker B5/B7/B11/B13, polyphase Frank/P1/P2/P3/P4, PMCW Costas/Frank, FH Costas |
|
high |
6 |
|
Drone family with OcuSync, Lightbridge, FPV analog, MAVLink, Crossfire/ELRS |
No drone emitter module under |
high |
7 |
|
ADS-B supports DF11, DF17, DF18 with airborne-position/velocity/identification distribution |
|
medium |
8 |
|
LTE 1.4-20 MHz bandwidth list |
|
low |
9 |
|
GSM/2G GMSK class shipped |
No GSM emitter class anywhere in |
high |
10 |
|
Captures-and-playback is a first-class emitter implementing |
No |
high |
11 |
|
|
|
high |
12 |
|
|
Neither |
high |
13 |
|
|
No |
high |
14 |
|
Default propagation backends named |
|
high |
15 |
|
|
|
medium |
16 |
|
|
|
low |
17 |
|
Index lists exactly the 13 per-transformation ABCs and explicitly disclaims AWGN as a stage |
Contradicted by |
medium |
18 |
|
Fingerprint is a single |
|
high |
19 |
|
Pulsed-radar class labels |
|
high |
20 |
|
Page text references |
Only |
medium |
21 |
|
Cross-references |
No |
medium |
22 |
|
Anchors block lists |
These now exist as of this branch but the anchor block still places them alongside true stubs rather than promoting them to full class-index rows next to |
low |
23 |
|
“There is no separate AWGN stage in the current design” |
Contradicted by |
medium |
Severity summary: 12 high, 7 medium, 4 low (23 findings total).
Top three most surprising:
The
Transformationenum docs name members (CHANNEL,DAC_QUANTIZATION, …) that simply do not exist insrc/rfgen/enums.py; the impl uses short names (PROPAGATION,DAC, …). This is doc-only drift that could mislead any first-time reader who copies a doc snippet.ChannelPipelineandChainKindare documented in detail (constructor,applysemantics,kind=flag) but neither class exists anywhere in the repo; the channel pipeline is realized by separate per-transformation classes wired via the entry-point registry.LoRaEmitter.supported_classesis documented as a multi-class taxonomy (iot.lora.css.sf7.bw125.cr-4-5, …) but the shipped implementation accepts only the single literal"lora", so any user driving the framework from doc-listed labels will hit aclass_label not in supported_classeserror.
Resolution status (as of 2026-06-27)¶
Per-finding annotations:
# |
Status |
Resolution |
|---|---|---|
1 |
RESOLVED in |
|
2 |
RESOLVED in |
The dotted-taxonomy table is replaced with the actual |
3 |
RESOLVED in |
Class index in |
4 |
RESOLVED in |
Class index lists only the shipped |
5 |
DEFERRED per user decision: planned for future emitter expansion. |
|
6 |
DEFERRED per user decision: planned for future emitter expansion. |
|
7 |
RESOLVED in |
ADS-B catalog row trimmed to the single shipped |
8 |
RESOLVED in |
LTE row updated to |
9 |
DEFERRED per user decision: planned for future emitter expansion. |
|
10 |
DEFERRED per user decision: planned for future emitter expansion. |
|
11 |
RESOLVED in |
|
12 |
RESOLVED in |
|
13 |
RESOLVED in |
|
14 |
RESOLVED in |
Sionna concretes documented with the actual shipped names ( |
15 |
RESOLVED in |
|
16 |
RESOLVED in |
|
17 |
RESOLVED in |
|
18 |
RESOLVED in |
|
19 |
RESOLVED in |
|
20 |
RESOLVED in |
Three new API reference pages created: |
21 |
RESOLVED in |
The dangling |
22 |
RESOLVED in |
The six new TorchSig builder wrappers ( |
23 |
RESOLVED in |
|
Updated severity summary¶
Resolved on this PR: 18 findings (1, 2, 3, 4, 7, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23). The category-A “doc-update-only” plus category-B trivial fix plus category-C three new API pages all landed.
Deferred per user decision: 5 findings (5, 6, 9, 10, plus the radar half of 4) - all explicitly listed under
## Deferred for future emitter expansionindocs/signal-catalog/index.mdwith a one-sentence note that each is planned for a future release and NOT shipped today.Net status: 18 resolved, 5 deferred-with-marker, 0 outstanding.