Skip to content

FAT v2 P3: generalized multi-source persistence and package bundle - #234

Closed
masarray wants to merge 9 commits into
feat/fat-v2-selection-authorityfrom
feat/fat-v2-source-bundle
Closed

masarray wants to merge 9 commits into
feat/fat-v2-selection-authorityfrom
feat/fat-v2-source-bundle

Conversation

@masarray

@masarray masarray commented Sep 1, 2026 •

Copy link
Copy Markdown
Owner

Stacked on proven FAT v2 P2

Base branch: feat/fat-v2-selection-authority
Base SHA: e5c081c5eb494d43b7d26623b9c528dab20ff219
P3 proven head: cb785bb06d95f838e8bafad5e1978699bc56e117

P3 is intentionally limited to FAT source identity, workspace persistence, and portable package handling. It does not implement SCL -> FAT row projection; that remains P4.

P3 contract

  • generalized FAT source descriptors for workbook and scl, each with exact SHA-256, deterministic source ID, filename and length
  • deterministic, order-independent source-set fingerprint so selecting the same SCL files in a different order resolves to the same FAT project identity
  • one legacy workbook preserves its historical storage fingerprint (SourceWorkbookSha256) so existing local snapshot directories remain discoverable after P3
  • OpenSourcesAsync stages one or many source files into the local workspace using deterministic collision-safe names
  • snapshots persist sources[] plus sourceSetSha256
  • snapshot bootstrap matches the complete source set; pre-P3 snapshots without sourceSetSha256 still match by the legacy workbook SHA
  • .arsas packages carry and verify the complete source bundle, including every per-source SHA/length and the aggregate source-set fingerprint
  • package import accepts both the new source-bundle manifest and legacy singular-workbook manifests
  • SCL-only projects never synthesize a fake workbook; SourceWorkbookPath is empty when no workbook exists
  • SCL-only .arsas export still generates the native PDF evidence report but deliberately omits workbook-derived IO-FAT-Results.xlsx
  • workbook-backed projects retain the existing Excel result export and legacy SourceWorkbookPath compatibility accessor
  • no SCL XML parser or SCL -> FAT signal projection was added in P3

Regression coverage added

  • source-set fingerprint is order-independent
  • legacy one-workbook storage path remains stable
  • two-SCL workspace restores operator progress even when the source selection order is reversed
  • multi-SCL .arsas round-trip carries all sources and restores them without a fake workbook/Excel artifact
  • tampered SCL source content is rejected by package validation
  • existing workbook persistence/package regressions remain green

Scope audit

Compared with proven P2 head, this branch is 9 commits ahead and 0 behind. Exactly 7 FAT source/persistence/test files changed:

  • Models/IoTesting/IoFatSourceModels.cs
  • Models/IoTesting/IoTestModels.cs
  • Services/IoTesting/IoFatProjectPackageService.cs
  • Services/IoTesting/IoFatSourceWorkspaceService.cs
  • Services/IoTesting/IoTestProjectPersistenceService.cs
  • Services/IoTesting/IoTestWorkspaceBootstrapService.cs
  • tests/ARSAS.Tests/IoFatSourceBundlePersistenceTests.cs

No ARIEC engine pin, report planner, IEC 61850 protocol/control path, SCL authority/parser, or P2 rolling-capture implementation changed.

Exact-head evidence

Exact P3 head cb785bb06d95f838e8bafad5e1978699bc56e117:

  • Validate IO List Testing #454 — SUCCESS
    • focused project restore — SUCCESS
    • focused IO compiler — SUCCESS
    • complete IO regression suite — SUCCESS
  • Validate SV evidence bundles #623 — SUCCESS
    • focused compiler — SUCCESS
    • SV evidence regression suite — SUCCESS
  • Build ARSAS #1511 — SUCCESS
    • source/license boundaries — SUCCESS
    • premium UX / GOOSE / SMV / SAS invariants — SUCCESS
    • immutable ARIEC API verification — SUCCESS
    • solution restore/build — SUCCESS
    • full ARSAS application regression suite — SUCCESS
    • portable single-EXE publish — SUCCESS
    • portable single-EXE smoke test — SUCCESS

ARIEC61850 remains on the proven pinned revision. The branch is intentionally left unmerged and this PR remains draft for stacked-phase review.

masarray commented Sep 3, 2026

Copy link
Copy Markdown
Owner Author

Closing as superseded by consolidated FAT PR #236. The P3 source-bundle/persistence work is already in the active FAT branch ancestry; this stacked PR no longer needs an independent merge path.

@masarray masarray closed this Sep 3, 2026
masarray added a commit that referenced this pull request Sep 16, 2026
User approved merge after field validation. Exact-head gates passed: Build #2834, Installer #987, IO #1376, SV #1816, COMTRADE #234.
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