Conversation
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: d8dc3a28ac
ℹ️ 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".
| run(["make", "-C", str(lib), "-B", "-o", "build", f"-j{args.jobs}", f"GCC_PATH={gcc_path}", | ||
| "OPT=-O3 -fno-short-enums -fno-fast-math -ffp-contract=off"]) |
There was a problem hiding this comment.
Avoid rebuilding the caller's shared libDaisy tree
When a developer follows the documented --libdaisy ../../libDaisy invocation from an ordinary clean checkout, verification accepts that shared dependency and these lines force-recompile its build/libdaisy.a with HydraPulse-specific enum and floating-point flags. Subsequent sibling examples can silently link against that incompatible archive until libDaisy is rebuilt normally; perform this build in a private dependency copy/output tree or reject a non-isolated checkout.
AGENTS.md reference: field/HydraPulse/AGENTS.md:L6-L8
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c170b132ce
ℹ️ 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".
| r = subprocess.run(command, cwd=ROOT, capture_output=True, text=True, | ||
| timeout=timeout, check=False) |
There was a problem hiding this comment.
Preserve timed-out commands in the build log
When an ARM compiler or make invocation exceeds its timeout, subprocess.run raises before the command, partial output, or exit state is appended to transcript; the outer handler then returns failure while build.log is absent or contains only earlier commands. This makes the timed-out qualification failure unauditable, so catch TimeoutExpired inside run() and persist its command and captured output before re-raising.
AGENTS.md reference: field/HydraPulse/AGENTS.md:L20-L23
Useful? React with 👍 / 👎.
HydraPulse is added under
field/HydraPulsewith separate FieldTruth diagnostic and instrument firmware, host-testable sequencer/DSP, presets, documentation and permanent qualification tools. Both images now build against DaisyExamples' existing libDaisy pin without changing shared dependency gitlinks or the standalone repository.The integration adapts the GPIO API, ARM integer types and LED overloads to the pinned BSP, uses application
-Osto fit the 128 KiB BOOT_NONE layout, and fixes target-specific build/flash paths. The only existing workflow change exempts the immutable R0 archive from formatting; active sources match clang-format 10.Validation performed locally: 14/14 CTest in Release, UBSan and Clang ASan+UBSan; 38/38 Python tests; provenance/generated-preset checks; deterministic stereo renders; libDaisy 151/151 host tests; QAE zero errors and seven documented advisory warnings. All eight Mermaid diagrams rendered and visually inspected.
Actual GNU Arm 13.2.1 builds produced FieldTruth (107280-byte BIN) and HydraPulse (122320-byte BIN), with ELF/BIN/MAP hashes and input manifest retained. FieldTruth was programmed through the identified ST-Link, verified and reset. Live CDC telemetry confirms 48 kHz/48 samples, maximum reported load 2.8%, zero overruns/late starts; a clean 30-second recapture had no malformed records or additional drops. Physical diagnostic smoke remains PARTIAL: all-key/knob coverage and analog passthrough/listening are still pending. The operator subsequently reported absent audio/whistle on the first Seed, replaced the processor, and explicitly requested HydraPulse on the replacement. The existing synth was backed up, the different processor identified, and HydraPulseBeat programmed, verified and reset. Its 55-second CDC capture reports max load 12.3%, zero faults/overruns/late starts and queue drops. The operator subsequently reported correct output, working sequencer and some sounds, plus working SW1/SW2, keys, key LEDs, knobs and volume on the replacement Seed. This establishes operator-reported basic smoke only: all voices, repeated gestures, decay-to-silence, click/clipping and stereo qualification remain incomplete. The first Seed fault is suspected, not proven. Knob LEDs are unimplemented in both images and intentionally remain dark.
See
field/HydraPulse/docs/INTEGRATION_2026-09-08.mdfor exact deviations, dependency identity, evidence and remaining hardware gate. CI never flashes hardware.At source commit fdd22f3, branch qualification (all host modes and ARM), PR Build All and Fix Style passed. The latest commit records hardware/CI evidence only; runtime sources are unchanged. CI artifacts were downloaded and hash-verified. Local/CI BINs differ only in the embedded source ID due to CRLF/LF in the generated preset header; both exact manifests are preserved.
The latest documentation-only follow-up records this positive operator report and clarifies knob LED behavior. No firmware source or flashed image changed.