rewrite(phase6): batch 10 — SPI/UART/WAKEUP catalog re-derivation - #163
Merged
Conversation
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>
10 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.hppwere already ahead of the catalog — zero code edits needed.uart.hppneeded genuine work: its manifest only covered 9 of 49 ids.REQ-UART-048at c-RCP's own honeststatus: partial), WAKEUP 30.REQ-SPI-037(matches c-RCP's ownnot-implemented, genuine TC18 §13.7.3.3 spec silence) andREQ-WAKEUP-026(a real write-time-enforcement gap inregmap.hpp, out of this batch's scope, flagged for batch 11).REQ-WAKEUP-020mapped as a cross-module reference to already-existing coverage inregmap.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:reqand a real//fusa:test-or-bracket tag, zero gaps. Confirmed no new entry carriesseverity: cybersecurity. Full tree rebuilt from scratch: 0 errors, 0 warnings, 58/58 ctest suites pass.🤖 Generated with Claude Code