Repository navigation
Session Handoff [hw-cli]: liquidraver/ZephCore #98 and #99 upstream; monitor them, reconnect with MeshCore and Zephyr sessions #41
Description
Next steps, in priority order
-
Monitor the four filed PRs and answer feedback.
- rak4631: use a fitted RAK12002 RTC, and keep its backup switchover enabled liquidraver/ZephCore#98: RAK4631 RAK12002 RV3028 config. Clean branch
rak4631-rak12002-rtcat3d399d5; fork iteration PR rak4631: use a fitted RAK12002 RTC, and keep its backup switchover enabled (iteration branch) #35, same tree at26c5e33. - rtc: identify RTCs by documented always-zero bits; stop skipping real ones liquidraver/ZephCore#99: RTC probe identity hardening. Clean branch
rtc-probe-identityat41d6f76; fork iteration PR RTC probe: identify RTCs by documented always-zero bits, stop skipping real ones (iteration branch) #40, same tree atc947e26.
How:
- Run the hub's
pr_review.py status <n> --repo <owner/repo>for each. - Read issue comments, review comments and reviews from anyone but the maintainer:
gh api repos/<o>/<r>/{issues/<n>/comments,pulls/<n>/comments,pulls/<n>/reviews}. - Upstream feedback goes to the fork branch first (
work/rak4631-rak12002-rtcorwork/rtc-probe-identity, append-only), throughlocal-strict-review(two edit rounds per push, then push with the remainder listed). Then re-squash onto the clean branch and force-push that one branch with--force-with-lease, only on the maintainer's go-ahead (hubupstream-contribution-workflow). - Answer a fork thread with
pr_review.py reply --resolve. Answer a thread-less finding withpr_review.py comment, quoting it. - CodeRabbit on the fork allows one review per hour per repository, and must be requested with
@coderabbitai review.
Done means every human or bot item on all four is answered, and the upstream owner has merged or asked for changes.
- rak4631: use a fitted RAK12002 RTC, and keep its backup switchover enabled liquidraver/ZephCore#98: RAK4631 RAK12002 RV3028 config. Clean branch
-
Reconnect with the sibling sessions when work crosses repositories.
ListAgentsshows who is running; message by the name a row prints.- MeshCore: session
meshcore-dev-meshcore-*. Handoff Session Handoff [rv3028-eeprom]: Three MeshCore PRs upstream; watch and respond to review meshcore-dev-MeshCore#17 (trackrv3028-eeprom). Its upstream PRs: Adopt an RTC only if its time registers read like that chip 🤖🤖 meshcore-dev/MeshCore#3544 (identity, counterpart of rtc: identify RTCs by documented always-zero bits; stop skipping real ones liquidraver/ZephCore#99), #3545 (RV3028 EEPROM, counterpart of rak4631: use a fitted RAK12002 RTC, and keep its backup switchover enabled liquidraver/ZephCore#98), #3550 (RX8130CE weekday, counterpart of ZephCore fork issue RTC save writes the weekday in binary; the RX8130CE's WEEK register is one-hot #39). Tell it the upstream ZephCore numbers rak4631: use a fitted RAK12002 RTC, and keep its backup switchover enabled liquidraver/ZephCore#98 and rtc: identify RTCs by documented always-zero bits; stop skipping real ones liquidraver/ZephCore#99: it had ended before they existed, and its #3544 and #3545 cite the fork PRs RTC probe: identify RTCs by documented always-zero bits, stop skipping real ones (iteration branch) #40 and rak4631: use a fitted RAK12002 RTC, and keep its backup switchover enabled (iteration branch) #35. - Zephyr: session
zephyrproject-rtos-zephyr-*. Handoff Session Handoff [dm9051-ch390]: Upstream PRs A and C' (RV3028) in review, B stacked draft; check 3 PRs, 13 issues and the CH390 question for feedback zephyrproject-rtos-zephyr#29 (trackdm9051-ch390, which also carries the RV3028 work). Upstream drivers: rv3028: disable backup switchover during EEPROM access zephyrproject-rtos/zephyr#121252 (RV3028 backup switchover held off for EEPROM access), issue #121253. - The agreed differences between ZephCore and MeshCore (D1-D13; then four for rtc: identify RTCs by documented always-zero bits; stop skipping real ones liquidraver/ZephCore#99) are recorded in rak4631: use a fitted RAK12002 RTC, and keep its backup switchover enabled liquidraver/ZephCore#98/rtc: identify RTCs by documented always-zero bits; stop skipping real ones liquidraver/ZephCore#99 and #3544/#3545. Any change to the store or the probe on either side is checked against the other before it ships, as the maintainer required.
- MeshCore: session
-
Upstream companion: mark a CLI reply cut to the app frame (iteration branch) #27-companion: never treat an over-the-air CLI command as local (iteration branch) #32 one at a time. The maintainer approved them on 2026-10-03 for "the next session". That session (2026-10-04) took rak4631: use a fitted RAK12002 RTC, and keep its backup switchover enabled (iteration branch) #35 and RTC probe: identify RTCs by documented always-zero bits, stop skipping real ones (iteration branch) #40 instead, so reconfirm before opening.
-
hwCLI on hardware (Addhwhardware-report CLI command (iteration branch) #1, Add thehwhardware-report CLI command (rebased, hw CLI only) #16), still not re-run since the separation. The second RAK4631 (MeshCore's) carries a RAK1906 BME680 and a RAK1902 LPS22HB, useful for the bus scan. Board ownership is coordinated between the agents (the maintainer's rule): each RAK4631 belongs to one session, and another session uses it only after its owner hands it over and until it is handed back. Whoever flashes is responsible for flashing correctly, whatever the board holds: the right image, no collateral damage, air-safe. For example, a ZephCore image formats LittleFS at 0xD4000-0xF4000 on a failed mount, which would wipe a MeshCore board's InternalFS; the T38 test used a standalone app for that reason.
External blockers
- The maintainer's go-ahead for any force-push of a clean upstream branch, any new upstream PR (companion: mark a CLI reply cut to the app frame (iteration branch) #27-companion: never treat an over-the-air CLI command as local (iteration branch) #32), and any write to
meshcore-dev/MeshCoreorzephyrproject-rtos/zephyr. - CodeRabbit's one-review-per-hour limit on the fork.
Internal dependencies
- rak4631: use a fitted RAK12002 RTC, and keep its backup switchover enabled liquidraver/ZephCore#98 and rtc: identify RTCs by documented always-zero bits; stop skipping real ones liquidraver/ZephCore#99 both edit
rtc_probe(), and each body says the second to merge will be rebased. Once both are in, rak4631: use a fitted RAK12002 RTC, and keep its backup switchover enabled liquidraver/ZephCore#98's RV3028 check becomes rtc: identify RTCs by documented always-zero bits; stop skipping real ones liquidraver/ZephCore#99's zero-mask on the RAK4631 descriptor. - Fork rtc: do not adopt a chip whose status read failed (iteration branch) #30 (fork issue RTC probe adopts a chip whose status-register read failed, then writes time into it #23, failed status read) touches the same function and is not upstream yet.
State (re-derive at resume: git worktree list, gh pr list)
- Fork
dev=upstream/dev=f9d01cf. - Fork rak4631: use a fitted RAK12002 RTC, and keep its backup switchover enabled (iteration branch) #35: at
26c5e33. Copilot and CodeRabbit answered, all threads resolved; body rewritten with before/after evidence and permalinks. - Fork RTC probe: identify RTCs by documented always-zero bits, stop skipping real ones (iteration branch) #40: at
c947e26. Copilot round on the head had no findings; earlier threads fixed or answered. A CodeRabbit request onc947e26was scheduled for 18:16 UTC 2026-10-04; check that it ran and answer what it posted. - Clean upstream branches:
rak4631-rak12002-rtcandrtc-probe-identity, each in its own worktree namedliquidraver-ZephCore-up-*. - New fork issues: RTC probe: field checks skip real RTCs, and only the RV3028 has an identity mask #38 (probe hardening, now rtc: identify RTCs by documented always-zero bits; stop skipping real ones liquidraver/ZephCore#99) and RTC save writes the weekday in binary; the RX8130CE's WEEK register is one-hot #39 (RX8130CE weekday written in binary, not one-hot; pre-existing).
- Hardware:
- This session's RAK4631 (USB only) runs rak4631: use a fitted RAK12002 RTC, and keep its backup switchover enabled (iteration branch) #35's final repeater build: SoCal, tx 1, handle
lpxz, repeat and adverts off. - Its RV3028 EEPROM holds 35h
40, 37h34. - Both RAK4631s carry an L76K GNSS but sit indoors with no fix.
- This session's RAK4631 (USB only) runs rak4631: use a fitted RAK12002 RTC, and keep its backup switchover enabled (iteration branch) #35's final repeater build: SoCal, tx 1, handle
- Worktrees: the throwaway evidence and BSF worktrees were removed.
The parked decision queue
0 issues carry decision on this fork. Open maintainer questions:
- Reconfirm upstream for companion: mark a CLI reply cut to the app frame (iteration branch) #27-companion: never treat an over-the-air CLI command as local (iteration branch) #32 (step 3).
What the last round did
- rak4631: use a fitted RAK12002 RTC, and keep its backup switchover enabled (iteration branch) #35 finished and upstream as rak4631: use a fitted RAK12002 RTC, and keep its backup switchover enabled liquidraver/ZephCore#98:
- closed its open list in the shape MeshCore settled on;
- before/after evidence from three maintainer unplugs:
devlost the time, declaration-only lost it with PORF set, the branch kept it with BSF set; - EEPROM dumps, an RTC-midnight hold, and a measured switchover-off window of 14.3 ms per boot;
- body rewritten with manual §/page citations and commit permalinks.
- RTC probe: field checks skip real RTCs, and only the RV3028 has an identity mask #38 implemented as RTC probe: identify RTCs by documented always-zero bits, stop skipping real ones (iteration branch) #40, upstream as rtc: identify RTCs by documented always-zero bits; stop skipping real ones liquidraver/ZephCore#99:
- per-descriptor zero-masks, cited against six data sheets (DS1307 and DS3232 added by the maintainer);
- read-only hardware verdicts on the MeshCore board's BME680 and LPS22HB via a standalone app (T38), matching Adopt an RTC only if its time registers read like that chip 🤖🤖 meshcore-dev/MeshCore#3544's table except one agreed difference.
- Cross-firmware: agreed every ZephCore/MeshCore implementation difference item by item, the maintainer's condition for upstream. Found the DS1307 clock-halt mask issue (adopted in #3544) and the RX8130CE weekday defect (both firmwares; MeshCore #3550).
What not to repeat
- Flashing correctly is the flasher's responsibility, whatever the board holds. Board ownership is coordinated between the agents, but the image's side effects are the flasher's to get right. On a board running MeshCore, ZephCore's automounted
lfs_partition(0xD4000-0xF4000) formats on a failed mount and wipes MeshCore's InternalFS. For a read-only test, a standalone Zephyr app (app at 0x26000, nothing defined at 0xD0000 or above) avoids that. - Self-review rounds on failure paths keep finding new edge cases. Stop at the edit budget, push, and list the rest; the maintainer chose that every time it came up.
- Don't assert datasheet facts from recall, even a reviewer's (the DS1307 CH and 0Fh claims). Ask the maintainer for the sheet; he has them or will fetch them.
- Don't refer to a board by its serial when asking the maintainer to act on it. Say "the board you cycled last time"; he does not track serials.
New learnings
- Board facts are in this host's project memory: what is fitted to each RAK4631, the indoor bench, and the LittleFS overlap.
- The probe rules and their data-sheet grounding are in rtc: identify RTCs by documented always-zero bits; stop skipping real ones liquidraver/ZephCore#99's body and
rtc-i2c.dtsi.
Activity
ptr727 commentedon Oct 4, 2026
Parked decision answered 2026-10-04: hold #27-#32 as fork PRs until liquidraver#98 and liquidraver#99 have upstream feedback, so the owner isn't flooded. This replaces step 3's "reconfirm": do not open them until the maintainer says so after liquidraver#98/liquidraver#99 feedback. Queue now: 0 open questions.
ptr727 commentedon Oct 4, 2026
Monitoring window 10:43-11:13 PT 2026-10-04: no human feedback on liquidraver#98 or liquidraver#99 or fork #35/#40. Copilot's automatic reviews on the upstream PRs (posted ~17:40Z, before the window) need answering next session:
0xFFRV3028, preventing initial synchronization and configuration." Answer as Disproven on reachability: the RV3028's time registers reset to 00, with Date and Month 01 (RV-3028-C7 App Manual Rev 1.4, §3.18, p. 41), never all0xFF, so the all-0xFFskip only catches an erased EEPROM. Thread-less, so reply with a PR comment quoting it.ZephyrRTCDiscover.h:36(low): the header contract omits the all-0xFFsecond read (ruled out, not re-probed). This is open item 9 in the PR body. To fix: edit the header on fork branchwork/rtc-probe-identity(RTC probe: identify RTCs by documented always-zero bits, stop skipping real ones (iteration branch) #40) throughlocal-strict-review, re-squash ontortc-probe-identity, and force-push that branch with--force-with-leaseonly on the maintainer's go-ahead. Then reply on the thread with the fixing commit.The CodeRabbit request on fork #40 (
c947e26) was scheduled for 18:16Z; check its result too.ptr727 commentedon Oct 4, 2026
Upstream Copilot findings answered 2026-10-04: liquidraver#98's headline was disproven with the RV3028 reset table (§3.18, p. 41) in this comment. liquidraver#99's header-contract finding is fixed: fork
work/rtc-probe-identityis at0a4618dand upstreamrtc-probe-identityat03f306b(same tree, force-pushed with lease on the maintainer's go-ahead). The thread is replied to and resolved. The liquidraver#99 body has been repointed to03f306b, and its fixed open items dropped.ptr727 commentedon Oct 5, 2026
Continued in #42, round 5 on track
hw-cli.