feat(acceptance): #205 AC#2 teensy30 AnalogOutput .dmabuffers gate#227
feat(acceptance): #205 AC#2 teensy30 AnalogOutput .dmabuffers gate#227
Conversation
Adds a third acceptance gate to the #205 matrix that enforces AC#2 from the issue body verbatim: `fbuild build teensy30 AnalogOutput` must link successfully with `.dmabuffers <= 1 KB`. DMAMEM-tagged statics in FNET, Snooze, RadioHead and mbedtls each pull DMA descriptor pools and frame buffers into `.dmabuffers`, and the Teensy 3.0's 16 KB SRAM can't absorb them — so a regression in the Phase 4/5 resolver (PR #217) would fail this gate. Complements teensyLC's `.bss <= 3 KB` gate from #220 by exercising a second forbidden ELF section on a different MCU, while mirroring the stm32-style inline-tempdir project_dir so the committed `tests/platform/teensy30/` fixture is untouched and no scratch `compile_commands.json` / `.fbuild/` artifacts can ever land in the repo. Same LTO-symbol caveat applies as in #226: section size and forbidden-symbol substrings are the meaningful signals, not setup/loop probes. Refs #205 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughThis PR adds a new Teensy 3.0 acceptance test for issue ChangesTeensy 3.0 AnalogOutput Acceptance Gate
Estimated Code Review Effort🎯 2 (Simple) | ⏱️ ~12 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary
Closes the last unimplemented acceptance criterion of fbuild issue #205 (AC#2 from the issue body):
crates/fbuild-build/tests/teensy30_acceptance.rsruns the fullTeensyOrchestratoragainst a tempdir-onlyAnalogOutput.inosketch and asserts:result.success(link succeeded).dmabufferssection size <= 1024 bytes (AC#2 gate)fnet_,snooze_,RadioHead, ormbedtlssymbol substrings in the ELF (teensy30/LC: Teensy orchestrator compiles unreferenced framework libraries (FNET, Snooze, RadioHead, mbedtls) — causes .bss / .dmabuffers RAM overflow #204 regression guard)compile_commands.jsonparses (viaresult.compile_database_path, matching the fix(acceptance): #223 stm32 SPI + teensyLC LTO-symbol probes #226 fix) and references none ofFNET/Snooze/RadioHead/mbedtls.github/workflows/acceptance-205.ymlgains a third matrix entryteensy30 AnalogOutputand the new test file is added to thepull_request.pathsfilter.Why it matters
DMAMEM-tagged statics in FNET, Snooze, RadioHead and mbedtls pull DMA descriptor pools and frame buffers into the
.dmabufferssection. The Teensy 3.0's 16 KB SRAM can't absorb them, so if the Phase 4/5 resolver (PR #217) regresses to linking those libraries into a simpleanalogWritesketch, this gate fails the build immediately. Complements teensyLC's.bss <= 3 KBgate (#220) by exercising a second forbidden ELF section on a different MCU.Design notes
project_dir(not the checked-intests/platform/teensy30/fixture) so nothing scratch lands in the repo.result.compile_database_pathdirectly per fix(acceptance): #223 stm32 SPI + teensyLC LTO-symbol probes #226 -- the pipeline ignoresparams.build_dirfor compdb location.setup/loop/analogWritesymbol probes: Release profile-flto -Osinlines them and--gc-sectionsstrips the independent symbols (same root cause as #205 AC#4: stm32f103c8 SPI auto-discovery is failing — SPIClass symbol missing from ELF #223). Section size and forbidden-symbol substrings are the meaningful signals.Files
crates/fbuild-build/tests/teensy30_acceptance.rs(new, 132 LOC).github/workflows/acceptance-205.yml(+4 lines: new matrix gate + paths entry)Test plan
uv run soldr cargo build -p fbuild-build --tests-- cleanuv run soldr cargo clippy --workspace --all-targets -- -D warnings-- cleanuv run soldr cargo fmt --all -- --check-- cleanzstd-sys/redbrelease builds; dev profile builds clean)teensy30 AnalogOutputmatrix entry -- this is the canonical verificationRefs #205 -- this is one criterion of a META; AC#5 and AC#6 perf anchors remain.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
Summary by CodeRabbit