Skip to content

P0: integrate realtime FAT + clean evidence on current 1.6.26 main - #159

Merged
masarray merged 1 commit into
mainfrom
agent/fat-p0-integration-1.6.26
Aug 13, 2026
Merged

masarray merged 1 commit into
mainfrom
agent/fat-p0-integration-1.6.26

Conversation

@masarray

Copy link
Copy Markdown
Owner

Safe integration of P0 FAT work

This PR supersedes #156 for merge safety. It is built directly on the current main baseline 403c451b72fe37ae345c8c154956ab24e379655b, after the 1.6.26 release and its release-evidence synchronization.

Only the 11 files changed by the validated P0 FAT work were transplanted onto current main. In particular, this does not replace files changed by parallel progress in #155, #157, #158, or the subsequent 1.6.26 release-evidence sync.

P0 scope:

  • isolated 250 ms FAT commissioning polling, restored when FAT closes
  • live-first FAT readiness instead of the legacy 8–18 second foreground report settle/restart path
  • deterministic fast MMS for commissioning digital points while keeping normal engineering report-first behavior
  • bounded background evidence UI drain (64 snapshots / 4 ms)
  • batched startup journal flush while retaining the SHA-256 evidence chain
  • New Clean FAT retest boundary: verify + archive historical journals, clear active ON/OFF/relay timestamp/Time Sync/COMTRADE evidence, re-enable import-ready points, save a clean snapshot, reset session to IDLE
  • regression tests updated for the new P0 contract

Historical evidence is not rewritten or deleted.

Merge gate: do not merge until full Windows build/test/package, focused IO FAT tests, and deterministic SV checks all pass on this exact integration head.

Transplant the validated P0 FAT changes onto the current 1.6.26 main baseline while preserving the timestamp rounding, full-resolution evidence tooltip, and release evidence changes already merged by parallel work.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5053bfb951

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +28 to +30
var reportCandidates = all
.Where(point => !IsFastCommissioningPoint(point))
.ToList();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Restrict fast-point report suppression to FAT sessions

When an ordinary Live Monitor project uses a polling interval of 500 ms or less, every Boolean/status/protection point now satisfies IsFastCommissioningPoint and is removed from both static and dynamic report plans, even though no FAT workspace is active. Those users therefore lose configured report acquisition and rely only on sampled MMS reads, which can miss transitions and discard report timestamps; pass an explicit commissioning mode instead of inferring it solely from the polling interval.

Useful? React with 👍 / 👎.

Comment thread MainWindow.IoTesting.cs
Comment on lines +379 to +382
if (_pollingIntervalBeforeIoFat.HasValue)
{
PollingIntervalMs = _pollingIntervalBeforeIoFat.Value;
_pollingIntervalBeforeIoFat = null;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Restore the running monitors when FAT closes

When a FAT-prepared device remains connected after the FAT window closes, assigning the saved PollingIntervalMs only restores the MainWindow setting; StartDeviceMonitorAsync already copied 250 ms into each monitor point, and the current runtime/report plan is not restarted here. Returning to the engineering window therefore leaves that device on high-rate polling with its digital points excluded from reports, so the affected monitors need to be reconfigured or restarted as part of this close path.

Useful? React with 👍 / 👎.

@masarray
masarray merged commit 53efbbb into main Aug 13, 2026
3 checks 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