Repository navigation
Session Handoff [board-templates]: Merge the 2.4 Promotion (#266), Then Clean Up and Sweep Worktrees #258
Copy link
Copy link
Open
Labels
handoffA link in the session handoff chain, one open issue per trackA link in the session handoff chain, one open issue per track
Description
Next steps, in priority order
- Merge the 2.4 promotion, #266, on the maintainer's go-ahead, through
merge-and-releasewith a merge commit, never--delete-branch. It met every Merge Gate item except that go-ahead at head9c2568d. Re-read the head and the gate first, since a Dependabot merge on either branch moves it. A release is a separate dispatch, asked for separately. Done when main carries 2.4 and Lint the C++ in Lambdas on the Generated Code After the Compile Test #256 closes on the merge. - Clean up after the merge. Remove the
promote/develop-to-mainbranch and its worktree, and the detacheddial-flashworktree, which holds a copy ofsecrets.yaml. The auto-mode classifier blocked a cleanup-shaped command here, so this may need the maintainer. - Run the hub's report-only worktree sweep, carried from round 1 and still not done:
uv run --no-project --script scripts/pr_review.py cleanup --sweep --repo ptr727/<repo> --checkout ~/repos/<repo>from a hub checkout, for the clones holding several worktrees (the MeshCore, ZephCore and Zephyr forks, ProjectTemplate, homeassistant-purpleair). Present what it lists. Nothing is deleted without--applyand the maintainer's go-ahead. The classifier denied it this round as destructive, so the maintainer runs it or allows it. - Optional, compile-lint the deployed device configs. The lint flags double math in top-level configs that CI never builds, such as
garage-gate-fan-controller.yaml. Run the VS Code task "ESPHome: Compile and Lint" on each when it is next touched. - Optional Dial bench checks, unchanged: an NFC tag read, and battery power hold, Power Off, and restart on battery, recorded in the template header, README and OPERATIONS.md "M5Stack Dial".
External blockers
- Step 1 needs the maintainer's explicit go-ahead to merge main.
- Steps 2 and 3 need the maintainer to run or allow cleanup-shaped commands.
- Step 5 needs an NFC tag and a battery for the Dial.
Internal dependencies
- Step 2 follows step 1, because the promotion branch is Promote M5Stack Boards, Reboot Timeouts, and the Compile Lint to Main #266's head until it merges.
State
- develop carries Disable the Reboot Timeouts on the Example Devices #261, Lint Compiler Warnings in Lambdas on the Generated Code #262, Block a Cancelled Compile Leg and Confine Inline Lint Matches to the Column #264, Keep Dot Directories Out of Lint Ownership and Update Two Operations Notes #265 and Map Any Unexpected Compile Lint Failure to Exit 2 #267. The primary checkout is on develop, level with origin. Re-derive with
git worktree listandgh pr list. - #266 is the open promotion. It replaces #263, closed, whose head was develop itself and so could not absorb the
uv.lockconflict with main. Promote M5Stack Boards, Reboot Timeouts, and the Compile Lint to Main #266's head is a branch off main with develop merged in, its tree identical to develop's. - Both M5Stack boards were reflashed over USB from develop, the Dial on USB-B and the CoreS3 on USB-A. A 17-minute console soak showed no reboot on either. Both boards are free.
- No release was dispatched.
The parked decision queue
0 open decision issues in this repository at close.
What the last round did
- Landed #261: the example devices set
api_reboot_timeoutandwifi_reboot_timeoutto0s, and CI fails one that leaves either out. The Dial's periodic reboot was the API timeout, confirmed from its console. - Landed #262, closing Lint the C++ in Lambdas on the Generated Code After the Compile Test #256 at the promotion:
tools/compile-lint, a syntax-only recheck of each build's generatedmain.cppwith-Wdouble-promotionthat attributes diagnostics to YAML lambda lines,args:entries and component files. It runs in every CI compile leg and as the VS Code task "ESPHome: Compile and Lint". The double-promotion sites it found are fixed withfsuffixes and explicitstatic_cast<double>()on float printf andargs:arguments, the maintainer's choice. - Landed #264, #265 and #267 for the promotion review's findings: a cancelled compile leg fails the required check, inline matches are confined to the diagnostic's column, a dot directory is not owned code, and any unexpected lint failure exits 2 with its traceback. OPERATIONS.md gained a camera bench-network note and a corrected lint-container note.
What not to repeat
- A finding that
id()rewrites must skip C++ string literals is false. ESPHome'sLambda.partsrunsre.split(LAMBDA_PROG, comment_remover(value))over the whole lambda, strings included. Declined twice, on Promote M5Stack Boards, Reboot Timeouts, and the Compile Lint to Main #263 and Promote M5Stack Boards, Reboot Timeouts, and the Compile Lint to Main #266. - A finding that an
on_bootRTC sync touches LVGL widgets before they exist is false, again. In the Dial'smain.cpp, every widget is created beforeApp.setup()runs any boot trigger. - The hub tags have no
v, so a# vX.Y.Zversion-comment finding on a hub pin is false. - A cached local build hides warnings. The first CI run found warnings that the cached builds had not shown, because they predated the YAML. Lint a fresh compile before claiming the tree is clean.
- A promotion whose head is develop cannot absorb a conflict with main. Resolve on a branch off main per the branching skill's promotion procedure, and replace the promotion PR.
pgrep -f '<pattern>'inside a watcher matches the watcher's own command line, so a bounded watcher ran its whole bound. Watch a PID instead.- Pushes touching a workflow file need SSH. The HTTPS token lacks
workflowscope.
New learnings
- In the agent shell
grepis a ugrep wrapper, so a regex a workflow runs is tested with/usr/bin/grep. Recorded in the host notes. - The compile lint's mechanics, what it sets aside and how to fix each finding are in OPERATIONS.md "Compile Lint".
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
handoffA link in the session handoff chain, one open issue per trackA link in the session handoff chain, one open issue per track
Activity
ptr727 commentedon Oct 25, 2026
Closing answers from the maintainer, recorded after this round was written:
pr_review.py waitearly exit on the hub: filed as ProjectTemplate#3451.esp32_camera_web_servershutdown assert here for a later upstream report or pull request: filed as #259./tmpvolume went into the maintainer's host notes.pr_review.py cleanup --sweep --repo <owner>/<repo> --checkout <base-clone>, across the maintainer's repositories, and present what it lists for approval. Nothing is deleted without the maintainer's go-ahead (--apply). Most of the space sits in Zephyr and ZephCore worktrees.Parked decision queue at close: 0 open
decisionissues.ptr727 commentedon Oct 25, 2026
Round 1, closed 2026-10-25: Session Handoff [board-templates]: Add M5Stack Dial Templates, Then Lint Lambdas (#256)
Next steps, in priority order
test/, following the CoreS3 pattern from #257: display, touch and board plumbing in the template, drawing in the example, every built-in part covered and exercised on screen, a reusable add-on as its own overlay. Done when CI compiles it, the bench unit runs it, and the README and OPERATIONS.md entries name what was confirmed on hardware.main.cpp, as its own change after the Dial. The CoreS3 and Dial example devices are its real corpus. Done per the issue's own "Done When".External blockers
Internal dependencies
State
git worktree listandgh pr list.0s. No battery is fitted. Its efuse leaves the flash voltage to GPIO45.usbdevdocumentation gap.The parked decision queue
0 open
decisionissues in this repository at close.What the last round did
templates/m5stack-cores3.yaml,templates/m5stack-cores3-camera.yaml,test/m5stack-cores3.yaml, a README entry, an OPERATIONS.md section, version 2.4. Every Merge Gate item was met before merge.What not to repeat
Camera Enableoff over the API first, and flash only if that call succeeded. Chaining the flash after a failed call cost a power cycle./tmpor the scratchpad filled the small/tmpvolume on the dev box and broke every command until cleared. Keep caches under~/.cache.rst:line.pr_review.py waiton a fresh push can return at once withchecks=5/5before the queued jobs register. Watch the workflow run itself.New learnings
usbdevstale-buffer behavior is in HomeAutomation-Config #1375.[-]Session Handoff [board-templates]: Add M5Stack Dial Templates, Then Lint Lambdas (#256)[/-][+]Session Handoff [board-templates]: Lint Lambdas (#256), Then Promote Both M5Stack Boards[/+]ptr727 commentedon Oct 25, 2026
Round 2, closed 2026-10-25: Session Handoff [board-templates]: Lint Lambdas (#256), Then Promote Both M5Stack Boards
Next steps, in priority order
main.cpp, as its own change. The CoreS3 and Dial example devices are its real corpus. Done per the issue's own "Done When".version.jsonagain for the Dial.pr_review.py cleanup --sweep --repo <owner>/<repo> --checkout <base-clone>across the maintainer's repositories, then present what it lists for approval. Nothing is deleted without the maintainer's go-ahead (--apply).External blockers
Internal dependencies
State
git worktree listandgh pr list.The parked decision queue
0 open
decisionissues in this repository at close.What the last round did
templates/m5stack-dial.yaml,test/m5stack-dial.yaml, a README entry, a release note under 2.4, an OPERATIONS.md section, andRFIDincspell.json.What not to repeat
bm8563.read_timesets it, sotime.has_time: sntp_timeholds after an RTC read.on_bootor lighton_statetouches LVGL widgets before they exist is false. The generatedsetup()runslv_init()and creates every widget beforeApp.setup()runs any component or boot trigger.timeoutarounddocker runleaves the container running. Pass--initand put thetimeoutinside the container command.pr_review.py waiton an attested head returns in seconds while the checks still run. Wait ongh pr checksinstead. The related early exit is already filed as ProjectTemplate#3451.New learnings
ft5x06absent from the I2C scan, the buzzer on its own LEDC timer) are recorded in OPERATIONS.md "M5Stack Dial".[-]Session Handoff [board-templates]: Lint Lambdas (#256), Then Promote Both M5Stack Boards[/-][+]Session Handoff [board-templates]: Merge the 2.4 Promotion (#266), Then Clean Up and Sweep Worktrees[/+]ptr727 commentedon Oct 25, 2026
Closing answers from the maintainer, recorded after round 3 was written:
6f058ae, which closed Lint the C++ in Lambdas on the Generated Code After the Compile Test #256. Release2.4.10was published from that commit by publish-release run 40220650506 (success). Next step 1 is done.promote/develop-to-mainbranch, local and remote.pr_review.py cleanuphandles only branches merged into develop.cleanup --sweep, which the auto-mode classifier blocks for the agent.Parked decision queue at close: 0 open
decisionissues.