Repository navigation
Conversation
…MMIT/readback Prevalidate/freeze all three typed 4I4V scenario drafts and canonical per-MU hashes before touching UART. Apply fixed 12-command per-slot SVSTREAM CFG batches via the sole DeviceIoWorker, with mandatory firmware token/hash/generation COMMIT+READBACK before moving to next MU. Enforce 7s stage/60s total bounds, STOP/boot/session cancellation and explicit partial-commit diagnostics. Integrate Apply 3 MU in single Studio GUI, keep global START gated. Extend existing M4 and S8 harnesses; no new CI jobs, no MCU realtime-path change.
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: ed4a6a7f0c
ℹ️ 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".
| m4ScenarioTimer_.stop(); | ||
| if (m4Scenarios_.active()) m4Scenarios_.cancel(reason); | ||
| const int verified = m4Scenarios_.verifiedSlots(); | ||
| m4ScenarioApplying_ = false; | ||
| m4ScenariosVerified_ = false; |
There was a problem hiding this comment.
Cancel queued MU commands before releasing transaction ownership
If the seven-second timer expires while an exclusive batch is still draining, this only cancels the host state machine; the remaining SET/SHAPE/COMMIT commands stay in DeviceIoWorker::commandQueue_. When serial writes resume, firmware can still accept that COMMIT within its eight-second transaction deadline, changing a bank after Studio has reported cancellation and re-enabled Apply/Deploy. Explicit STOP avoids this through queuePrioritySvStop(), but timeout cancellation never invokes an equivalent queue-retirement path. Cancel or retire the outstanding worker batch before releasing serial ownership so cancelled transactions cannot continue mutating the board.
AGENTS.md reference: AGENTS.md:L160-L163
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Fixed in ce4095d5 (current PR head). DeviceController::cancelM4Scenarios now holds m4ScenarioRetiring_ and blocks new Deploy/Apply/SHOW until the existing DeviceIoWorker::retireExclusiveCommands signals complete. The worker drops remaining unsent exclusive CFG commands, preserving normal commands and never emitting an unsolicited STOP; if one command is actively writing, retirement confirmation waits until that write drains. Since already-written COMMIT may execute, GUI reports uncertain/partial bank state and START stays prohibited. Added S8 test for stale queued COMMIT removal, in-flight retirement gating and no SV/PTP STOP. Checking exact-head CI before resolution/merge.
Qt's slots macro collides with an internal DSP slots identifier when live_signal_state.hpp is included after Qt in DeviceController.hpp. Keep the M4 scenario public header transport-only, and load live_signal_transaction.hpp first in its .cpp. Addresses exact compiler log; no ABI or runtime change.
…thority Serial worker now drops all unsent exclusive MU CFG commands on failed/timeout transaction, but does not synthesize SV/PTP STOP. Its retirement ACK is held until an active write drains; DeviceController maintains the command reservation meanwhile and never infers firmware bank rollback. Add S8 queue retirement and in-flight regression. Addresses Codex P2 safety review; no CI configuration or firmware changes.
…ment fixture The seedVerified helper models semantic board identity before the asynchronous DeviceIoWorker ready signal. Explicitly mark the existing worker ready in the M4 STOP/retirement regression so the test exercises queued exclusive retirement, rather than failing its admission check.
P0E3A meaningful product milestone
M4ThreeMuScenarioApplyencodes three independent fixed-capacitySVSTREAM 1/2/3 CFG BEGIN/FREQ/8 SET/SHAPE/COMMITbatches, computes each canonicalsv_scenario_hash, and requires exact firmware COMMITTED token/hash/generation followed by firmware READBACK token/hash/generation before advancing to the next slot.arstack_m4_upload_harness(MU3 preflight failure; correct all three commits/readbacks; wrong hash; boot epoch fault), plus the existing S8 deterministic harness for STOP and V1 isolation. No extra workflows, runners, or matrix entries. Engineer guide.Tracks M4 P0: Three simultaneous SCL-configured 4I4V SV streams with shared PTP grid and per-stream Studio pages #333. Next P0E3B: complete firmware SHOW CT readback/reconnect adoption; then group START gate and P0F physical capture.