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]: MeshCore #3421 converged at 0f038054 after an all-PASS acceptance matrix; RV3028 position frozen #23
#3421 is converged at 0f038054. Copilot found nothing, all threads are resolved, and the acceptance matrix passes. The RV3028 position is FROZEN (see New learnings). 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. Then Pieter re-requests Copilot in the web UI, asked as a dialog with the URL.
Copilot re-request: after any upstream push it still needs Pieter in the web UI. Ask for it in a dialog, with the PR URL and the "Reviewers" sidebar location.
Acceptance matrix: ALL PASS in all three projects, each on its exact submitted code. MeshCore's run was on 0f038054, with G2 done by a real USB power cut.
Hardware: MeshCore's test board runs the acceptance build. That build is local branch local/hw-accept: 0f038054, plus the throwaway diagnostic CLI 933cae86, plus the harness test-local/rv3028_accept.py (a99d9ad6). Only the throwaway commits differ from 0f038054, and src/ is identical to it. Board state: correct time, test registers restored. A third RAK4631 attached to the host is not ours.
Freeze: agreed the freeze and the shared acceptance matrix, then ran it to ALL PASS.
What not to repeat
C3 (seconds 5Ah) can't be tested across a reboot. The chip counts an invalid seconds value on to a valid one within seconds, so write it on a fresh boot and read at once.
Bit-banged I2C on the RAK4631: a lambda-based version with 5 µs half-periods never got an ACK. Plain functions with about 20 µs half-periods work, and the bus timeout reproduced Zephyr's T18 result.
A power-cut case is valid only with proof on record. The first cut of this round hit the wrong board. Check that the board's USB port re-enumerated and that Count TS (14h) incremented, with time stamping set up beforehand (TSE plus TSS=1).
A usbip re-enumeration can drop the serial port mid-run with an EIO. Reopen by the by-id path; it is not a firmware crash.
Asking Pieter to act in prose fails. "Please re-request Copilot" at the end of a summary was missed. Every action for him goes in a dialog with the URL.
A bare #98 in cross-repo text links to the host repository's own issue 98. Always use owner/repo#N.
Next steps, in priority order
updatedAtafter 2026-10-07T01:00Z is new. Done means each maintainer comment is answered, or brought to Pieter as a dialog.0f038054. Copilot found nothing, all threads are resolved, and the acceptance matrix passes. The RV3028 position is FROZEN (see New learnings). 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. Then Pieter re-requests Copilot in the web UI, asked as a dialog with the URL.AutoDiscoverRTCClock::begin(), though both merge cleanly ontodev. 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 on the new commit, under the rule in step 2.now()ignores the 12-hour flag. Revisit after the RTC PRs land.External blockers
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.Internal dependencies
State
Re-derive all of this; it was true at 2026-10-07T01:30Z.
fix/rv3028-atomic-read@0f038054(8ba3aaca)fix/rtc-probe-identity@9d0d5e31fix/rv3028-eeprom-config@23b23b24fix/rx8130ce-week-onehot@8c9c9772sensor listfix/sensor-list-paging@bbacf47afix/rak12500-i2c-address@85f016bedevmoved tof3bcb363, two OTA BLE-name commits unrelated to ours. All six fix branches still merge onto it cleanly.82e160257cc; drivers: rv3028: disable backup switchover during EEPROM access zephyrproject-rtos/zephyr#121252 is at751beb04cba.535a37c(A0h rule). Pieter accepted its read-modify-write Status clears as a ZephCore platform difference.7286e50(12-hour mode).0f038054, with G2 done by a real USB power cut.local/hw-accept:0f038054, plus the throwaway diagnostic CLI933cae86, plus the harnesstest-local/rv3028_accept.py(a99d9ad6). Only the throwaway commits differ from0f038054, andsrc/is identical to it. Board state: correct time, test registers restored. A third RAK4631 attached to the host is not ours.local/hw-acceptchecked out in the-hw-3421worktree.The parked decision queue
0 parked: the fork has no open
decisionissue. The decisions made this round were put to Pieter as dialogs and answered in the session.What the last round did
dayOfTheWeek()(the old formula was wrong on 83% of days).set24HourMode()dropped frombegin().What not to repeat
#98in cross-repo text links to the host repository's own issue 98. Always useowner/repo#N.New learnings
~flagis the safe clear. Recorded in the Read and write the RV3028 clock atomically, and reject switchover-garbled transfers 🤖🤖 meshcore-dev/MeshCore#3421 code comments and description.