Skip to content

rewrite(phase6): batch 11 — REQ-REGMAP-*→REQ-RMAP-* rename + RMAP/SRV catalog - #164

Merged
SoundMatt merged 2 commits into
rewrite/v3-from-c-rcpfrom
phase6/rmap-srv
Aug 22, 2026
Merged

rewrite(phase6): batch 11 — REQ-REGMAP-*→REQ-RMAP-* rename + RMAP/SRV catalog#164
SoundMatt merged 2 commits into
rewrite/v3-from-c-rcpfrom
phase6/rmap-srv

Conversation

@SoundMatt

Copy link
Copy Markdown
Owner

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)

  • 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

… 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>
@SoundMatt
SoundMatt merged commit 92e4b2c into rewrite/v3-from-c-rcp Aug 22, 2026
22 checks passed
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