Repository navigation
feat: v2.5.0 — Conditional-Request Taxonomy & Sequencers (§Phase 13 milestone 49) - #42
Merged
Merged
Conversation
…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>
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.
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).
include/rcp/sequencer.hpp, built entirely as a new decode/behavior layer on top of already-existing substrate — no changes needed torcp/wire.hpp's ACF_GBB codec orrcp/regmap.hpp'ssequencer_statesstorage:decode_request_type/encode_request_type: themtv=0message_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) overregmap.hpp's existing storage.RequestState/RequestLedger: the pending→started→under_execution→finalized lifecycle, the three cancellation kinds' shared semantics, and thecsfield's two request-kind-specific meanings.tests/test_sequencer.cpp(REQ-SEQ-001..009), traced in.fusa-reqs.json.kVersion/project version to 2.5.0.ROADMAP.mdwith aDone (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 passctestfor every other target (52/52 pass;rcp_simexcluded — pre-existing, unrelatedsim.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)