You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Session Handoff [rv3028-eeprom]: Two RTC PRs re-pushed with cross-firmware fixes; triage Copilot headlines #19
Retry bypass: this is likely the known case. When a DS3231 is also present, getCurrentTime() returns before the RV3028 retry block, so only the begin() attempt runs. The RV3028 is not the clock then, so there is likely no harm. Verify, then answer.
EERD: clearing EERD while EEbusy may be set is the documented judgement in the body's fix step 7, and it was agreed across MeshCore, ZephCore and Zephyr. Answer by citing that. Don't change it without re-agreeing with the other two (the parity rule).
12-hour mode:begin() forces 24-hour mode. Reads mask hours with 0x3F, and the write path skips Melopero's 12h wrapper.
Year-2000 writes: the year-zero-first write order is deliberate and agreed by all three firmwares. It is documented in the body.
BSF handling: unclear; re-read the code to find what it means.
Reply as one PR comment per PR, or per finding, per the upstream-contribution-workflow skill. A fix goes to the work branch first, then local-strict-review, a re-squash, and a --force-with-lease push. After any upstream push, ask Pieter to re-request Copilot in the web UI.
Keep MeshCore, ZephCore and Zephyr in sync. This is Pieter's standing rule; see project memory cross-firmware-parity-policy. Any review finding or fix that touches shared RV3028 behaviour goes to the peer sessions before it changes. ZephCore's session handoff is ptr727/liquidraver-ZephCore#46. The Zephyr session's state is in its own repo.
Two new MeshCore bugs, ON HOLD at Pieter's decision until the RTC work lands. After that: draft both, agree a shared position with the ZephCore and Zephyr agents, show Pieter, then file upstream. Don't start before.
CLI reply overrun. After the xx| prefix strip, the reply has 158 bytes. CommonCLI.cpp still bounds at 160: the set unknown-key echo 160-17, region exportTo and exportNamesTo, and gps diag. An authenticated admin can write 1-3 bytes past temp[166], remotely or over serial. ZephCore's counterpart is ad23dcb.
ClientACL.out_path_len is not checked on load (ClientACL.cpp:36), and the companion DataStore.cpp:274 has the same gap. Corrupt flash then silently drops every reply to that client. ZephCore's counterpart is fcfee67.
Copilot re-review upstream needs Pieter to re-request it in the web UI after any push.
Zephyr: the BSF guard and year-zero-first write order (local 67fda87) wait for Pieter's go-ahead in that session. zephyrproject-rtos/zephyr#121252 is waiting on maintainer approval of its CI workflows.
Reviewed and tested: four local strict-review rounds per branch, all recorded. Hardware-tested on 1CAB: the store from delivery EEPROM, the unset path, a time set and read-back, and a 60 s power cut that kept the time.
Pushed, with Pieter's approval of the drafts: the work branches fast-forward, the fix branches with an explicit lease. Both bodies rewritten. All 14 linked commits checked as resolving.
Cross-checked six ZephCore fixes against MeshCore. Two are real MeshCore bugs (step 4). Also flagged to ZephCore that its T1000-E RESETB change goes against Seeed's driver and MeshCore T1000e revert gps resetb meshcore-dev/MeshCore#751.
Swept for side effects inside log macros, a class ZephCore found: none in MeshCore.
What not to repeat
Never ask Pieter a question in prose. Use the AskUserQuestion dialog, with options and a justified recommendation (project memory questions-via-dialog-only).
pr_review.py status prints review_on_head=yes in lower case. A wait that greps YES never ends.
Don't mirror a fix to one firmware without checking the other two. The zero-year write and the month-00 marker both turned out wrong for a platform only after a peer looked.
Parity notes for the Copilot points on #3421: Zephyr forces 24-hour mode at init (CONTROL2 = 0) and decodes only the 24-hour hour mask, so a 12-hour-mode concern there would be MeshCore-specific unless MeshCore also forces 24-hour mode. The BSF bracket and the year-zero-first writes are the agreed rules; if your triage finds a real defect in either, message the Zephyr session first, because the Zephyr guard (fork draft PR ptr727/zephyrproject-rtos-zephyr#31, not upstream) implements the same.
Board 1CAB...: a Zephyr image stores 35h FD=111 (47) once at boot; Pieter accepted that as the shared outcome.
Next steps, in priority order
Triage Copilot's 2026-10-05 rounds on Store RV3028 backup switchover and trickle charger config in EEPROM 🤖🤖 meshcore-dev/MeshCore#3545 and Read and write the RV3028 clock atomically, and reject switchover-garbled transfers 🤖🤖 meshcore-dev/MeshCore#3421. Done when each headline point is judged against the code and has a reply drafted and cleared with Pieter, or a fix on the work branch. Both rounds say "Needs a closer look" with Findings: None. Every point is in the overview headline only, with no thread (trap 2 in project memory
pr-review-loop-tooling), so read each review body, not juststatus:23b23b24): "Address the retry path bypass for alternate RTC selection and avoid clearing EERD while EEPROM activity may still be in progress."getCurrentTime()returns before the RV3028 retry block, so only thebegin()attempt runs. The RV3028 is not the clock then, so there is likely no harm. Verify, then answer.c408f88b): "Three moderate issues remain involving 12-hour mode, BSF handling, and year-2000 writes."begin()forces 24-hour mode. Reads mask hours with 0x3F, and the write path skips Melopero's 12h wrapper.Reply as one PR comment per PR, or per finding, per the
upstream-contribution-workflowskill. A fix goes to the work branch first, thenlocal-strict-review, a re-squash, and a--force-with-leasepush. After any upstream push, ask Pieter to re-request Copilot in the web UI.Sweep every upstream PR and issue authored by ptr727, not just this track's. 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-05T16:15Z is new. Watch PassTELEM_RAK12500_ADDRESSto the RAK12500 I2C probe 🤖🤖 meshcore-dev/MeshCore#3434 for a maintainer verdict (link Session Handoff [rv3028-eeprom]: All upstream PRs answered; watch for maintainer review #18, step 2).Keep MeshCore, ZephCore and Zephyr in sync. This is Pieter's standing rule; see project memory
cross-firmware-parity-policy. Any review finding or fix that touches shared RV3028 behaviour goes to the peer sessions before it changes. ZephCore's session handoff is ptr727/liquidraver-ZephCore#46. The Zephyr session's state is in its own repo.Two new MeshCore bugs, ON HOLD at Pieter's decision until the RTC work lands. After that: draft both, agree a shared position with the ZephCore and Zephyr agents, show Pieter, then file upstream. Don't start before.
xx|prefix strip, the reply has 158 bytes.CommonCLI.cppstill bounds at 160: thesetunknown-key echo160-17, regionexportToandexportNamesTo, andgps diag. An authenticated admin can write 1-3 bytes pasttemp[166], remotely or over serial. ZephCore's counterpart is ad23dcb.out_path_lenis not checked on load (ClientACL.cpp:36), and the companionDataStore.cpp:274has the same gap. Corrupt flash then silently drops every reply to that client. ZephCore's counterpart is fcfee67.If upstream
devmoves, or a PR merges or is declined: follow link Session Handoff [rv3028-eeprom]: Three MeshCore PRs upstream; watch and respond to review #17, steps 3 and 4. 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 and Read and write the RV3028 clock atomically, and reject switchover-garbled transfers 🤖🤖 meshcore-dev/MeshCore#3421 all touchAutoDiscoverRTCClock.cpp. Whichever merges second needs its conflict fixed on its work branch first.Cleanup once Pieter is done with hardware:
worktrees/meshcore-dev-MeshCore-hw-3545and-hw-3421(local brancheslocal/hw-*).local/rv3028-probe-*andlocal/rtc-probe-testworktrees.External blockers
sensor liststart index 🤖🤖 meshcore-dev/MeshCore#3433 and PassTELEM_RAK12500_ADDRESSto the RAK12500 I2C probe 🤖🤖 meshcore-dev/MeshCore#3434.67fda87) wait for Pieter's go-ahead in that session. zephyrproject-rtos/zephyr#121252 is waiting on maintainer approval of its CI workflows.State
fix/rtc-probe-identity@9d0d5e31(c36cb9ee)fix/rv3028-eeprom-config@23b23b24(e74c5c60)fix/rx8130ce-week-onehot@8c9c9772(4cdd5d71)fix/rv3028-atomic-read@c408f88b(65907457)Read and write the RV3028 clock atomically, and reject switchover-garbled transfers 🤖🤖 meshcore-dev/MeshCore#3421's new scope and title. It is now "Read and write the RV3028 clock atomically, and reject switchover-garbled transfers". Every RV3028 read and write is guarded by BSF. Writes zero the year first and write it last. Year 00 reads as not set.
Behaviour agreed across all three firmwares on 2026-10-05:
MeshCore briefly diverged on year 00, then withdrew: Pieter showed repeater time is cosmetic, citing https://swaits.com/does-repeater-time-matter-in-meshcore/.
Draft review page of the pushed bodies: https://claude.ai/artifact/TG68ZEDYNjbQwtNfSUdLWN
Upstream
devis still3e3150c8.Hardware. Board 1CAB516AE4885AB2 runs the Read and write the RV3028 clock atomically, and reject switchover-garbled transfers 🤖🤖 meshcore-dev/MeshCore#3421 test build (
65907457+ diag CLI), with its RTC set correctly and EEPROM 35h/37h at40/34. ZephCore owns 26B95495C1040CFD.ZephCore counterparts:
sensor list, #100;The parked decision queue
0 parked. Every decision from this round is answered: the EEbusy rule, the year-00 rule, the push, the bug filing hold and the ZephCore fixes.
What the last round did
What not to repeat
questions-via-dialog-only).pr_review.py statusprintsreview_on_head=yesin lower case. A wait that grepsYESnever ends.New learnings
cross-firmware-parity-policy,questions-via-dialog-only.rv3028-eeprom-config-fixhas the 2026-10-05 state appended.