Repository navigation
Conversation
…nge and epoch gaps
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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 76b1468c19
ℹ️ 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".
| if (live_age_ < kMaxWarmMacAcquisitionEpochs + 1U) ++live_age_; | ||
| if (live_age_ > kMaxWarmMacAcquisitionEpochs) | ||
| preflight_epochs_ = 0U; |
There was a problem hiding this comment.
Preserve warm qualification after promotion
When the warm path first qualifies at the real descriptor cadence, live_age_ is 8 and count_ is 3; on the next otherwise healthy epoch, live_age_ becomes 9, this clears preflight_epochs_, and the return expression becomes false because count_ is only 4. Firmware therefore advertises LOCAL for one second, revokes it for the following healthy epochs, and only restores it when the cold count reaches 10—the exact intermittent synchronization behavior this change is intended to prevent. Latch an explicit warm-promoted state (cleared on evidence loss or identity changes), or otherwise expire warm eligibility only before promotion.
AGENTS.md reference: AGENTS.md:L74-L76
Useful? React with 👍 / 👎.
Final engineering checkpoint — 2026-10-21, exact HEAD verifiedPR #269 HEAD: Implemented in this stacked branch
CI exact SHA: 10/10 complete SUCCESSProduct Naming Guard, Security and Evidence, Embedded Profile CI, ESP32-P4 SMV Injector, ESP32-P4 PTP Lab Profile (SOURCE + RECEIVER), PTP Core CI, C++ CI (Linux GCC+Clang/Windows MSVC), ARStack Studio Qt (native session harness, contract, clipboard), ARStack Studio Windows Lifecycle, ARStack Studio Native Preview. Windows native preview verifies matching firmware build, packaged GUI smoke, Inno install/upgrade/uninstall, real public NSIS 0.1.1 migration. Physical bench Windows package: https://github.com/masarray/arstack61850/actions/runs/39520909050/artifacts/12311670512 — Remaining gatesFlash same build via Studio GUI, compare installed firmware Build ID |
Continuation of #268; NOT main merge or public release
Physical baseline: 2026-10-20T23:05:09Z PCAP, head
6c97195e80c0058f, stablesmpSynch=1105 s with 499,988 SV frames, but acquired only ~19.77 s after capture began (not click-to-LOCK). PTP SOURCE remained active.Root cause
SvLocalRefAcquisitionalways discarded preflight and demanded ten fresh live MAC+phase epochs after START even when ESP32-P4 GPTimer/PTP had already demonstrated prolonged stable preflight. Independent canonical MAC TX evidence must still be measured in the live publisher, not guessed from the dry GPTimer clock.Implemented
smpSynch=1.TXN_BEGIN → CFG_COMMITTED → CFG_VERIFIED → START_ACK_VERIFIEDand STOP/failed START readback. Existing 60K bounded log, no duplicate GUI state.Acceptance gates
Run native/embedded/Windows packaging CI at exact HEAD; after green, provide integrated Studio GUI installer+embedded firmware to bench operator. Warm acceleration is a design improvement, not hardware-proven LOCK speed. Warm requires 10 consecutive qualifying pre-START epochs; immediate click when no preflight remains conservatively cold. External GM/PTP hardware accuracy and IED acceptance remain unproven. Do not merge to main or release prior to physical tests.
Stack:
#269 → #268 → #267(subject to assigned PR number).Additional P0 lifecycle fix (same branch)