Skip to content

rewrite(phase6): batch 2 — FRAG/RESPQUEUE-slice/LOAN catalog re-derivation - #156

Merged
SoundMatt merged 1 commit into
rewrite/v3-from-c-rcpfrom
phase6/frag-respqueue-loan
Aug 22, 2026
Merged

SoundMatt merged 1 commit into
rewrite/v3-from-c-rcpfrom
phase6/frag-respqueue-loan

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 2 of 13.

This batch: FRAG (18)/RESPQUEUE-slice of RMAP (7)/LOAN (9) — 34 c-RCP entries in scope

  • 26 new catalog entries: REQ-FRAG-001–015/017/018 (17), REQ-LOAN-008/009 (2), REQ-RMAP-059/061-065/085 (7, the respqueue-specific slice of c-RCP's combined register-map+response-queue module — the rest of REQ-RMAP-/REQ-REGMAP- is deferred to batch 11's regmap.hpp rename).
  • REQ-RMAP-065 copied honestly with c-RCP's own scope: "tc18-gap"/status: "partial" — cpp-RCP is at the identical "primitives proven composable, integrator owns real-clock/transport wiring" boundary c-RCP documents.
  • One judgment call (not filed as a gap, documented in-file): REQ-FRAG-016's allocation-failure return value has no C++ analog since Reassembler uses a fixed std::array with no heap growth — same precedent as batch 1's architecture-divergence findings.
  • Zero gaps filed to .fusa-reqs-pending.json this batch — everything in scope was implementable, already covered, or the one documented judgment call.

Verification

Independently re-verified: semantic id-keyed diff confirms zero pre-existing entries modified, exactly 26 new ids added. Zero real orphaned tags remain (one apparent match, REQ-FRAG-016, is prose in a regular comment, not a trace-tool tag). Confirmed no new entry carries severity: cybersecurity — sec-tested count holds exactly at the 72-entry floor fixed in #155. Full tree rebuilt from scratch: 0 errors, 0 warnings, 58/58 ctest suites pass.

🤖 Generated with Claude Code

…ation

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 2 of 13.

## Scope

fragment.hpp's REQ-FRAG-* prefix (18 c-RCP entries, all already
orphan-cited in cpp-RCP's own code), the 7-entry REQ-RMAP-* slice that
respqueue.hpp's code already cites (059/061-065/085 -- a real subset of
c-RCP's combined register-map+response-queue module, specific to
response-queue behavior; the rest of REQ-RMAP-*/REQ-REGMAP-* is
deliberately deferred to batch 11's regmap.hpp rename), and loan.hpp's
REQ-LOAN-* prefix (9 c-RCP entries).

## New catalog entries (26)

- REQ-FRAG-{001-015,017,018} (17) -- fragment.hpp's plan_count()/
  plan()/Reassembler, all verified against real code. REQ-FRAG-010
  needed one new test (destruction-safety, RAII) that didn't exist yet.
- REQ-LOAN-{008,009} (2) -- BufferPool destructor free-list release,
  new_buffer_pool(). LOAN-001-007 needed no action: already had
  correct catalog entries and code tags from prior work (LOAN-007's
  tag lives in rcp.hpp/test_rcp.cpp, not loan.hpp -- confirmed
  found-and-covered, not a gap).
- REQ-RMAP-{059,061,062,063,064,065,085} (7) -- respqueue.hpp's
  RespQueue class. REQ-RMAP-065 copied honestly as c-RCP has it:
  scope="tc18-gap", status="partial" -- c-RCP's own text states the
  heartbeat-composition primitives are all present and proven
  composable, but driving them against a real clock/transport is left
  to the integrator; cpp-RCP is at the identical boundary.

## Judgment call, not filed as a gap (documented in-file, not the pending file)

REQ-FRAG-016 (rcp_fragment_reasm_result_t's RCP_FRAGMENT_REASM_ERR_ALLOC,
a distinct allocation-failure return value): no C++ analog -- Reassembler
uses a fixed std::array member with no heap growth and therefore no
allocation-failure path to distinguish. c-RCP's own REQ-FRAG-016 also
carries no TC18 citation, matching the same "architecture divergence,
no spec basis to force a gap entry" precedent as batch 1's
REQ-ACF-037/REQ-AVTP-016/027. The orphaned tag lines were removed from
fragment.hpp/test_fragment.cpp and replaced with an explanatory
comment (prose mentions of the id remain for context, not real
//fusa:req/test tags -- confirmed these don't register as references
to cpfusa's trace tool).

## No gaps filed this batch

Every c-RCP requirement in scope was either genuinely implemented,
already covered by a pre-existing entry, or the one documented
judgment call above -- .fusa-reqs-pending.json is unchanged.

## Verification

Independently re-verified (not just the porting agent's own report):
semantic id-keyed diff confirms zero pre-existing catalog entries
modified/deleted, exactly the 26 new ids added. Zero real orphaned
FRAG/LOAN/RMAP tags remain in the six files in scope (the one apparent
match, REQ-FRAG-016, is plain prose in a regular comment, not a
//fusa:req/test tag -- confirmed by direct grep). Confirmed no new
entry carries "severity": "cybersecurity" (would have diluted the
sec-tested absolute-count floor fixed in batch 1/#155) -- sec count
holds exactly at 72/474, matching the floor. Full tree rebuilt from
scratch: 0 errors, 0 warnings, 58/58 ctest suites pass (100%).

.fusa-reqs.json: 448 -> 474 entries (+26, 4092 -> 4378 lines).
include/rcp/fragment.hpp, tests/test_fragment.cpp: net changes for the
REQ-FRAG-016 tag removal/explanatory-comment swap and the new
REQ-FRAG-010 test. respqueue.hpp/loan.hpp and their test files:
unchanged (already correctly tagged and tested).

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