Skip to content

docs: stage 3 missing conditional-request field requirements - #106

Merged
SoundMatt merged 1 commit into
mainfrom
docs/pending-tc18-reqs-conditional-layer
Aug 7, 2026
Merged

SoundMatt merged 1 commit into
mainfrom
docs/pending-tc18-reqs-conditional-layer

Conversation

@SoundMatt

Copy link
Copy Markdown
Owner

Summary

  • Investigated the `REQ-SEQ-*` cluster (Compound/CompoundWait/Triggered/Timed/Chained/Cancel) against TC18 §11.2.2/§11.2.3 directly, prompted by its 12-requirement count looking thin next to c-RCP's 89 across the equivalent categories.
  • The opcode/routing/state-machine layer is correctly designed (`RequestTypeOpcode`'s 8 real TC18 opcodes, mtv=false repurposing, `expected_start_state`) — this is not the same class of defect found in go-RCP's equivalent layer.
  • Three field-level behaviors are genuinely absent (confirmed by grepping `include/`/`src/` — the real TC18 field names appear only in comments, never as real fields/variables/consumed values):
    • Compound: `cmp_exec_delay`/`cmp_repetitions` undecoded and unenforced.
    • Triggered: `trigger_source_ep`/`trigger_signal_nr`/`trigger_threshold`/`trigger_exec_delay`/`trigger_repetitions` undecoded — `TriggerRegistry` (a real, working generic signal registry) isn't wired to any specific request's parameters.
    • Timed: `presentation_time` (48-bit gPTP) undecoded — no scheduling/dispatch logic exists anywhere; the opcode has no distinguishing runtime behavior from a standard request.
  • Per this session's discussion: RELAY §20.1.2 hard-gates 100% requirement traceability in CI, so these can't go into `.fusa-reqs.json` directly without either breaking the gate or being real (implemented + tested) — neither is true yet. Staged in a new `.fusa-reqs-pending.json` instead (same schema, confirmed not read by `cpfusa` at all), to be migrated in once each gets a real implementation + test.
  • No code change.

Test plan

  • `cpfusa check` — 0 errors, output unchanged with the new file present
  • `cpfusa trace` — output unchanged (only pre-existing HLR/LLR warnings)

Investigated the REQ-SEQ-* cluster (Compound/CompoundWait/Triggered/
Timed/Chained/Cancel) against TC18 sec 11.2.2/11.2.3 directly, since its
12-requirement count looked thin next to c-RCP's 89 across the
equivalent categories. The opcode/routing/state-machine layer is
correctly designed (RequestTypeOpcode's 8 real TC18 opcodes, mtv=false
repurposing, expected_start_state) -- unlike go-RCP's equivalent layer,
this is not a routing defect.

But three field-level behaviors are genuinely absent, confirmed by
grepping include/ and src/ for the actual TC18 field names: they exist
only in comments, never as real fields, variables, or consumed values.
- Compound: cmp_exec_delay and cmp_repetitions are undecoded and
  unenforced -- a Compound request today gates purely on
  expected_start_state with no delay or repeat-count behavior.
- Triggered: trigger_source_ep/trigger_signal_nr/trigger_threshold/
  trigger_exec_delay/trigger_repetitions are undecoded -- the opcode is
  recognized but nothing links a pending request to a specific
  endpoint+signal+threshold. TriggerRegistry (endpoint.hpp) is a real,
  working generic per-endpoint signal registry, just not wired to any
  specific Triggered request's parameters.
- Timed: presentation_time (48-bit gPTP) is undecoded -- there is no
  scheduling/dispatch logic anywhere that defers execution until any
  point in time; the opcode is recognized but has no distinguishing
  runtime behavior from a standard request.

Per this session's discussion: RELAY spec 20.1.2 hard-gates 100%
requirement traceability in CI, so these can't be added to
.fusa-reqs.json directly without either breaking the gate or being
real (implemented + tested) entries -- neither is true yet. Staged in
a new .fusa-reqs-pending.json instead: same schema, not read by cpfusa
at all (confirmed: check/trace output unchanged with this file
present), to be migrated into .fusa-reqs.json once each gets a real
implementation and test.

No code change. cpfusa check/trace unaffected (confirmed).

Signed-off-by: Matt <47545907+SoundMatt@users.noreply.github.com>
@SoundMatt
SoundMatt merged commit cedb250 into main Aug 7, 2026
22 checks passed
@SoundMatt
SoundMatt deleted the docs/pending-tc18-reqs-conditional-layer branch August 7, 2026 16:57
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