Skip to content

model: prepare source-neutral DataSet capability index and parity fingerprints - #340

Draft
masarray wants to merge 15 commits into
feature/discovery-static-workflow-parity-p0from
feature/discovery-static-workflow-parity-p1-capability-index
Draft

masarray wants to merge 15 commits into
feature/discovery-static-workflow-parity-p0from
feature/discovery-static-workflow-parity-p1-capability-index

Conversation

@masarray

Copy link
Copy Markdown
Owner

P1 stacked on P0

Base: feature/discovery-static-workflow-parity-p0

This is intentionally stacked on the P0 discovery/static-workflow candidate. P0 remains the field-test boundary; this PR does not change MMS/report activation traffic.

Goal

Prepare one source-neutral, immutable DataSet capability view for both Open SCL and Smart Discovery so downstream UI/report planning can consume the same precomputed facts.

Initial P1 slice

  • add ModelGeneration to invalidate stale model-derived capability work;
  • build the capability index off the UI path with cancellation of superseded generations;
  • index static DataSets, canonical ordered members and configured RCB bindings;
  • compute deterministic SHA-256 fingerprints for DataSet structure and stable RCB configuration;
  • exclude mutable runtime state such as RptEna/reservation from parity fingerprints;
  • warm the same capability worker after Open SCL and after discovery;
  • let the Static DataSet chooser consume the prepared index when ready, with direct-model fallback;
  • add parity comparison helpers and unit/regression tests.

Safety boundary

This P1 slice does not:

  • issue MMS reads;
  • browse DataSet directories;
  • enable RCBs;
  • create dynamic DataSets;
  • add polling;
  • change P0 report activation;
  • publish or merge any release.

Intended parity contract

Discover -> capability fingerprint and Open SCL -> capability fingerprint should match for:

  • DataSet identity;
  • exact member index/order;
  • member reference / FC / MMS reference;
  • configured RCB -> DataSet binding;
  • stable RCB reporting configuration.

Runtime-mutating RCB state is evidence, not configuration parity, and is deliberately excluded.

Copy link
Copy Markdown
Owner Author

P1 initial slice is active on top of the P0 field-test branch.

Implemented so far:

  • immutable source-neutral DataSet capability index;
  • model-generation invalidation so stale background work cannot overwrite a newer model;
  • cancellation of superseded capability workers with worker-owned token disposal;
  • deterministic SHA-256 fingerprints for DataSet member order/reference/FC/MMS reference;
  • deterministic fingerprints for stable configured RCB -> DataSet bindings;
  • runtime-mutating RCB state is excluded from parity fingerprints;
  • the same worker is warmed after Open SCL, live discovery, fast model connect and card-scoped IED actions;
  • chooser consumes the prepared capability index when available and falls back directly to the canonical model when preparation is still running;
  • no MMS read, DataSet browse, RCB write, dynamic DataSet creation or process polling is performed by this worker.

Current CI evidence on this stacked branch:

  • Merge Execution Guard: success;
  • ARSAS regression tests in that guard: success;
  • Field Capture Build has compiled the P1 source successfully and is continuing packaging;
  • R7 Build has compiled the P1 source successfully and is continuing canonical-export tests.

This PR intentionally remains Draft. Do not use P1 as the P0 physical-test binary; P0 PR #339 remains the isolated field-test authority.

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