Repository navigation
Conversation
…e; retain conservative RECEIVER policy
…ternal PTP retains full conservative gate
…nd fail closed on source, gap, TX, fault
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
…hase handoff failure
… AUTO timing changes
Accept 80 samples/period at 50/60Hz with 4000/4800 fps and epoch wrap; retain per-second and legacy optional omission. Validate SCL binary before commit, emit exact BER fields in firmware, show effective fields in Studio, exercise encoded PDU and malformed metadata in C++ regression. Preserve PTP SOURCE fast measured lock and older ASCII PROFILE compatibility.
…st-source contract Keep conservative LOCAL REF 10-epoch and WARM test gates while explicitly checking SOURCE_FAST measured MAC/phase qualification and acquisition reset. Assert exact 16-bit BER sample fields without MSVC narrowing warning under /WX.
…xposing opt-in AUTO switch console Only non-self matching-domain/transport/VLAN Announce qualifies as discovery, never a timing-LOCK. Pdelay response path unchanged. Introduce AUTOSWITCH 1/0/SHOW without forcing external clocks on users.
…own only after handoff
…op/config/start and rollback Opt-in SOURCE actual external Announce triggers receiver admission after stable evidence. Serialized EMAC break-before-make revokes SV synchronization, never forges receiver lock; measured receiver LOCK controls traceability and SV lease. Lost/unlocked receiver returns to captured local SOURCE with anti-flap cooldown. Manual STOP disables supervisor. Expose status/counters.
…onal IDF build Test qualified consecutive Announce, duplicate/change/expiry, no dual EMAC ownership, missing receiver LOCK, post-LOCK loss, reacquisition, revert cooldown and explicit disable. Compile AUTO command only where PTP firmware is enabled.
…acked status and guardrails Expose real board AUTOSWITCH capability, candidate Announce evidence, handover/return/error counters. Route button through SmartSessionController authority (no QML direct device mutation), prevent optimistic LOCK status, obey START/profile/firmware update gates, refresh asynchronously over existing serial telemetry. No UX bulk or extra build workflow.
…asserting receiver LOCK
… failed hardware rollback When no PTP worker remains after a failed receiver→source recovery, attempt break-before-make local startup every 10s rather than silently losing all timing forever. Preserve STOP cancellation and exclusive EMAC. Studio correctly notes disabling AUTO while RECEIVER stays in control.
…sole/Studio before switch Display physical Ethernet candidate provenance, freshness, stable Announce count and measured receiver authority separately. Stale candidate count falls to zero without discarding observation history. No optimistic GM/LOCK or source recoding.
…VLAN/transport/self admission Move Ethernet qualification into shared portable production predicate. Cover malformed/non-Announce, double-tagged QinQ, mismatched/untagged VLAN, wrong domain/transport, self clock, absent source port and clock-class 255 in CTest. Preserve source hardware timestamp Pdelay responder unmodified.
|
M3.H source reconciliation (2026-10-24): #284 is not an ancestor of the final shipped M3.H source; comparison final |
|
M3.H release=main reconciliation — 2026-10-24 Verified product baseline is 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 Canonical closure record: https://github.com/masarray/arstack61850/blob/main/docs/integration/M3H_MAINLINE_RELEASE_SOURCE_CLOSURE_2026-10-24.md . |
PR archival decision — M3.H release hygiene (2026-10-24)CLOSED as SUPERSEDED HISTORICAL IMPLEMENTATION — NOT MERGED and NOT marked as a completed feature.
This branch diverges from current main; its unique changes have not passed the validated M3.H release gate. The old source and discussion stay reachable for traceability. Future implementation must be a new, narrowly scoped PR based on current main, with focused CI and hardware evidence where applicable. Closing the obsolete PR removes misleading release-ready queue items while preserving the unresolved feature requirements. Evidence ledger: M3.H Mainline Source Closure. |
Root cause
In the 2026-10-22 capture of PR#282 the ESP32-P4 SOURCE PTP Announce, Sync/Follow_Up and the SV 4kfps/gmIdentity stream were already structurally valid, but AUTO held smpSynch=0 for 85,001 frames (~21.25s). The hard-coded
SvLocalRefAcquisition::kRequiredCleanEpochs=10is a conservative multi-second probation appropriate for an external GM receiver but unnecessarily slow for the ESP32's own EMAC 1588 hardware GM. Manual FORCE_2 immediately sets the flag but bypasses timing evidence.Changes
Hardware gate
CI compilation and portable tests do not certify relay. Run on isolated SIPROTEC bench, measure phase lock acquisition after START, Pdelay exchange and relay accepted SV/current/voltage with no sync alarm. Expected faster lock is not a claimed physical result until measured. Never merge to main or stable without review.
2026-10-22 SCL-derived SV metadata and SOURCE_FAST checkpoint
smpRate=80/smpMod=0at 4000 fps, 60Hz 80 samples/period produces 4800 fps; per-second mode remainssmpMod=1; legacy optional omission remains backward-compatible. Code commit017d9a8db9c4ab7f2598577446c5827f82654ec5; integrated binary 4I4V validation and BER roundtrip regression./WXoptional narrowing warning in sample-rate regression; updated Qt Studio PTP SOURCE_FAST structural contract to require real measured MAC/phase evidence and conservative 10-epoch COLD/WARM tests (25accab5eb45a2036e507f0759ffde0fda9c9b92). Corrected inspector modeSmpPerSecmatching the SCL model (3ebe7299c3bc8c777567dba36ffbdb1f505da457).017d9a8. Windows C++ and Qt contracts initially failed on test-only issues, fixed in subsequent commits above; final exact-HEAD CI still pending at checkpoint. Do not imply ESP32 physical retest.smpSynch=2qualification, alter main/stable, or merge stacked PRs without verifying exact parent graph/CI and explicit user permission.P1 external-GM AUTO failover — implementation checkpoint
056c7bf0c27f1856bcfe779447f4c7d890912e84(branchfix/ptp-source-fast-auto-lock-20261022). Base remains original PR#283; no main/stable merge and no PR history deleted.PTP AUTOSWITCH 1|0|SHOWCLI, only allow ON after active verified SOURCE; Studio invokes only via SmartSessionController, readback from firmware, exposes candidate GM identity/port/class, valid count, switch/return/fail counters. No optimistic LOCK/SV claimed.ariec61850_ptp_external_failover_testsregistered in root CMake for real stable 3-Announce, duplicate/reorder, wrong GM/clock class, mutual-exclusion, lock timeout, post-lock loss, recovery, cooldown and disabled policy. No new workflow created.9f3067a43e9722aaa5ea36dcbb61682bc1687998passed PTP Core GCC/Clang/MSVC, C++ CI GCC/Clang/MSVC and ESP32 PTP SOURCE+RECEIVER IDF builds. Current exact056c7bf0CI status must be checked again before merge; changes after 9f include bounded rollback retry and metadata UI.c0f3b4e3c22dff62f011a9cf88af6fbdf42a50c0: shared productionptp_external_candidate_from_framevalidates PTP Announce, domain, transport, VLAN/untagged/QinQ, not-self, source port and clock class; portable CTest now exercises the exact predicate used by the ESP32 source RX, not a duplicate test-only network filter. Final exact-HEAD CI and physical tests remain unverified until results.