You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Stacked follow-up to draft PR #145. Base is intentionally fix/144-smart-interop-p0 so this slice does not race or overwrite the parallel P0-P2/canonical-convergence work.
This stacked PR owns only configured-static activation proof after planning.
Why
A successful MMS write response is not enough to prove a report-control state transition. Planning evidence can also become stale between plan creation and the actual mutation.
The configured-static path already performed two whole-RCB reads after RptEna=true, but startup returned success without making those readbacks authoritative.
Changes
add pure MmsConfiguredStaticActivationVerifier;
pre-write JIT proof requires:
whole-RCB read succeeds;
exact RptEna=false;
no explicit live DatSet contradiction;
JIT state capture now uses a minimal structure-first hot path instead of the broad diagnostic RCB scan;
post-enable proof requires one exact JIT readback with RptEna=true; no unconditional duplicate read;
if the structure read is incomplete, only the required leaves are probed;
missing DatSet text remains missing evidence unless an exact live DatSet read proves the binding empty;
explicit DatSet contradiction fails closed;
if write is accepted but readback is not proven, unregister monitor, disable RCB, release only reservation touched by this session, and return failure;
no vendor branch, no retry guessing, no DataSet rewrite.
Safety intent
This is transactional/JIT evidence hardening only. It does not loosen dynamic mutation policy, does not change canonical planning, and does not claim InformationReport traffic proof yet. Actual traffic proof remains the next lifecycle/evidence layer.
Regression
Tests cover:
unknown/already-enabled pre-state rejection;
failed whole-RCB read rejection;
positive DatSet contradiction vs missing DatSet evidence;
one exact post-enable readback is sufficient;
write-accepted/readback-false rejection;
positive reservation/ownership blockers and exact-empty DatSet contradiction.
Performance contract
Typical configured-static activation no longer repeats the broad RCB diagnostic probe. The JIT path prefers one complete RCB structure read and falls back only to missing RptEna/DatSet/reservation/Owner leaves. It contains no fixed delay or polling sleep. Receiver registration still occurs before RptEna mutation, and actual InformationReport traffic remains asynchronous post-activation evidence rather than a prerequisite for enabling reporting.
Asynchronous traffic proof
Persistent report sessions now expose:
ArmedAwaitingTraffic immediately after activation/readback is proven;
TrafficProven only after a real InformationReport is decoded and routed to that exact monitor;
FirstRoutedReportAt, LastRoutedReportAt, routed count and first-report latency.
This does not wait for traffic before enabling reporting and does not tear down a healthy armed RCB merely because no spontaneous report has arrived yet. GI/initial-image policy can remain a separately bounded caller decision.
For normal multi-field activation, exact scalar type evidence is prewarmed from one complete RCB TypeSpecification when named components are available; otherwise the existing per-leaf exact preflight remains the safe fallback.
The combined #145/#146/#147 exact integration head was validated in CI-only PR #148; head c0609d5c3f5711bff1a604aefc6f514f17fa502c passed .NET CI #747 end-to-end.
Staging PR reconciliation (2026-10-22): functional scope superseded by newer staging implementation, not Git ancestry and NOT verbatim branch merge. Original SHA 160c19bc15125cbd213751839205a451c3371d21 still has some different source commits, so do not equate this closure with byte-identical whole-branch incorporation.
Evidence: MmsConfiguredStaticActivationVerifier.cs and its entire regression test file have byte-identical Git blobs in staging; staged wrapper enforces exact pre-activation JIT read / after-enable RptEna proof.
Staging SHA 44ac7554f43f2ba06763f3895242cb569b2e6a1c passed Windows synthetic-merge CI #39782663272, 1,262/1,262 tests, 0 warnings/errors. Closing outdated stacked PR to leave one release lane: staging→main #192, still DRAFT with FAT/consumer gates. Source branch remains available; reopen if later field evidence reveals a missing behavior. No ARSAS repin or mainline merge.
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
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.
Stacked follow-up to draft PR #145. Base is intentionally
fix/144-smart-interop-p0so this slice does not race or overwrite the parallel P0-P2/canonical-convergence work.Teamwork boundary
Why
A successful MMS write response is not enough to prove a report-control state transition. Planning evidence can also become stale between plan creation and the actual mutation.
The configured-static path already performed two whole-RCB reads after
RptEna=true, but startup returned success without making those readbacks authoritative.Changes
MmsConfiguredStaticActivationVerifier;RptEna=false;RptEna=true; no unconditional duplicate read;Safety intent
This is transactional/JIT evidence hardening only. It does not loosen dynamic mutation policy, does not change canonical planning, and does not claim InformationReport traffic proof yet. Actual traffic proof remains the next lifecycle/evidence layer.
Regression
Tests cover:
Performance contract
Typical configured-static activation no longer repeats the broad RCB diagnostic probe. The JIT path prefers one complete RCB structure read and falls back only to missing RptEna/DatSet/reservation/Owner leaves. It contains no fixed delay or polling sleep. Receiver registration still occurs before RptEna mutation, and actual InformationReport traffic remains asynchronous post-activation evidence rather than a prerequisite for enabling reporting.
Asynchronous traffic proof
Persistent report sessions now expose:
ArmedAwaitingTrafficimmediately after activation/readback is proven;TrafficProvenonly after a real InformationReport is decoded and routed to that exact monitor;FirstRoutedReportAt,LastRoutedReportAt, routed count and first-report latency.This does not wait for traffic before enabling reporting and does not tear down a healthy armed RCB merely because no spontaneous report has arrived yet. GI/initial-image policy can remain a separately bounded caller decision.
For normal multi-field activation, exact scalar type evidence is prewarmed from one complete RCB TypeSpecification when named components are available; otherwise the existing per-leaf exact preflight remains the safe fallback.
The combined #145/#146/#147 exact integration head was validated in CI-only PR #148; head
c0609d5c3f5711bff1a604aefc6f514f17fa502cpassed .NET CI #747 end-to-end.