Skip to content

P0 Studio field fixes: delayed USB firmware verification, truthful START, capture phase evidence - #259

Closed
masarray wants to merge 13 commits into
fix/studio-first-class-capture-ux-20261020from
fix/p0-studio-usb-recovery-start-feedback-20261020
Closed

masarray wants to merge 13 commits into
fix/studio-first-class-capture-ux-20261020from
fix/p0-studio-usb-recovery-start-feedback-20261020

Conversation

@masarray

Copy link
Copy Markdown
Owner

Physical evidence 2026-10-20

On-board ESP32-P4 v1.3, write-bin and reset succeeded but immediate serial IDENTIFY timed out. Later PCAP Studio telemetry showed exact bundled build c959486 running, so flash was written; UI incorrectly reported a terminal failure. At the same time ~125s on-wire SV sample sequence was continuous (499,696 packets, 3,999.900 fps, missing=0, duplicate=0, malformed=0), while smpSynch went 0→1→0→1. PTP SOURCE packet presence does not prove external GM lock and all Studio snapshots reported UNLOCKED; release stays blocked.

Corrections

  • Introduce post-flash identity-pending supervisor state after bounded reconnect attempts instead of treating successful write as failed flash; keep identity-only recovery alive (never reflash automatically), inform operator to press RESET/reconnect USB, and only promote VERIFIED on exact firmware identity matching the bundled build, including delayed replies.
  • Make firmware post-flash waiting nonmodal and distinguish from real flashing/identity mismatches.
  • Explicit Preview control only in stable offline state; while a real board is CONNECTING/awaiting identity, the physical START cannot silently become offline preview. Keep transactional START/ACK validation and visible Starting state.
  • Include bounded passive 1-Hz firmware console tail in Studio's own synchronized SV+PTP capture evidence, no serial polling or TX-path interference.
  • Add UI structural regression verifying these contracts; restore real-world test evidence.

Release gate

Do not merge main until exact-head CI passes and post-fix physical re-test demonstrates serial recovery, single-click START, and no transient LOCAL drops with IED/GM acceptance.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ⚠️ Failed 2026-10-20T07:04:25.434943Z fa72fbb PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

Copy link
Copy Markdown
Owner Author

2026-10-23 source parity audit vs recovered checkpoint — KEEP OPEN

Source #259 head a852170c2e990eb75d2b8c024942f3a494651e8e is DIVERGED from recovered merged #288 final head 8a2428503ee8a1595b03901ac8c1ca2b8343c728; this is not ancestry-contained. Source-wide feature review uncovered unported semantic behavior. In recovered source: SmartSessionController.hpp/.cpp contain no postFlashVerificationPending_ / firmwareVerificationPending contract, DeterministicSessionHarness.cpp contains no postFlashDelayedIdentityRecovers or postFlashWrongBuildFailsClosed test, and SvCapturePanel.qml contains no firmware_log_tail_UNVERIFIED bounded passive firmware log tail. Current ModernRibbon has different physical START/Connecting/Preview logic, but it does not establish equivalence of #259 delayed identity recovery.

Historical #259 had specific physical evidence (flash verified much later than immediate USB IDENTIFY, exact c959... found) and a fail-closed post-flash identity wait. Unique release gate: write-bin success followed by USB CDC delay must not generate a false failed-flash/reflash or VERIFIED without exact build ID; tests must separately cover delayed correct identity, wrong identity and preview-instead-of-START transitions on Windows. The 1-Hz bounded serial tail is a distinct field-forensic feature and is NOT proven by the newer #288 partial-PCAP recovery fix.

Disposition: KEEP OPEN, not obsolete, until deliberately ported/retested into selected Stage→Main source or explicitly descoped with maintainer approval. No code copied, no branch changed, and no merge.

@masarray
masarray marked this pull request as draft October 24, 2026 08:40

Copy link
Copy Markdown
Owner Author

M3.H release=main reconciliation — 2026-10-24

Verified product baseline is a922e9bdba4e57a4e88406eb83344455dd8ff142 (ESP32-P4 firmware Build ID a922e9bdba4e57a4); consolidated PR #299 is MERGED to main with 14/14 integration checks passing. The official M3.H Stable tag and tested source are ancestors of main.

This PR has a distinct historical/divergent change scope and is not part of the immutable shipped M3.H baseline. It remains DRAFT / NOT READY for merge; do not merge against an obsolete stacked base or count its tests as final M3.H acceptance. Reconcile only still-needed unique behavior into a fresh branch from current main, with implementation-level comparison, all affected CI tests, and targeted ESP32-P4 FAT where relevant. If superseded, close with an explicit feature-by-feature disposition instead of importing old firmware wholesale.

Canonical closure record: https://github.com/masarray/arstack61850/blob/main/docs/integration/M3H_MAINLINE_RELEASE_SOURCE_CLOSURE_2026-10-24.md .

Copy link
Copy Markdown
Owner Author

Archived as superseded post-M3.H implementation (2026-10-24)

NOT MERGED, NOT accepted as complete. Historical branch head a852170c2e990eb75d2b8c024942f3a494651e8e is preserved. The actual M3.H source a922e9bdba4e57a4e88406eb83344455dd8ff142 is already merged into main via PR #299, with 14/14 integration CI.

Earlier firmware identity post-flash and capture UX no longer constitute M3.H acceptance; preserve remaining USB error/reporting work.

Outstanding feature acceptance lives in #300; old stacked branch cannot be merged safely. Re-implement missing behavior from current main, supported by focused regressions and hardware evidence, and release under a new tag. Closure ledger.

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