Skip to content

rewrite(phase6): batch 10 — SPI/UART/WAKEUP catalog re-derivation - #163

Merged
SoundMatt merged 1 commit into
rewrite/v3-from-c-rcpfrom
phase6/spi-uart-wakeup
Aug 22, 2026
Merged

rewrite(phase6): batch 10 — SPI/UART/WAKEUP catalog re-derivation#163
SoundMatt merged 1 commit into
rewrite/v3-from-c-rcpfrom
phase6/spi-uart-wakeup

Conversation

@SoundMatt

Copy link
Copy Markdown
Owner

Part of the v3.0.0 ground-up rewrite (#129, ROADMAP.md Phase 17). Phase 6 (requirement catalog), batch 10 of 13.

This batch: SPI (42 c-RCP entries) / UART (49) / WAKEUP (36)

spi.hpp/wakeup.hpp were already ahead of the catalog — zero code edits needed. uart.hpp needed genuine work: its manifest only covered 9 of 49 ids.

  • 106 new catalog entries: SPI 36, UART 40 (including REQ-UART-048 at c-RCP's own honest status: partial), WAKEUP 30.
  • 19 id-collision gaps filed (SPI 5, UART 9, WAKEUP 5).
  • 2 more gaps: REQ-SPI-037 (matches c-RCP's own not-implemented, genuine TC18 §13.7.3.3 spec silence) and REQ-WAKEUP-026 (a real write-time-enforcement gap in regmap.hpp, out of this batch's scope, flagged for batch 11).
  • 3 real tested-coverage gaps found and closed, per batch 8's now-mandatory whole-tree grep before adding any entry — all in UART.
  • REQ-WAKEUP-020 mapped as a cross-module reference to already-existing coverage in regmap.hpp, no code touch needed.

Verification

Independently re-verified: semantic id-keyed diff confirms zero pre-existing entries modified, exactly 106 new ids matching the per-prefix breakdown exactly. Independently re-ran my own from-scratch Python tag-coverage check against the merged worktree — confirmed 975/975 entries have both a real //fusa:req and a real //fusa:test-or-bracket tag, zero gaps. Confirmed no new entry carries severity: cybersecurity. Full tree rebuilt from scratch: 0 errors, 0 warnings, 58/58 ctest suites pass.

🤖 Generated with Claude Code

Part of the v3.0.0 ground-up rewrite (cpp-RCP #129, ROADMAP.md Phase 17),
branch rewrite/v3-from-c-rcp. Phase 6 (requirement catalog), batch 10 of 13.

## Scope

spi.hpp's REQ-SPI-* (c-RCP: 42 entries), uart.hpp's REQ-UART-* (49),
wakeup.hpp's REQ-WAKEUP-* (36) -- 127 c-RCP entries total.

## Major finding: mixed -- spi/wakeup already ahead, uart needed real work

spi.hpp/test_spi.cpp and wakeup.hpp/test_wakeup.cpp were already fully
ported ahead of the catalog in an earlier untracked pass -- zero code
edits needed in either. uart.hpp needed genuine work: its req-manifest
only covered 9 of 49 ids despite most of the underlying code/tests
already existing, plus two genuine tested-coverage gaps this batch's
mandatory whole-tree grep caught before they reached CI.

## New catalog entries (106)

- SPI: 36 (REQ-SPI-006-030, 033-036, 038-044)
- UART: 40 (REQ-UART-010-049, including 048 at c-RCP's own honest
  status:partial -- not force-fit as fully implemented)
- WAKEUP: 30 (REQ-WAKEUP-006-025, 027-036) -- REQ-WAKEUP-020's real
  implementation lives in regmap.hpp/test_regmap.cpp (not wakeup.hpp),
  already fully tagged/tested there from an earlier pass; added as a
  cross-module mapping with no code touch needed.

## Id-collision gaps filed (19)

SPI 001-005, UART 001-009, WAKEUP 001-005 -- real behavior implemented
and tested under a shared numeral, but the id is already taken by
unrelated pre-rewrite catalog content, matching the established
pattern from batches 6-9.

## Other gaps filed (2)

- REQ-SPI-037 (SPI error-state EP-enable-reset behavior): matches
  c-RCP's own not-implemented status -- a genuine TC18 §13.7.3.3 spec
  silence, not force-fit as done.
- REQ-WAKEUP-026 (regmap.hpp's ep_id_map::apply_reconfig() never
  enforces WakeUp's fixed-EP_Nr invariant at write time): the
  read-only diagnostic half (REQ-WAKEUP-020) exists and is tested; the
  write-time-denial half does not. Out of this batch's scope since
  regmap.hpp isn't one of the three in-scope modules -- flagged for
  whoever picks up REQ-RMAP-*/regmap.hpp (batch 11).

## Real tested-coverage gaps found and closed (3, per batch 8's now-mandatory whole-tree check)

- REQ-UART-032 (ep_status register round-trip): added a new
  apply_reconfig-side test, dual-tagged with the existing render-side
  test.
- REQ-UART-035 (compound-wait bounded by RX FIFO): added a new
  UART-flavored test exercising acf::compound_wait_match() directly,
  mirroring SPI's own analogous test.
- REQ-UART-048 (partial status, separate-units fields): dual-tagged
  onto the existing Table 51 register-round-trip test.

## Verification

Independently re-verified (the porting agent's own final step re-ran
a whole-catalog tag-coverage script covering all 975 entries):
semantic id-keyed diff confirms zero pre-existing entries modified/
deleted, exactly 106 new ids matching the report's per-prefix
breakdown exactly (SPI 36, UART 40, WAKEUP 30), zero duplicate ids.
Independently re-ran my own from-scratch Python tag-coverage check
against the merged worktree (not trusting the agent's script alone):
confirmed 975/975 entries have both a real //fusa:req and a real
//fusa:test-or-bracket tag somewhere in the tree, zero gaps. Confirmed
no new entry carries severity:cybersecurity -- sec-tested count holds
exactly at 72/975. Full tree rebuilt from scratch: 0 errors, 0
warnings, 58/58 ctest suites pass (100%).

.fusa-reqs.json: 869 -> 975 entries (+106, 9026 -> 10288 lines).
.fusa-reqs-pending.json: 87 -> 108 entries (+21, 961 -> 1226 lines).
include/rcp/uart.hpp: +58 lines. tests/test_uart.cpp: +103 lines net.
include/rcp/spi.hpp, tests/test_spi.cpp, include/rcp/wakeup.hpp,
tests/test_wakeup.cpp, include/rcp/regmap.hpp, tests/test_regmap.cpp:
unchanged.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: Matt <47545907+SoundMatt@users.noreply.github.com>
@SoundMatt
SoundMatt merged commit ba76dde into rewrite/v3-from-c-rcp Aug 22, 2026
22 checks passed
@SoundMatt
SoundMatt deleted the phase6/spi-uart-wakeup branch August 22, 2026 17:14
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