Skip to content

feat(cli): fbuild bringup orchestrator scaffold (#697) - #711

Merged
zackees merged 1 commit into
mainfrom
feat/697-bringup-command
Jun 20, 2026
Merged

feat(cli): fbuild bringup orchestrator scaffold (#697)#711
zackees merged 1 commit into
mainfrom
feat/697-bringup-command

Conversation

@zackees

Copy link
Copy Markdown
Member

#697. Promotes the bring-up orchestrator to a first-class fbuild command so the end-to-end pipeline stops being split between fbuild (build + flash) and FastLED Python (autoresearch port-resolution + monitor + RPC) — the split is exactly what caused the FastLED/FastLED#3300 LPC845-BRK incident.

What ships

Tests — 8 passed

Default config + CLI override propagation, is_passing semantics, Display order, dry-run LPC845-BRK end-to-end shape (vcom + family + reset_method + idle_dtr_rts + handoff timing + RPC defaults all reach the report), env-without-vcom-override truthful reporting, non-dry-run stubbed but still informative.

Out of scope (follow-up PRs)

  • Real build phase (defer to existing fbuild build)
  • Real flash phase per BoardFamily
  • Real monitor phase (consume HandoffTiming.boot_drain_ms + open with idle_dtr_rts)
  • Real JSON-RPC send/receive
  • Per-board bringup.* keys in board JSON
  • FastLED's bash autoresearch migrated to thin wrapper

Closes#697.

#697. Promotes the bring-up orchestrator to a
first-class fbuild command so the end-to-end pipeline stops being
split between fbuild (build + flash) and FastLED Python
(autoresearch port-resolution + monitor + RPC) — the split is
exactly what caused the FastLED/FastLED#3300 LPC845-BRK incident.
- fbuild bringup <env> CLI subcommand: --rpc-method / --rpc-payload
/ --expect-result / --skip-build / --dry-run flags
- BringupConfig with default_echo_4242() (FastLED's classic
autoresearch baseline) and with_overrides() for CLI overlay
- 3-way BringupResult { remote_ok, log_ok, echo_ok, elapsed_ms,
details } tuple verbatim from FastLED's autoresearch so every
consumer already knows the shape. is_passing() = all-three
- Display walks the tuple left-to-right so the user sees where
the chain broke
- Orchestration skeleton consults the existing fbuild-serial
primitives end-to-end: vcom_for_env (#686), family_for_vid_pid
(#686), BoardFamily::idle_dtr_rts (#687),
BoardFamily::reset_method (#687),
BoardFamily::handoff_timing (#691)
- --dry-run surfaces the resolved family / vcom / DTR-RTS /
handoff timing / RPC config so CI can validate orchestration
shape end-to-end without attached hardware
8 unit tests covering: default config + CLI override propagation,
is_passing semantics, Display order, dry-run LPC845-BRK end-to-end
shape (vcom + family + reset_method + idle_dtr_rts + handoff
timing + RPC defaults all reach the report), env-without-vcom-
override truthful reporting, non-dry-run stubbed but still
informative.
Out of scope (follow-up PRs):
- Real build phase (today: defer to existing fbuild build)
- Real flash phase per BoardFamily (esp32_native / lpc pyocd /
rp2040 picotool / teensy halfkay / samd uf2 wires)
- Real monitor phase (consume HandoffTiming.boot_drain_ms +
open with idle_dtr_rts)
- Real JSON-RPC send/receive
- Per-board bringup.* keys in board JSON
- FastLED's bash autoresearch migrated to thin wrapper
Closes#697.
@coderabbitai

Copy link
Copy Markdown

Warning

Review limit reached

@zackees, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 30 minutes and 8 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits.

🚦 How do rate limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 15cbbf4b-c158-4abf-bebc-112a52fa7fe6

📥 Commits

Reviewing files that changed from the base of the PR and between b22a016 and d39c857.

📒 Files selected for processing (4)
  • crates/fbuild-cli/src/cli/args.rs
  • crates/fbuild-cli/src/cli/bringup.rs
  • crates/fbuild-cli/src/cli/dispatch.rs
  • crates/fbuild-cli/src/cli/mod.rs
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/697-bringup-command

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@zackees
zackees merged commit 302b01c into mainJun 20, 2026
85 of 91 checks passed
@zackees
zackees deleted the feat/697-bringup-command branch June 20, 2026 21:28
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Triage

Development

Successfully merging this pull request may close these issues.

fbuild-cli: promote bring-up orchestrator to first-class command

1 participant

@zackees