Skip to content

feat: v2.5.0 — Conditional-Request Taxonomy & Sequencers (§Phase 13 milestone 49) - #42

Merged
SoundMatt merged 1 commit into
mainfrom
feat/v2.5.0-conditional-request-taxonomy
Jul 28, 2026
Merged

SoundMatt merged 1 commit into
mainfrom
feat/v2.5.0-conditional-request-taxonomy

Conversation

@SoundMatt

Copy link
Copy Markdown
Owner

Summary

Implements ROADMAP.md milestone 49, "Conditional-Request Taxonomy & Sequencers (v2.5.0)" — the first genuinely unimplemented milestone in Phase 13's stated order (v2.0.0–v2.4.0 all already landed via #37–#41).

  • New include/rcp/sequencer.hpp, built entirely as a new decode/behavior layer on top of already-existing substrate — no changes needed to rcp/wire.hpp's ACF_GBB codec or rcp/regmap.hpp's sequencer_states storage:
    • decode_request_type/encode_request_type: the mtv=0 message_timestamp-repurposing trick, covering all 8 opcodes (5 conditional kinds + 3 cancellation kinds).
    • RequestCategory/select_next_due: the 7-way execution-priority ordering (cancellation → triggered → timed → compound → compound-wait → chained → standard) with FIFO tie-break.
    • FeatureSet/validate_feature_bundles: enforces the roadmap's explicit compound bundle rule — compound and compound-wait can only be claimed together with clear-non-safestate cancellation and ≥4 sequencers.
    • SequencerTable: sequencer-state behavior (default value 1, advance-only-while-matching-expected-start) over regmap.hpp's existing storage.
    • RequestState/RequestLedger: the pending→started→under_execution→finalized lifecycle, the three cancellation kinds' shared semantics, and the cs field's two request-kind-specific meanings.
  • New coverage: tests/test_sequencer.cpp (REQ-SEQ-001..009), traced in .fusa-reqs.json.
  • Bumps kVersion/project version to 2.5.0.
  • Updates ROADMAP.md with a Done (v2.5.0) summary for milestone 49.

Per the legal constraint on the confidential TC18 spec PDF, all field names/behavior above are this implementation's own original encoding of the described behavior — no spec text is reproduced anywhere in code, comments, or this description.

Test plan

  • cmake --build build --target test_sequencer — clean build, no warnings
  • ./build/tests/test_sequencer — 198 assertions / 45 test cases pass
  • Full local build + ctest for every other target (52/52 pass; rcp_sim excluded — pre-existing, unrelated sim.hpp/libstdc++ 16 toolchain incompatibility on this local macOS/GNU-16 setup only, reproduced identically on the unmodified base commit before this branch's changes; CI uses gcc-12/clang-14 and is unaffected)
  • CI (all jobs, including RELAY conformance gate) — pending, will monitor after opening this PR

…ilestone 49)

Adds rcp/sequencer.hpp on top of the existing ACF_GBB codec (rcp/wire.hpp,
v2.0.0) and sequencer-state storage (rcp/regmap.hpp, v2.1.0), with no
changes needed to either:

- decode_request_type/encode_request_type implement the mtv=0
  message_timestamp-repurposing trick: the 8 opcodes covering the 5
  conditional request kinds (compound, compound-wait, triggered, chained,
  timed) plus the 3 cancellation kinds (clear-all, clear-non-safestate,
  clear-single).
- RequestCategory/select_next_due implement the 7-way execution-priority
  ordering (cancellation > triggered > timed > compound > compound-wait >
  chained > standard) with FIFO tie-break.
- FeatureSet/validate_feature_bundles enforce the compound bundle rule:
  compound and compound-wait can only be claimed together with
  clear-non-safestate and >=4 sequencers.
- SequencerTable implements the sequencer-state behavior (default value 1,
  advance-only-on-matching-expected-start) over regmap.hpp's existing
  sequencer_states storage.
- RequestState/RequestLedger implement the pending->started->
  under_execution->finalized lifecycle, the three cancellation kinds' shared
  semantics (already-executing requests finish, cascade-cancel into chained
  successors, REQUEST_CANCELED/REQUEST_NOT_FOUND), and the cs field's two
  meanings (compound-wait immediate-vs-after-change; chained
  execute-regardless-vs-abort-on-predecessor-error).

New coverage: tests/test_sequencer.cpp (REQ-SEQ-001..009, traced in
.fusa-reqs.json). Bumps kVersion/project version to 2.5.0. Updates
ROADMAP.md with a Done (v2.5.0) summary for milestone 49.

Signed-off-by: Matt <47545907+SoundMatt@users.noreply.github.com>
@SoundMatt
SoundMatt merged commit 4675151 into main Jul 28, 2026
20 checks passed
@SoundMatt
SoundMatt deleted the feat/v2.5.0-conditional-request-taxonomy branch July 28, 2026 18:08
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