rewrite(phase6): batch 5 — watchdog: one traceability gap found, no catalog change - #158
Merged
Merged
Conversation
…atalog change 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 5 of 13. ## Scope watchdog.hpp's REQ-WDG-* prefix. c-RCP has REQ-WDG-001..012 (12 entries); cpp-RCP's catalog already had REQ-WDG-001..008 (8 entries, prior work); watchdog.hpp/test_watchdog.cpp reference all 12 ids, so 009-012 looked orphaned going in. Investigation found the premise only half held. ## No new catalog entries this batch REQ-WDG-009 (synchronous initial verdict), REQ-WDG-011 (default_config poll interval), REQ-WDG-012 (destroy() null-safety): never tagged anywhere in cpp-RCP -- they only appear in watchdog.hpp's own header-comment prose explaining why they don't transfer, and carry no c-RCP TC18 citation. They're c-RCP-specific API-shape artifacts (background-thread poll config, cached-state staleness, manual destroy()) structurally moot in cpp-RCP's RAII/live-compute design. Confirmed this reasoning is sound; left as documented non-transfers, no catalog entry, no pending-file gap (nothing is actually missing). ## One genuine finding: REQ-WDG-010 is implemented and tested, but has zero formal tags anywhere Filed to .fusa-reqs-pending.json as a traceability-tag gap, NOT a behavioral gap. The behavior itself is real and correctly wired: mock.hpp's dispatch_e2e_core() calls rx_watchdog_kick() unconditionally at both its call sites (mock.hpp:1147, mock.hpp:1343), forwarding to watchdog::Manager::on_request_received(); test_mock.cpp has a dedicated end-to-end test ("dispatch_e2e kicks the per-stream RxWatchdog (REQ-WDG-010) on every call...", test_mock.cpp:1739+); sim.hpp's Simulator independently wires the same hook. The blocker is purely mechanical: cpp-FuSa's trace tool only counts a requirement as traced/tested when a literal `// fusa:req`/`// fusa:test REQ-WDG-010` comment exists somewhere -- mock.hpp's existing prose mentions and test_mock.cpp's `[REQ-WDG-010]` Catch2 tag string don't match that regex, so this id has zero formal annotations anywhere despite being genuinely covered. Adding it to .fusa-reqs.json today (with no real tag anywhere) would fail CI's hard `cpfusa trace --req-coverage 100` /tested-coverage gates. Fixing this needs two tags added to include/rcp/mock.hpp/tests/test_mock.cpp -- both out of this batch's file-scope (batch 5 is restricted to watchdog.hpp/test_watchdog.cpp). Filed here so batch 13 (MOCK/PWRMODE, the batch that touches mock.hpp) can add those two tags and migrate this entry from pending into the real catalog in the same change. ## REQ-WDG-001..008 re-verified, untouched Existing tags checked against real code/tests and found accurate -- no placement fix needed, no catalog change. ## Verification .fusa-reqs.json: unchanged, byte-identical (544 entries, sec-tested count still exactly 72). .fusa-reqs-pending.json: 19 -> 20 entries (+1, REQ-WDG-010). include/rcp/watchdog.hpp: expanded its existing REQ-WDG-010 header-comment bullet with the mock.hpp citation and the pending-migration note (+21/-3 net). tests/test_watchdog.cpp: unchanged. Full tree rebuilt from scratch: 0 errors, 0 warnings, 58/58 ctest suites pass (100%). 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 5 of 13.
This batch: watchdog (REQ-WDG-*, 12 c-RCP entries)
No new
.fusa-reqs.jsonentries. REQ-WDG-009/011/012 confirmed as documented, sound non-transfers (c-RCP-specific background-thread/manual-lifecycle API shape, structurally moot in cpp-RCP's RAII design).One real finding: REQ-WDG-010 is genuinely implemented and tested (
mock.hpp'sdispatch_e2e_core()kicks the watchdog unconditionally at both call sites,test_mock.cpphas a dedicated end-to-end test) but has zero formal//fusa:req///fusa:testtags anywhere — only prose mentions and an untagged Catch2 string that don't match cpp-FuSa's trace regex. Filed to.fusa-reqs-pending.jsonas a traceability-tag gap (not a behavioral one), since fixing it needs two tags inmock.hpp/test_mock.cpp— out of this batch's file-scope. Batch 13 (MOCK/PWRMODE) will pick this up.Verification
.fusa-reqs.jsonunchanged, byte-identical (544 entries, sec-tested count still exactly 72 — confirmed via diff). Full tree rebuilt from scratch: 0 errors, 0 warnings, 58/58 ctest suites pass.🤖 Generated with Claude Code