rewrite(phase6): batch 11 — REQ-REGMAP-*→REQ-RMAP-* rename + RMAP/SRV catalog - #164
Merged
Conversation
… catalog 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 11 of 13 -- the largest single batch so far, combining a real id-field rename with two full-prefix derivations. ## Part A — REQ-REGMAP-* → REQ-RMAP-* rename Pure id-field rename per ROADMAP.md Phase 17's already-established canonical naming (RELAY's docs/RCP-ARCHITECTURE.md cites REQ-RMAP-* as canonical): all 15 REQ-REGMAP-001..015 catalog entries renamed to REQ-RMAP-001..015 (id field only, no other field changed), plus all 15 code tags in include/rcp/regmap.hpp and 36 test tags in tests/test_regmap.cpp. severity:cybersecurity preserved on all 15 (these are part of the enumerated 72-id cybersecurity subset per ci.yml's own comment) -- sec-tested count holds at exactly 72. Zero REQ-REGMAP-* remnants anywhere in .fusa-reqs.json, .fusa-reqs-pending.json, or the include/+tests/ tree (one pre-existing entry's own prose text still literally says "REQ-REGMAP-005" referring to another entry by name -- left untouched, it's descriptive text, not an id). Stale REQ-REGMAP-* mentions remain in CYBERSECURITY.md/TARA-ANALYSIS.md/ ROADMAP.md/ci.yml's comment -- outside this batch's scope, left for a docs pass; the CI gate itself reads the severity field dynamically, not a hardcoded id list, so it's unaffected. ## Part B — REQ-RMAP-* full derivation (87 c-RCP entries) - 59 new catalog entries (016-045, 047-058, 060, 066-067, 070-071, 073-079, 082-084, 086-087), including 055 (already fully tagged in lifecycle.hpp/test_lifecycle.cpp from an earlier batch -- cross-module mapping, no code touch) and two status:partial entries (023, 067) honestly preserved from c-RCP. - 15 id-collision/gap entries filed to .fusa-reqs-pending.json: 001/002/003/009/010/011/012/013/014/015 -- the rename claimed these numerals first for cpp's own pre-existing content; c-RCP's real content at the same numbers (is_ep0(), writer_ctx() grant/withhold, hw_pin bit-layout distinctness, named_signal_string()) is separately implemented+tested, filed as collisions rather than corrupting id uniqueness -- matching the established pattern from batches 6-10. 068/069/072/080: real gaps matching regmap.hpp's own explicit "EP0 address-routed dispatcher NOT ported in this batch" scope note. 081: genuine TC18 spec-defect gap (EP_RESP_ON_ERROR, a Table 31 prose reference with no defined bit/field) -- matches c-RCP's own not-implemented disposition verbatim; cpp additionally has a defensive test proving no bit is invented for it. - 6 retired ids (004-008, 046) -- c-RCP itself retired these (superseded by 030/039); no entry or gap filed, since there's no real c-RCP content for cpp to collide with or gap against. - 15 renamed + 7 pre-existing respqueue-specific (untouched) + 59 new + 15 pending + 6 retired = all 87 c-RCP ids accounted for. ## Part C — REQ-SRV-* full derivation (42 c-RCP entries, all new) include/rcp/server.hpp already carried all 42 fusa:req tags from an earlier untracked pass -- zero code edits needed there (0 line delta). tests/test_server.cpp only had 24 of 42 tested; added 14 new TEST_CASEs plus several dual-tags to close the remaining 18 (019, 020, 022, 024-034, 037-039, 042), including genuinely new coverage for per-kind select_due() gating (027-032), CompoundWait's independent per-slot evt/payload evaluation and wait_tick() application (020, 033, 042), no-sequencer-advance-for-Triggered/Timed/Chained plus always-removed (034, 037), and chain-timer-not-restarted (038). All 42 SRV catalog entries added. No new entry (RMAP or SRV) carries severity:cybersecurity -- confirmed neither c-RCP's real 87 RMAP nor 42 SRV entries mark any as security-relevant; sec-tested count unchanged at exactly 72. ## Verification Independently re-verified (not just the porting agent's own report, which itself ran a whole-catalog tag-coverage script twice, catching and fixing one gap where REQ-RMAP-082 had a test tag but no fusa:req tag before finalizing): semantic id-keyed diff confirms zero pre-existing entries modified, exactly 116 new/renamed ids (15 renamed + 59 new RMAP + 42 new SRV) matching the report's breakdown exactly, zero duplicate ids anywhere (catalog or pending). Independently re-derived the whole-tree tag-coverage check from scratch in Python against the merged worktree (not trusting the agent's script alone): confirmed all 1076 entries have both a real fusa:req and a real fusa:test-or-bracket tag somewhere in include/+tests/, zero gaps. Confirmed severity:cybersecurity was preserved on exactly the 15 renamed entries and granted to zero genuinely-new entries -- sec-tested count holds at exactly 72/1076. Directly spot-checked the REQ-RMAP-009 writer_ctx tag placement, the REQ-RMAP-081 spec-defect gap text, and the new REQ-SRV-027/028/033 select_due()-gating tests against the real diff -- all confirmed accurate. Full tree rebuilt from scratch: 0 errors, 0 warnings, 58/58 ctest suites pass (100%). .fusa-reqs.json: 975 -> 1076 entries (+116, well over +101 in raw additions once the 15 rename removals are netted out; 10288 -> 11498 lines). .fusa-reqs-pending.json: 108 -> 123 entries (+15, 1226 -> 1420 lines). include/rcp/regmap.hpp: +11 lines net (rename tags only). tests/test_regmap.cpp: +23 lines net (rename tags + dual-tag additions). include/rcp/server.hpp: unchanged (0 line delta). tests/test_server.cpp: +339 lines net (14 new TEST_CASEs + dual-tags). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Signed-off-by: Matt <47545907+SoundMatt@users.noreply.github.com>
…l gate needs Real CI failure on PR #164's cpfusa-trace job: tested=1051 total=1076 (gate requires exact equality). Root cause, diagnosed against the real pinned cpfusa v0.18.0 binary (built locally, not guessed at): cpfusa's trace tool scans for a specific `// fusa:test REQ-ID` comment-line form (src/trace/trace.cpp's test_tag_re) -- it does NOT recognize Catch2 `[REQ-ID]` bracket tags as evidence of testedness at all. My own verification script for this batch (and the porting agent's) checked for either form, which is why both reported false 100% clean. Same lesson as the batch-8 CI incident: verify against the real gate tool, not an approximation of it. 24 REQ-RMAP-* ids + REQ-SRV-017 had real, correct bracket-tagged TEST_CASEs (or, for REQ-SRV-017, real testable content in an adjacent module) but no matching //fusa:test manifest line anywhere in the tree: - 22 ids (018-023, 026-029, 031-033, 035-036, 038-039, 043, 073-075, 082) already had real TEST_CASEs with correct bracket tags -- pure missing-manifest-line fix, no test content changed. - REQ-RMAP-034/037 had zero bracket-tag occurrences anywhere: found the existing "GeneralMap default-constructs zeroed" TEST_CASE already REQUIREs their exact fields (svr_request_stream_cfg_capacity/ svr_response_stream_cfg_capacity for 034; svr_ep_bytebus_id_map_ptr/ _capacity for 037) as part of its zero-init sweep -- matching the exact same depth of coverage already accepted for their sibling Table-20 pointer/capacity fields (026-029/031-033/035-036/038, all covered by this same test). Added the two missing bracket tags to that TEST_CASE's existing tag list; no new assertions needed, the content was already there. - REQ-SRV-017 (status:partial, cross-module by its own catalog text -- server.hpp's part is content-modeling/admission only, not response- queue transmission): dual-tagged onto test_respqueue.cpp's existing "should_flush_by_time is independent of queue state" TEST_CASE (REQ- RMAP-065), which already asserts the exact claim (an empty queue still fires the Flush_time trigger) before any push() -- the real, and only, test target for this id's actual behavior. Re-verified against the real pinned cpfusa binary (built locally from the same v0.18.0 tag CI uses, not approximated): tested=1076 total=1076, cpfusa trace --gaps returns zero requirement ids. Dangling- tag warning count unchanged at 26 (all pre-existing, out-of-scope DISC/SHMEM ids -- batch 12's territory, not touched here). Full tree rebuilt from scratch: 0 errors, 0 warnings, 58/58 ctest suites pass (100%). tests/test_regmap.cpp: +30 lines (manifest tags + 2 bracket tags on one existing TEST_CASE). tests/test_respqueue.cpp: +7 lines (manifest tag + dual-tag + explanatory comment on one existing TEST_CASE). 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.
rewrite(phase6): batch 11 — REQ-REGMAP-→REQ-RMAP- rename + RMAP/SRV catalog
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 11 of 13
-- the largest single batch so far, combining a real id-field rename with
two full-prefix derivations.
Part A — REQ-REGMAP-* → REQ-RMAP-* rename
Pure id-field rename per ROADMAP.md Phase 17's already-established
canonical naming (RELAY's docs/RCP-ARCHITECTURE.md cites REQ-RMAP-* as
canonical): all 15 REQ-REGMAP-001..015 catalog entries renamed to
REQ-RMAP-001..015 (id field only, no other field changed), plus all 15
code tags in include/rcp/regmap.hpp and 36 test tags in
tests/test_regmap.cpp. severity:cybersecurity preserved on all 15
(these are part of the enumerated 72-id cybersecurity subset per
ci.yml's own comment) -- sec-tested count holds at exactly 72. Zero
REQ-REGMAP-* remnants anywhere in .fusa-reqs.json, .fusa-reqs-pending.json,
or the include/+tests/ tree (one pre-existing entry's own prose text
still literally says "REQ-REGMAP-005" referring to another entry by
name -- left untouched, it's descriptive text, not an id). Stale
REQ-REGMAP-* mentions remain in CYBERSECURITY.md/TARA-ANALYSIS.md/
ROADMAP.md/ci.yml's comment -- outside this batch's scope, left for a
docs pass; the CI gate itself reads the severity field dynamically, not
a hardcoded id list, so it's unaffected.
Part B — REQ-RMAP-* full derivation (87 c-RCP entries)
073-079, 082-084, 086-087), including 055 (already fully tagged in
lifecycle.hpp/test_lifecycle.cpp from an earlier batch -- cross-module
mapping, no code touch) and two status:partial entries (023, 067)
honestly preserved from c-RCP.
001/002/003/009/010/011/012/013/014/015 -- the rename claimed these
numerals first for cpp's own pre-existing content; c-RCP's real
content at the same numbers (is_ep0(), writer_ctx() grant/withhold,
hw_pin bit-layout distinctness, named_signal_string()) is separately
implemented+tested, filed as collisions rather than corrupting id
uniqueness -- matching the established pattern from batches 6-10.
068/069/072/080: real gaps matching regmap.hpp's own explicit
"EP0 address-routed dispatcher NOT ported in this batch" scope note.
081: genuine TC18 spec-defect gap (EP_RESP_ON_ERROR, a Table 31 prose
reference with no defined bit/field) -- matches c-RCP's own
not-implemented disposition verbatim; cpp additionally has a
defensive test proving no bit is invented for it.
(superseded by 030/039); no entry or gap filed, since there's no real
c-RCP content for cpp to collide with or gap against.
15 pending + 6 retired = all 87 c-RCP ids accounted for.
Part C — REQ-SRV-* full derivation (42 c-RCP entries, all new)
include/rcp/server.hpp already carried all 42 fusa:req tags from an
earlier untracked pass -- zero code edits needed there (0 line delta).
tests/test_server.cpp only had 24 of 42 tested; added 14 new TEST_CASEs
plus several dual-tags to close the remaining 18 (019, 020, 022,
024-034, 037-039, 042), including genuinely new coverage for per-kind
select_due() gating (027-032), CompoundWait's independent per-slot
evt/payload evaluation and wait_tick() application (020, 033, 042),
no-sequencer-advance-for-Triggered/Timed/Chained plus always-removed
(034, 037), and chain-timer-not-restarted (038). All 42 SRV catalog
entries added.
No new entry (RMAP or SRV) carries severity:cybersecurity -- confirmed
neither c-RCP's real 87 RMAP nor 42 SRV entries mark any as
security-relevant; sec-tested count unchanged at exactly 72.
Verification
Independently re-verified (not just the porting agent's own report,
which itself ran a whole-catalog tag-coverage script twice, catching
and fixing one gap where REQ-RMAP-082 had a test tag but no fusa:req
tag before finalizing): semantic id-keyed diff confirms zero
pre-existing entries modified, exactly 116 new/renamed ids (15 renamed
zero duplicate ids anywhere (catalog or pending). Independently
re-derived the whole-tree tag-coverage check from scratch in Python
against the merged worktree (not trusting the agent's script alone):
confirmed all 1076 entries have both a real fusa:req and a real
fusa:test-or-bracket tag somewhere in include/+tests/, zero gaps.
Confirmed severity:cybersecurity was preserved on exactly the 15
renamed entries and granted to zero genuinely-new entries -- sec-tested
count holds at exactly 72/1076. Directly spot-checked the REQ-RMAP-009
writer_ctx tag placement, the REQ-RMAP-081 spec-defect gap text, and
the new REQ-SRV-027/028/033 select_due()-gating tests against the real
diff -- all confirmed accurate. Full tree rebuilt from scratch: 0
errors, 0 warnings, 58/58 ctest suites pass (100%).
.fusa-reqs.json: 975 -> 1076 entries (+116, well over +101 in raw
additions once the 15 rename removals are netted out; 10288 -> 11498
lines). .fusa-reqs-pending.json: 108 -> 123 entries (+15, 1226 -> 1420
lines). include/rcp/regmap.hpp: +11 lines net (rename tags only).
tests/test_regmap.cpp: +23 lines net (rename tags + dual-tag
additions). include/rcp/server.hpp: unchanged (0 line delta).
tests/test_server.cpp: +339 lines net (14 new TEST_CASEs + dual-tags).
Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com