Skip to content

Disable the Reboot Timeouts on the Example Devices - #261

Merged
ptr727 merged 5 commits into
developfrom
feature/test-no-api-reboot
Oct 25, 2026
Merged

ptr727 merged 5 commits into
developfrom
feature/test-no-api-reboot

Conversation

@ptr727

@ptr727 ptr727 commented Oct 25, 2026 •

Copy link
Copy Markdown
Owner

An example device flashed to a bench unit is never adopted by Home Assistant, so the API's default 15 minute reboot_timeout restarted it every 15 minutes. That was the M5Stack Dial's periodic reboot on the bench, confirmed from its console: No clients; rebooting, then Reset Reason: Reboot request from api on the next boot.

  • Every test/ example device sets api_reboot_timeout and wifi_reboot_timeout to 0s in its substitutions:.
  • The change-detection job fails an example device that leaves either one out, so a new one cannot regress.
  • OPERATIONS.md states the rule once under "Compiling the Way CI Does", and the Heltec section points at it.

Accepted Trade-Off

With every example device overriding both timeouts, no CI compile exercises the templates' 15min defaults (api.yaml, wifi.yaml, and the Konnected, CeilSense and Apollo templates). The maintainer accepted this: the defaults are plain duration literals, the deployed device configs compile them at every install, and a broken one fails a consumer's compile loudly.

The CI-parity linters (editorconfig-checker, actionlint, markdownlint, cspell, shellcheck, shfmt) and the prose gate pass locally.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Configuration
    • Example-device configurations now disable API and Wi-Fi reboot timeouts, allowing flashed devices to run on a bench without Home Assistant.
  • Documentation
    • Updated setup guidance explains the reboot-timeout requirements. It also notes that devices without Home Assistant may restart during cold GNSS acquisition.

An example device flashed to a bench unit is never adopted by Home
Assistant, so the API's default 15 minute reboot_timeout restarted it every
15 minutes. Each example device now sets api_reboot_timeout and
wifi_reboot_timeout to 0s, and the change-detection job fails one that does
not, so a new example device cannot regress.
@ptr727 ptr727 added the comments Permits the comment lines the pull request adds or edits, which the prose gate otherwise refuses label Oct 25, 2026
Copilot AI lite review requested due to automatic review settings October 25, 2026 15:30
@ptr727

ptr727 commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

A recorded local strict-review pass covers head af2456f53fc08faa655ba0e14eff2aadbc30a81d, the content this pull request carries at that commit against develop, and it recorded 1 finding.

@coderabbitai

coderabbitai Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 49 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 174b05f5-3ab6-413c-82c8-536cfd085e0d
Commits

Reviewing files that changed from the base of the PR and between af2456f and 2b66e8f.

Files selected for processing: 1
  • .github/workflows/test-pull-request.yml

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: b39c7b65-dba0-4f4e-b5e3-f10a27e623d0
Commits

Reviewing files that changed from the base of the PR and between aef38b0 and af2456f.

Files selected for processing: 28
  • .github/workflows/test-pull-request.yml
  • HISTORY.md
  • OPERATIONS.md
  • README.md
  • test/adafruit-esp32-s3-feather.yaml
  • test/aoycocr-x5p.yaml
  • test/apollo-plt-1b.yaml
  • test/easystart.yaml
  • test/efun-sh331.yaml
  • test/elecrow-thinknode-m7.yaml
  • test/esp32-s3-devkitc.yaml
  • test/esp32-s3-wroom-1-n16r8.yaml
  • test/esp32-s3-wroom-2-n16r8v.yaml
  • test/esp32-s3-wroom-2-n32r8v.yaml
  • test/gls10-bluetooth-proxy.yaml
  • test/heltec-wifi-lora32-v4-r8.yaml
  • test/kincony-kc868-asr.yaml
  • test/konnected-blaq.yaml
  • test/m5stack-cores3.yaml
  • test/m5stack-dial.yaml
  • test/norvi-enet-ae06-r.yaml
  • test/rocket-astra.yaml
  • test/smarthome-ceilsense.yaml
  • test/sonoff-s31.yaml
  • test/sonoff-th10.yaml
  • test/unexpectedmaker-pros3d.yaml
  • test/waveshare-esp32-s3-eth.yaml
  • test/wemos-lolin32-lite.yaml

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Walkthrough

Example-device test configurations now set API and Wi-Fi reboot timeouts to 0s. The pull-request workflow checks for both settings and reports any configurations that lack them. Operations guidance and Version 2.4 release notes describe the requirement and bench-use context.

Changes: Example-device timeout settings

Layer / File(s) Summary
Document and enforce timeout requirements
.github/workflows/test-pull-request.yml, OPERATIONS.md
Operations guidance specifies both timeout substitutions. The pull-request workflow checks each test/*.yaml file and fails if either setting is missing or not 0s. The Heltec bench note refers readers to the shared guidance.
Set timeout values in example configurations
test/*.yaml, README.md, HISTORY.md
The example-device test configurations set both timeouts to 0s. Version 2.4 release notes describe the settings and their bench-use context.

Priority: Normal

Estimated code review effort: 2 (Simple) | ~12 minutes

Change: Bug fix

Possibly related PRs

  • ptr727/ESPHome-Config#260: Added the M5Stack Dial example configuration, which this PR updates with zero-second API and Wi-Fi reboot timeouts.
Merge Risk: Minimal · up to af245

The example-device timeout changes are consistently configured and enforced by CI, with no actionable merge risk identified.

Pre-merge checks: Passed 5
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title "Disable the Reboot Timeouts on the Example Devices" matches the main change. The changeset sets api_reboot_timeout and wifi_reboot_timeout to 0s in the test/ example-device configurations, …
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Title check

Explanation

The title "Disable the Reboot Timeouts on the Example Devices" matches the main change. The changeset sets api_reboot_timeout and wifi_reboot_timeout to 0s in the test/ example-device configurations, adds a CI check that enforces both settings, and documents the rule in OPERATIONS.md, HISTORY.md, and README.md. The title is short, specific, and free of file lists or vague terms.

Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (28 skipped: 28 unsupported.)

Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

@codecov

codecov Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 43.07%. Comparing base (aef38b0) to head (2b66e8f).

Additional details and impacted files
@@           Coverage Diff            @@
##           develop     #261   +/-   ##
========================================
  Coverage    43.07%   43.07%           
========================================
  Files            1        1           
  Lines          130      130           
========================================
  Hits            56       56           
  Misses          74       74           
Flag Coverage Δ
python-3.13 43.07% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The CI guard must accept semantically valid single-quoted zero-duration substitutions.

No open issues 🎉

What changed in this PR

This pull request prevents example devices flashed without Home Assistant or network connectivity from rebooting every 15 minutes.

Changes:

  • Sets api_reboot_timeout and wifi_reboot_timeout to 0s in all 24 example device configurations.
  • Adds CI enforcement for both timeout overrides.
  • Documents the behavior in README.md, OPERATIONS.md, and HISTORY.md.
File Description
test/​wemos-lolin32-lite.yaml Disables both reboot timeouts.
test/​waveshare-esp32-s3-eth.yaml Disables both reboot timeouts.
test/​unexpectedmaker-pros3d.yaml Disables both reboot timeouts.
test/​sonoff-th10.yaml Disables both reboot timeouts.
test/​sonoff-s31.yaml Disables both reboot timeouts.
test/​smarthome-ceilsense.yaml Disables both reboot timeouts.
test/​rocket-astra.yaml Disables both reboot timeouts.
test/​norvi-enet-ae06-r.yaml Disables both reboot timeouts.
test/​m5stack-dial.yaml Prevents periodic bench reboots.
test/​m5stack-cores3.yaml Disables both reboot timeouts.
test/​konnected-blaq.yaml Disables both reboot timeouts.
test/​kincony-kc868-asr.yaml Disables both reboot timeouts.
test/​heltec-wifi-lora32-v4-r8.yaml Disables both reboot timeouts.
test/​gls10-bluetooth-proxy.yaml Disables both reboot timeouts.
test/​esp32-s3-wroom-2-n32r8v.yaml Disables both reboot timeouts.
test/​esp32-s3-wroom-2-n16r8v.yaml Disables both reboot timeouts.
test/​esp32-s3-wroom-1-n16r8.yaml Disables both reboot timeouts.
test/​esp32-s3-devkitc.yaml Disables both reboot timeouts.
test/​elecrow-thinknode-m7.yaml Disables both reboot timeouts.
test/​efun-sh331.yaml Disables both reboot timeouts.
test/​easystart.yaml Disables both reboot timeouts.
test/​apollo-plt-1b.yaml Disables both reboot timeouts.
test/​aoycocr-x5p.yaml Disables both reboot timeouts.
test/​adafruit-esp32-s3-feather.yaml Disables both reboot timeouts.
README.md Records the bench-device timeout behavior.
OPERATIONS.md Documents the timeout rule and related guidance.
HISTORY.md Records the change in release history.
.github/​workflows/​test-pull-request.yml Enforces both overrides; the matcher currently rejects valid single-quoted 0s values.

Review effort: Lite

@ptr727

ptr727 commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

A recorded local strict-review pass covers head 2b66e8f139ed5244e49e8162247aae8513571b5d, the content this pull request carries at that commit against develop, and it recorded 1 finding.

@ptr727

ptr727 commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

Answering the review headline "The CI guard must accept semantically valid single-quoted zero-duration substitutions": fixed in 2b66e8f. The guard patterns now hold a real single quote, ["']?0s["']?. Run verbatim under GNU grep, the workflow's own line passes 0s, "0s", '0s' and a trailing comment, and still rejects 20s and x0s7.

@ptr727
ptr727 merged commit 0db406e into develop Oct 25, 2026
37 checks passed
@ptr727
ptr727 deleted the feature/test-no-api-reboot branch October 25, 2026 15:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comments Permits the comment lines the pull request adds or edits, which the prose gate otherwise refuses

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants