Skip to content

P7.6 #446: fail-closed field diagnostic qualification intake, no physical promotion - #479

Closed
masarray wants to merge 1 commit into
fix/446-p7-5-scd-serverat-endpoint-selectionfrom
test/446-p7-6-physical-intake-diagnostic-validator
Closed

masarray wants to merge 1 commit into
fix/446-p7-5-scd-serverat-endpoint-selectionfrom
test/446-p7-6-physical-intake-diagnostic-validator

Conversation

@masarray

@masarray masarray commented Oct 8, 2026

Copy link
Copy Markdown
Owner

Stacked draft child of P7.5 PR #476 at exact head 7384de375aad981b4dd75cf5d8c947d72dd4e656. Coordinated by #446. Does not modify P7.5's branch, WPF runtime, ARIEC61850 pin, MMS reporting or release/physical authority.

Work

  • New read-only offline Python verifier of native full Copy Diagnostic for an exact IED: explicit semantic MATCH and exact fingerprint per Discovery/Open SCL, independently routed BRCB and URCB, full untruncated target list, selected-signal minima, accepted real per-target ROUTED status, nonempty binding identity and timestamps. Fail closed on incomplete, ambiguous or untrusted detail.
  • Strict eight-target diagnostic ceiling: native Copy Diagnostic prints only first eight per ingress. Never claim full traffic parity if required detail is hidden; do not fabricate network/physical evidence.
  • 16 sanitized positive/negative fixtures. Existing R7 interoperability Windows CI runs Python safety tests early; no new workflow or native build.
  • Document manual real-IED and independent PCAP checks in docs/audits/P7_6_FIELD_QUALIFICATION_INTAKE.md. Output is explicitly DIAGNOSTIC_CONSISTENCY_PASS_NOT_PHYSICAL_VERIFIED, never PhysicalVerified or release permission.

Safety, ownership, promotion

This is software CodeVerified qualification tooling only. Still require real 7SX85 two-ingress BRCB/URCB and J/F AP physical retests with controlled PCAP and no cyclic polling. Keep this PR DRAFT and stacked until P7.5's physical evidence and orderly branch integration authorize promotion. Does not touch or merge PRs #425/#454/#459/#466/#471/#473/#476. Scrub customer diagnostics; never upload private SCDs or PCAP unredacted. Source/engine/physical R10 acceptance remains unchanged.

Copy link
Copy Markdown
Owner Author

D22 controlled restoration without naïve historical branch merge: the three unique diagnostic-intake artifacts from this old PR, absent in the integrated RC, have been ported and hardened on isolated draft PR #759, HEAD fc8712c30b01480ef58cc59fe344bbb15dabb523, BASE protected RC 817c3910e8223fa2ac531a4426ada5d2d4bbbe50 (not main). The current production DiagnosticReportBuilder.AppendStaticIngressParity and StaticAcquisitionIngressEvidence output were checked to avoid unsupported assumptions. D22 adds 8 MiB local file bound, exact selected AP proof, atomic JSON output and failed-recheck replacement with qualification=NOT_ESTABLISHED; preserves all BRCB/URCB, exact SHA and untruncated <=8-target fail-closed fixtures. 20 offline sanitizer tests ran SUCCESS on real GitHub Ubuntu CI CI P0 40419547619, log Ran 20 tests in 0.099s / OK. Existing C#/MMS/engine/Write/GOOSE/safety untouched. Windows source build still being checked. Keep historic #479 OPEN until the replacement RC PR is accepted and merged (do not count draft branch as integrated). Local Copy Diagnostic PASS is never physical, PCAP or wire verification; all related real-field gates remain OPEN.

Copy link
Copy Markdown
Owner Author

D23 qualification and reconciliation status for original P7.6 field intake #479:

The replacement port PR #759 at exact fc8712c30b01480ef58cc59fe344bbb15dabb523 is now READY FOR REVIEW, targeting protected RC 817c3910e8223fa2ac531a4426ada5d2d4bbbe50 only. It is NOT merged and no main/stable/release/engine pins have changed. All three actual CI workflows on that SHA SUCCESS on first attempt: Windows canonical build 40419547617, CI P0 with 20/20 sanitized verifier cases 40419547619, and CI P1 40419547848. The Windows run produced test/native proofs, sealed package, and direct EXE; these are CI artifacts, not a new release or real IED FAT.

Exact changed-path overlap shows #759 touches zero files in concurrent #757 CI-P4; #753–#756 safety; #726/#716 Write; #688 SG7 performance; or #732 GUI. Three of #479's four historic unique paths are intentionally carried into #759; the older SCL R7 workflow is not blindly replayed. D22 hardened AP proof, 8MiB bounded source, 20 regression tests and atomic fail-closed negative output over historical work.

Keep #479 OPEN until #759 has independent owner review, branch-protection/required-check approval, and is actually merged. Not yet integrated merely because a candidate PR is ready. Any diagnostic PASS is not independent physical/wire PCAP qualification; leave #446, #520 and field FAT gates OPEN. No rerun of successful CI.

Copy link
Copy Markdown
Owner Author

D27 reconciliation — retired as superseded, NOT marked merged.

The P7.6 read-only local diagnostic qualification scope has now been integrated into the protected integrated RC by #759, exact merge commit d2d0ca731061824102058756fba8599ddfa2342e. This historical child was based on now-diverged P7.5 #476 and must not be merged afterward.

The RC has the same three replacement components (offline verifier, regression tests, field procedure), now 24 regression methods instead of historical 16, including source-aligned per-family RCB binding totals and malformed-digit stale-PASS protection. The safety fixtures now run in current CI P0 Workflow Integrity, not the divergent historical R7 workflow. Exact candidate Windows/CI were green before #759 merge.

Closing THIS old PR as superseded, not as a new physical acceptance: physicalVerification=false and wirePcapVerification=false remain mandatory; live IED R7/R10 FAT under #446/#520 is still open. No main or stable release promotion.

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