chore(baseline-205): fix teensylc env name + capture #205 AC baseline#220
chore(baseline-205): fix teensylc env name + capture #205 AC baseline#220
Conversation
The TARGETS list in `ci/measure_baseline_205.py` used `teensyLC` (camelCase), but the env key in `tests/platform/teensylc/platformio.ini` is `teensylc` (lowercase). fbuild's env lookup is case-sensitive, so every prior run errored: `build failed: invalid environment 'teensyLC': config error: environment 'teensyLC' not found`. With the name corrected, all four targets build cleanly. Captured numbers (release, host arm-none-eabi-size): | env | TUs | .text | .data | .bss | .dmabuffers | |-------------|----:|-------:|------:|------:|------------:| | teensylc | 68 | 6,980 | 380 | 1,068 | 192 | | teensy30 | 68 | 6,684 | 272 | 1,120 | 248 | | teensy41 | 85 | n/a | 3,776 | 1,664 | n/a | | stm32f103c8 | 201 | 12,192 | 240 | 1,012 | — | Quick AC read for #205: - AC#1 (teensylc Blink ≤ 250 TUs, .bss ≤ 3 KB): met (68 TUs, 1,068 B). - AC#2 (teensy30 .dmabuffers ≤ 1 KB): met (248 B). - AC#3 (teensy41 builds): met. - AC#4 (stm32f103c8 builds + SPI auto-discovered): builds; SPI attribution requires inspecting compile_commands separately. Caveat: the script's "excluded library hits" scan counts every substring match in compile_commands.json, including `-I.../libraries/<lib>` flags propagated to every TU. That is why FNET/Snooze/RadioHead each show "68 entries" on teensylc — the count equals the TU count because the include path is on every TU, not because 68 FNET sources were compiled. The functional AC#1 ("FNET / Snooze / RadioHead / mbedtls not compiled") still requires inspecting the `file` fields, not the `arguments` fields. Tracked as a follow-up. Refs: #205 AC#1-#4. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Warning Rate limit exceeded
You’ve run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
✨ Finishing Touches🧪 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 |
…nsylc env, add CI badges Three final polish items before closing #205. ## test — `r04_pass2_reconciliation_catches_cpp_only_dependency` The canonical "why 2-pass beats single-pass BFS" scenario, which the existing 16-test suite was missing as an explicit guard: - Project includes `<SPI.h>`. `SPI.h` is silent (no transitive includes). - `SPI.cpp` is the *only* place that includes `<Wire.h>`. A single-pass BFS over headers selects {SPI} and silently misses Wire — link-time undefined symbols. The LDF's pass 2 re-seeds with each selected lib's full source set, so Wire is reached and selected. Test asserts {SPI, Wire} and is the regression guard against accidentally collapsing the resolver back to a single pass. Brings the resolver test count to 17 (10 LDF + 7 cache). ## fix — teensylc acceptance gate env name `tests/teensylc_acceptance.rs` passed `env_name: "teensyLC"` (camelCase) and looked up `compile_commands.json` under `<build>/teensyLC/`. The actual env in `tests/platform/teensylc/platformio.ini` is `[env:teensylc]` (lowercase) — same case-sensitivity bug fixed in #220 / #221 for `measure_baseline_205.py`. The acceptance gate has been failing on every run (including main) for this reason. ## badges Adds badges for the two #205 workflows to README.md's CI status block: - `acceptance-205.yml` — AC#1 (teensyLC) and AC#4 (stm32 SPI) gates - `bench-205.yml` — P-02 (cold) / P-03 (scanner) / P-01-mini (warm) perf gates Both have been live since #211 / #210 but were not discoverable from the README. Refs: #205. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…nsylc env, add CI badges Three final polish items before closing #205. ## test — `r04_pass2_reconciliation_catches_cpp_only_dependency` The canonical "why 2-pass beats single-pass BFS" scenario, which the existing 16-test suite was missing as an explicit guard: - Project includes `<SPI.h>`. `SPI.h` is silent (no transitive includes). - `SPI.cpp` is the *only* place that includes `<Wire.h>`. A single-pass BFS over headers selects {SPI} and silently misses Wire — link-time undefined symbols. The LDF's pass 2 re-seeds with each selected lib's full source set, so Wire is reached and selected. Test asserts {SPI, Wire} and is the regression guard against accidentally collapsing the resolver back to a single pass. Brings the resolver test count to 17 (10 LDF + 7 cache). ## fix — teensylc acceptance gate env name `tests/teensylc_acceptance.rs` passed `env_name: "teensyLC"` (camelCase) and looked up `compile_commands.json` under `<build>/teensyLC/`. The actual env in `tests/platform/teensylc/platformio.ini` is `[env:teensylc]` (lowercase) — same case-sensitivity bug fixed in #220 / #221 for `measure_baseline_205.py`. The acceptance gate has been failing on every run (including main) for this reason. ## badges Adds badges for the two #205 workflows to README.md's CI status block: - `acceptance-205.yml` — AC#1 (teensyLC) and AC#4 (stm32 SPI) gates - `bench-205.yml` — P-02 (cold) / P-03 (scanner) / P-01-mini (warm) perf gates Both have been live since #211 / #210 but were not discoverable from the README. Refs: #205. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…nsylc env, add CI badges (#222) Three final polish items before closing #205. ## test — `r04_pass2_reconciliation_catches_cpp_only_dependency` The canonical "why 2-pass beats single-pass BFS" scenario, which the existing 16-test suite was missing as an explicit guard: - Project includes `<SPI.h>`. `SPI.h` is silent (no transitive includes). - `SPI.cpp` is the *only* place that includes `<Wire.h>`. A single-pass BFS over headers selects {SPI} and silently misses Wire — link-time undefined symbols. The LDF's pass 2 re-seeds with each selected lib's full source set, so Wire is reached and selected. Test asserts {SPI, Wire} and is the regression guard against accidentally collapsing the resolver back to a single pass. Brings the resolver test count to 17 (10 LDF + 7 cache). ## fix — teensylc acceptance gate env name `tests/teensylc_acceptance.rs` passed `env_name: "teensyLC"` (camelCase) and looked up `compile_commands.json` under `<build>/teensyLC/`. The actual env in `tests/platform/teensylc/platformio.ini` is `[env:teensylc]` (lowercase) — same case-sensitivity bug fixed in #220 / #221 for `measure_baseline_205.py`. The acceptance gate has been failing on every run (including main) for this reason. ## badges Adds badges for the two #205 workflows to README.md's CI status block: - `acceptance-205.yml` — AC#1 (teensyLC) and AC#4 (stm32 SPI) gates - `bench-205.yml` — P-02 (cold) / P-03 (scanner) / P-01-mini (warm) perf gates Both have been live since #211 / #210 but were not discoverable from the README. Refs: #205. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
ci/measure_baseline_205.py's TARGETS list used `teensyLC` (camelCase), but the env key in `tests/platform/teensylc/platformio.ini` is `teensylc` (lowercase). fbuild's env lookup is case-sensitive — every prior run errored `config error: environment 'teensyLC' not found`. With the name corrected, all four targets build cleanly.Captured baseline (release, arm-none-eabi-size)
Quick AC read for #205
Caveat — script methodology
The "excluded library hits" scan counts every substring match in `compile_commands.json`, including `-I.../libraries/` flags propagated to every TU. That is why FNET/Snooze/RadioHead each show "68 entries" on teensylc — the count equals the TU count because the include path is on every TU, not because 68 FNET sources were compiled. Functional AC#1 ("FNET / Snooze / RadioHead / mbedtls not compiled") still requires inspecting the `file` fields, not the `arguments` fields. Tracked as a follow-up.
Test plan
Refs: #205 AC#1-#4.
🤖 Generated with Claude Code