Repository navigation
Session Handoff [rv3028-eeprom]: meshcore-dev/MeshCore#3421 description now tracks liquidraver/ZephCore#106; boot-recovery facts sent to Zephyr #24
Copy link
Copy link
Closed
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
- Sweep every upstream PR and issue authored by ptr727 (the commands are in link Session Handoff [rv3028-eeprom]: All upstream PRs answered; watch for maintainer review #18, step 1). Anything with
updatedAtafter 2026-10-08T14:34Z is new; the 14:33Z update on Read and write the RV3028 clock atomically, and reject switchover-garbled transfers 🤖🤖 meshcore-dev/MeshCore#3421 is our own description edit. Done means each maintainer comment is answered, or put to Pieter as a dialog. - #3421 is converged at
0f038054, and the RV3028 position stays FROZEN. Change code only if a maintainer requires it or a test fails, and park every other finding for Pieter. Any code change re-runs the full acceptance matrix A-H on the exact commit before it is pushed. After that, ask Pieter in a dialog to re-request Copilot in the web UI, with the URL. - When Read and write the RV3028 clock atomically, and reject switchover-garbled transfers 🤖🤖 meshcore-dev/MeshCore#3421 or #3545 merges, rebase the other. They conflict in
AutoDiscoverRTCClock::begin(), though each merges cleanly ontodev.- Store RV3028 backup switchover and trickle charger config in EEPROM 🤖🤖 meshcore-dev/MeshCore#3545 still calls
rtc_rv3028.set24HourMode()inbegin(). That's Melopero's unchecked read-modify-write: a failed read writes FDh back to Control 2, RESET bit included. Read and write the RV3028 clock atomically, and reject switchover-garbled transfers 🤖🤖 meshcore-dev/MeshCore#3421 removed it on purpose, so the rebase must keep it removed. - If the rebase lands on Read and write the RV3028 clock atomically, and reject switchover-garbled transfers 🤖🤖 meshcore-dev/MeshCore#3421, re-run the matrix under step 2's rule.
- Store RV3028 backup switchover and trickle charger config in EEPROM 🤖🤖 meshcore-dev/MeshCore#3545 still calls
- The cross-project paragraphs are no longer shared word for word. Since ZephCore diverged on 2026-10-07, each project words its own paragraphs. Keep Read and write the RV3028 clock atomically, and reject switchover-garbled transfers 🤖🤖 meshcore-dev/MeshCore#3421's description of the other two projects accurate. Edit it only with Pieter's go, using fully qualified
owner/repo#Nreferences, and tell the peer session afterwards. - Parked for Pieter, not code:
- RTClib's DS3231
now()ignores the 12-hour flag. Revisit after the RTC PRs land. - The two MeshCore bugs from link Session Handoff [rv3028-eeprom]: Two RTC PRs re-pushed with cross-firmware fixes; triage Copilot headlines #19, step 4, stay ON HOLD until the RTC PRs land.
- New this round: in every MeshCore version, an RV3028 that doesn't ACK at boot is never probed again until a reboot. This came up while answering the Zephyr session; see step 6. No change under the freeze.
- RTClib's DS3231
- Cross-project boot-recovery rule (Pieter deciding). The Zephyr session is documenting Zephyr's init-failure behaviour (
-ENODEVuntil reboot) in a draft issue on Pieter's Zephyr fork, issue 36. Pieter is weighing a "self-healing" rule for all three projects: config failures stay pending, and no time is taken or written until Control 2 reads back 24-hour with RESET=0. MeshCore's facts have been sent (see What the last round did). MeshCore acts only if Pieter adopts a rule that needs it. - Cleanup stays deferred ("Watch only"). Keep the hardware builds and worktrees until a PR merges or is declined.
External blockers
- MeshCore maintainers: review of Read and write the RV3028 clock atomically, and reject switchover-garbled transfers 🤖🤖 meshcore-dev/MeshCore#3421, Adopt an RTC only if its time registers read like that chip 🤖🤖 meshcore-dev/MeshCore#3544, Store RV3028 backup switchover and trickle charger config in EEPROM 🤖🤖 meshcore-dev/MeshCore#3545, Write and read the RX8130CE WEEK register as one-hot 🤖🤖 meshcore-dev/MeshCore#3550, Reject a negative
sensor liststart index 🤖🤖 meshcore-dev/MeshCore#3433 and PassTELEM_RAK12500_ADDRESSto the RAK12500 I2C probe 🤖🤖 meshcore-dev/MeshCore#3434, plus Do not feed an invalid GPS time into the RTC 🤖🤖 meshcore-dev/MeshCore#3422, Make GPS status reporting say what was actually checked 🤖🤖 meshcore-dev/MeshCore#3423 and Treat the GPS enable pin as a pin number, not a truth value 🤖🤖 meshcore-dev/MeshCore#3425 (draft). Nothing is owed from our side. - Copilot re-request: after any upstream push it still needs Pieter in the web UI. Ask in a dialog, with the PR URL and the "Reviewers" sidebar location.
- Pieter: whether there will be a cross-project boot-recovery rule (step 6).
- Counterparts: drivers: rtc: rv3028: reject time accesses cut short by a switchover zephyrproject-rtos/zephyr#121389 and drivers: rv3028: disable backup switchover during EEPROM access zephyrproject-rtos/zephyr#121252 wait on Zephyr reviewers. Each peer session owns its own.
Internal dependencies
- Step 3 waits on an upstream merge. The parked items in step 5 wait on the RTC PRs landing.
- A Read and write the RV3028 clock atomically, and reject switchover-garbled transfers 🤖🤖 meshcore-dev/MeshCore#3421 code change (step 2, or step 6 if Pieter adopts a rule) must finish its matrix run before step 3's rebase, so that only one matrix runs per pushed commit.
State
Re-derive all of this; it was true at 2026-10-08T15:00Z.
| Upstream PR | Fix branch @ head (work branch @ head) | Copilot on head |
|---|---|---|
| #3421 RV3028 time read/write | fix/rv3028-atomic-read @ 0f038054 (8ba3aaca) |
no findings |
| #3544 RTC identity | fix/rtc-probe-identity @ 9d0d5e31 |
approval recommended |
| #3545 RV3028 EEPROM | fix/rv3028-eeprom-config @ 23b23b24 |
answered |
| #3550 RX8130CE weekday | fix/rx8130ce-week-onehot @ 8c9c9772 |
approval recommended |
#3433 sensor list |
fix/sensor-list-paging @ bbacf47a |
answered |
| #3434 RAK12500 address | fix/rak12500-i2c-address @ 85f016be |
answered |
- Upstream
devis at2dbd463e. ItsAutoDiscoverRTCClock.cppis unchanged since3e3150c8, and all six fix branches still merge onto it cleanly. - Read and write the RV3028 clock atomically, and reject switchover-garbled transfers 🤖🤖 meshcore-dev/MeshCore#3421 description:
- Its cross-project paragraph links rtc: write the RTC time only for years 2000-2099 liquidraver/ZephCore#105 (which replaces rtc: write the RV3028 time with an A0h year mark, and only 2000-2099 liquidraver/ZephCore#103) and says that Zephyr and MeshCore share A0h, while ZephCore keeps its split write.
- Its 12-hour paragraph was edited this round to describe rtc: clear the RV3028 12-hour bit at boot liquidraver/ZephCore#106 at
db69172; the ZephCore session confirmed it. - The commit message's "all three adopted" line is stale. Pieter chose to leave it, since a force-push only for that isn't worth it.
- Counterparts:
- ZephCore: rtc: write the RTC time only for years 2000-2099 liquidraver/ZephCore#105 (
9b68b7e, split year write, 2000-2099) and rtc: clear the RV3028 12-hour bit at boot liquidraver/ZephCore#106 (db69172, 12-hour clear at boot; takes no time if the clear fails) are both MERGED. rtc: write the RV3028 time with an A0h year mark, and only 2000-2099 liquidraver/ZephCore#103 and rtc: select 24-hour mode before a time write, and take no time in 12-hour mode liquidraver/ZephCore#104 are closed. - Zephyr: drivers: rtc: rv3028: reject time accesses cut short by a switchover zephyrproject-rtos/zephyr#121389 is at
82e160257ccand drivers: rv3028: disable backup switchover during EEPROM access zephyrproject-rtos/zephyr#121252 at751beb04cba, both open.
- ZephCore: rtc: write the RTC time only for years 2000-2099 liquidraver/ZephCore#105 (
- Hardware: unchanged since link Session Handoff [rv3028-eeprom]: MeshCore #3421 converged at 0f038054 after an all-PASS acceptance matrix; RV3028 position frozen #23. The test board runs the acceptance build
local/hw-accept(src/ identical to0f038054). - Worktrees: same as link Session Handoff [rv3028-eeprom]: MeshCore #3421 converged at 0f038054 after an all-PASS acceptance matrix; RV3028 position frozen #23. The primary checkout is clean on
main.
The parked decision queue
0 parked: the fork has no open decision issue. This round's one decision (edit the meshcore-dev#3421 sentence) was asked as a dialog and answered.
What the last round did
- Edited the Read and write the RV3028 clock atomically, and reject switchover-garbled transfers 🤖🤖 meshcore-dev/MeshCore#3421 description (Pieter: "Edit sentence now"). The ZephCore sentence in the 12-hour paragraph now says rtc: clear the RV3028 12-hour bit at boot liquidraver/ZephCore#106 takes no time from the chip if Control 2 is unreadable or reads FFh, or if the clear or the re-read fails; the next sync then sets the clock. Description only: no code change, no push, head still
0f038054. Checked against rtc: clear the RV3028 12-hour bit at boot liquidraver/ZephCore#106's own description first, read back after posting, and confirmed by the ZephCore session. - Answered the Zephyr session's read-only boot-recovery question, using
devand Read and write the RV3028 clock atomically, and reject switchover-garbled transfers 🤖🤖 meshcore-dev/MeshCore#3421, Store RV3028 backup switchover and trickle charger config in EEPROM 🤖🤖 meshcore-dev/MeshCore#3545 and Adopt an RTC only if its time registers read like that chip 🤖🤖 meshcore-dev/MeshCore#3544:- MeshCore adopts the chip on an address ACK alone. A chip with no ACK is never re-probed that boot.
- Read and write the RV3028 clock atomically, and reject switchover-garbled transfers 🤖🤖 meshcore-dev/MeshCore#3421 confirms 24-hour mode and BSF on every read and write, retries reads on every call, and retries an unconfirmed write every 5 s, at most 13 attempts per set.
- Store RV3028 backup switchover and trickle charger config in EEPROM 🤖🤖 meshcore-dev/MeshCore#3545 retries the switchover config 3 times, 10 minutes apart.
dev's uncheckedset24HourMode()can write FDh to Control 2.- The Zephyr session confirmed this is enough.
- No upstream activity from maintainers since link Session Handoff [rv3028-eeprom]: MeshCore #3421 converged at 0f038054 after an all-PASS acceptance matrix; RV3028 position frozen #23.
What not to repeat
- Checking a posted description by
cmpagainst the--jq .bodyfile always reports one extra trailing newline on the round trip. Compare withdiff, or strip trailing whitespace, before calling it a mismatch.
New learnings
- None that aren't already recorded. The boot-recovery comparison lives in the Zephyr session's draft issue and in step 6 above.
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 10, 2026
Continued in #29, round 10 on track
rv3028-eeprom.