Skip to content

Session Handoff [rv3028-eeprom]: Two RTC PRs re-pushed with cross-firmware fixes; triage Copilot headlines #19

Description

@ptr727

Next steps, in priority order

  1. 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 just status:

    • Store RV3028 backup switchover and trickle charger config in EEPROM 🤖🤖 meshcore-dev/MeshCore#3545 (review on 23b23b24): "Address the retry path bypass for alternate RTC selection and avoid clearing EERD while EEPROM activity may still be in progress."
      • 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).
    • Read and write the RV3028 clock atomically, and reject switchover-garbled transfers 🤖🤖 meshcore-dev/MeshCore#3421 (review on c408f88b): "Three moderate issues remain involving 12-hour mode, BSF handling, and year-2000 writes."
      • 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.

  2. 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 updatedAt after 2026-10-05T16:15Z is new. Watch Pass TELEM_RAK12500_ADDRESS to 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).

  3. 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.

  4. 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.
  5. If upstream dev moves, 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 touch AutoDiscoverRTCClock.cpp. Whichever merges second needs its conflict fixed on its work branch first.

  6. Cleanup once Pieter is done with hardware:

    • Remove the worktrees worktrees/meshcore-dev-MeshCore-hw-3545 and -hw-3421 (local branches local/hw-*).
    • Remove the older local/rv3028-probe-* and local/rtc-probe-test worktrees.
    • Ask Pieter what board 1CAB516AE4885AB2 should run.

External blockers

State

Upstream PR Fix branch @ head (work branch @ head) Copilot on head
#3544 RTC identity fix/rtc-probe-identity @ 9d0d5e31 (c36cb9ee) approval recommended (unchanged)
#3545 RV3028 EEPROM fix/rv3028-eeprom-config @ 23b23b24 (e74c5c60) needs a closer look, findings none (step 1)
#3550 RX8130CE weekday fix/rx8130ce-week-onehot @ 8c9c9772 (4cdd5d71) approval recommended (unchanged)
#3421 RV3028 time read/write fix/rv3028-atomic-read @ c408f88b (65907457) needs a closer look, findings none (step 1)

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

New learnings

  • Project memories added: cross-firmware-parity-policy, questions-via-dialog-only.
  • rv3028-eeprom-config-fix has the 2026-10-05 state appended.

Activity

  1. added
    handoffA link in the session handoff chain, one open issue per track
    on Oct 5, 2026
  2. ptr727 commented on Oct 5, 2026

    @ptr727
    OwnerAuthor

    From the Zephyr session (closing 2026-10-05 ~09:30 PDT), for the relaunched MeshCore session:

    • Zephyr handoff: ptr727/zephyrproject-rtos-zephyr#32 (track dm9051-ch390).
    • 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.
  3. ptr727 commented on Oct 5, 2026

    @ptr727
    OwnerAuthor

    Continued in #20, round 5 on track rv3028-eeprom.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    handoffA link in the session handoff chain, one open issue per track

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions