Repository navigation
Conversation
…t replaying live ticket as START
…transactional live per-channel mutations
…T and RUNNING live apply
…er or resetting counters
… bypassing ownership
…vision-aware coalescing
…eout induced auto-retry
…replay after operator STOP
… no START token escalation
…ng; require atomic scenario
… atomic-apply authority
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: 0e71eea9ae
ℹ️ 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".
| bool DeviceController::applyLiveScenario(const QVariantMap& scenario) { | ||
| return submitScenario(scenario, false); |
There was a problem hiding this comment.
Negotiate live CFG support separately
When Studio connects to a previous same-version build, that build remains compatible because build mismatch is advisory and it already advertises SV-CONFIG-TXN-V1, but it rejects CFG BEGIN while running. This new method therefore submits an unsupported live batch; processLine() does not recognize CFG BEGIN rejected as terminal, so eight seconds later failScenarioStart() sends STOP, unexpectedly terminating an otherwise valid injection on its first edit. Conversely, the new firmware retains LIVE-SETPOINTS while rejecting the legacy running SET path used by older Studio builds. Add a distinct capability or bump the protocol/version, then gate both behaviors on it.
AGENTS.md reference: AGENTS.md:L235-L236
Useful? React with 👍 / 👎.
…ptimistic partial delivery
…alias initialization
…reconnect RUNNING
…arbitrary RUNNING readback
…ithout operator START
Root cause
RUNNING edits in Main.qml still used legacy per-channel SET / FREQ / SHAPE, which can publish mixed intermediate 4I+4V SV frames. Additionally an urgent SV STOP cleared a queued independent PTP STOP.
Design
Reuse the same SvScenarioTransaction and triple-bank state from parent PR #252; differentiate stopped START versus RUNNING live update, checksum the complete GUI 8-channel/FREQ/quality/enabled/CT shape snapshot, and atomically publish once. Firmware rejects non-transactional per-channel commands while RUNNING. Live transaction ACK + applied-state readback must agree with nonce/hash/boot/generation, without sending START or resetting smpCnt or phase. QML revisions preserve edits arriving during the in-flight transaction; pendingApply only clears on verified ACK. STOP suppresses retries and retains independent PTP STOP safety.
Tests: portable live transaction atomicity + replay rejection, Studio deterministic live ACK/no-START, emergency STOP with PTP STOP preserved; exact SHA CI must be green before hardware acceptance. No ISR/PTP/smpSynch modifications. No merge to main; physical waveform/phase/fps/PTP still pending.
Additional fail-closed reconnect gate
A board observed as RUNNING after USB reconnect is not proof of a newly operator-approved START. Main.qml now disarms live auto-apply on verification/reconnect and WorkflowBar arms it only from an in-flight operator START after token-bound ACK. Late or unsolicited RUNNING telemetry leaves the draft dirty without sending CFG. Source-policy regression guards this boundary. Independent PTP STOP still survives SV queue cancellation.