Skip to content

[c-RCP-AUDIT-02] Backfill TC18 citations on ~801 uncited requirements #164

Description

@SoundMatt

Background

.fusa-reqs.json has 1023 requirements. As of 2026-08-07, only 222 (~22%) carry a tc18 citation field pointing back to the governing spec ("§X.Y Table N, TC18.txt L1234-1256" format). This corrects an earlier, wrong impression (based on a flawed grep -c count) that this repo was already near-total on citation coverage — it is not.

This is the same class of work already done for c-RCP's SHOULD/MAY clauses (see docs/TC18-NON-NORMATIVE-CLAUSES.md and the MAY-clause citation pass) and already flagged as needed for cpp-RCP/rust-RCP/go-RCP's MUST clauses — c-RCP's own gap is smaller in relative terms but still large in absolute count.

Current per-category breakdown (categories below 100% cited, TC18-relevant ones only)

Categories correctly at 0% because they are NOT TC18 concepts (RELAY-generic sentinels, protocol-bridge adapters, or tooling) — do not add citations to these, it would be citing a spec section that doesn't actually govern that code: ADMIN, AUTH, CLI, CORE, DDS, DOIP, GRPC, MQTT, OBS, PLATFORM, REC, REST, RL, SHMEM, SOMEIP, UDS, ERR (RELAY-generic sentinels, not TC18 Table 27 — that's WIREERR, see issue #163), FI (fault-injection test tooling).

Categories genuinely TC18-relevant and needing backfill (uncited/total):

AVTP 0/20   DL 0/13    FRAG 0/18   L2 0/10     MDNS 0/11
PWR 0/15    TSN 0/8    UDP 0/19    WDG 0/12    CFG 2/13
DISC 1/29   MOCK 1/27  WDG 1/12    SEQ 4/14    TRIG 4/13
CANCEL 4/12 PWM 4/58   ADC 8/36    GPIO 5/37   SPI 5/35
ISELED 5/28 I2C 3/20   LINEP 6/22  MDIO 6/22   SRV 6/21
WAKEUP 6/22 CHAIN 3/12 CMP 10/27   CANEP 11/32 UART 8/37
E2E 16/44   ACF 15/29  LIFECYCLE 18/37   PWRMODE 16/28   RMAP 47/69

(RMAP/LIFECYCLE/PWRMODE/ACF are already the best-covered — finish those first, see Method below.)

Spot-check evidence (don't assume the rest without checking)

AVTP and WDG were individually verified (2026-08-07): both are legitimate, complete, well-tested content with no citation at all — i.e. this is a citation-backfill problem, not a missing-content problem, at least for those two. The other ~48 categories above were not individually re-verified with the same rigor this session. Do not assume they're all "just uncited" without checking each one — if a category turns out to have a genuine content gap during this backfill, that's a different, more serious finding (stop and open a dedicated issue, don't just add a citation to something wrong).

Method (for the agent picking this up — same discipline that caught real bugs in this repo's earlier passes, e.g. c-RCP#151, #153-158)

  1. Work module by module, not all at once. Suggested order: finish the already-partially-cited foundational layers first (ACF, AVTP, RMAP, LIFECYCLE, PWRMODE — these are load-bearing for everything else), then per-endpoint-type batches (GPIO, SPI, PWM, ADC, I2C, UART, CAN, LIN, ISELED, MDIO, WAKEUP), then the remaining transport/protocol layers (L2, UDP, DL, FRAG, TSN, MDNS, PWR).
  2. For each requirement, read its text field, find the corresponding TC18 section by re-reading the actual spec (re-extract pdftotext -layout from OA_TC18_specification_v_0.5.1_RC.pdf if no working extraction exists — do not commit the PDF itself, confidentiality restriction), and confirm the requirement's stated behavior actually matches what TC18 says before citing it. This is not a mechanical fill — the equivalent pass on other requirements this session found real bugs (mis-stated behavior, wrong field widths) precisely because each citation forced a real re-read against the primary source.
  3. Citation format: "§X.Y (\"short paraphrase\"), TC18.txt LNNNN" or "...LNNNN-MMMM" for a range — match this repo's existing convention exactly (see any of the 222 already-cited entries for examples).
  4. Batch into one PR per module/category (not one PR per requirement, not one giant PR) — matches this repo's established size discipline.
  5. Verify with a freshly-built, CI-pinned cfusa per PR: check 0 errors (citations are additive, should never break trace coverage since they don't change impl/test tags), full test suite green.
  6. Update ROADMAP.md with a milestone entry per batch, following the existing convention (see the SHOULD/MAY pass's own milestone entry for the exact style).

Not in scope for this issue

  • The WIREERR cluster's behavioral gap (codes defined but not wired to real response paths) — that's issue [c-RCP-AUDIT-01] Wire TC18 Table 27's 16 unmapped error codes to real response paths #163, a different kind of gap entirely (missing wiring, not missing citation).
  • tc18_master_id — a separate, new field this repo doesn't have on any entry yet, blocked on a cross-repo master-catalog rebuild that hasn't happened. Don't add it as part of this backfill; track separately.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions