Skip to content

G2.6: add typed dynamic report shadow verification evidence - #98

Merged
masarray merged 4 commits into
mainfrom
g2.6-shadow-verification-evidence
Aug 24, 2026
Merged

G2.6: add typed dynamic report shadow verification evidence#98
masarray merged 4 commits into
mainfrom
g2.6-shadow-verification-evidence

Conversation

@masarray

Copy link
Copy Markdown
Owner

Goal

Add the typed, fail-closed G2.6 shadow-verification layer between InformationReportProven and any later ProductionEligible decision.

The engine remains pure/evidence-driven: no network I/O, no RCB/DataSet mutation, no profile mutation, and no automatic production enablement are introduced by this PR.

Shadow contract

dynamic InformationReport candidate -> independent MMS reference read -> exact identity/value/quality/timestamp/order/reconnect comparison -> typed acceptance evidence

The evaluator requires exact qualified DataSet index/member identity and checks:

  • report-to-poll value parity;
  • optional/required quality parity;
  • optional/required device timestamp parity;
  • non-regressing report receive/sequence order;
  • no duplicate (sequence, DataSet index) report observations;
  • every polling-observed value transition has a matching report edge;
  • polling remains an independent authority for every accepted report observation;
  • deliberate reconnect recovers both report and polling reference paths;
  • dynamic activation attempts remain bounded per association to exclude repeated mutation loops.

Multiple included DataSet indexes from the same InformationReport may correctly share one sequence number. Sequence regression is rejected; exact same-sequence/same-index duplication is rejected separately.

Production boundary

BuildProductionAcceptance(...) may convert only a successful typed shadow into the existing MmsDynamicReportProductionAcceptance contract. Smart Control and static-reporting regressions remain explicit independent inputs.

This helper does not call MarkProductionEligible. Production automatic dynamic reporting remains OFF until a consumer separately proves every gate and explicitly advances an identity-compatible profile.

Tests

Adds deterministic regressions for:

  • matching report/poll transitions + reconnect PASS;
  • multi-index same-sequence InformationReport semantics;
  • missing report edge detected by independent polling;
  • duplicate report edge rejection;
  • value/quality/timestamp mismatch rejection;
  • reconnect without both-path recovery rejection;
  • repeated dynamic activation loop rejection;
  • successful typed bridge to existing production-acceptance model;
  • failed shadow cannot build production acceptance.

Keep draft until exact-head CI is green. After merge, ARSAS will pin the merged engine SHA and add the physical commissioning collector. No ProductionEligible claim is made by this PR.

@masarray
masarray marked this pull request as ready for review August 24, 2026 11:39
@masarray
masarray merged commit ffd33bc into main Aug 24, 2026
1 check passed
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