Quick follow-up to my earlier post about migrating to a self-hosted Zebra + Nozy setup.
Pulled v2.3.6.7 and rebuilt the API server today. The witness-sync issue I’d been hitting on /api/transaction/send (witness stuck thousands of blocks behind chain tip despite /api/wallet/status reporting fully synced) is completely resolved.
Tested a withdrawal from Nozy → Zodl right after the rebuild, broadcast was instant, confirmed in under a minute, no errors at all.
Solid fix. Appreciate @Lowo88 turning this around quickly.
Honestly I was testing from the user side rather than digging into the internals of the fix itself. From my end the symptom was clear: /api/wallet/status reporting fully synced with blocks_behind: 0 out /api/transaction/send still throwing witness-behind errors consistently. After pulling v2.3.6.7 and rebuilding, sends went through instantly with no errors.
For the actual implementation details of what changed, @Lowo88 would know best, worth asking him directly or checking the changelog and the src/wallet_sync.rs diff in the repo.
Hey my bad about the late reply @ZKZeek scanning / witness side, not reorg or note-commitment-tree handling.
/api/wallet/status only checked block scan height (blocks_behind: 0). Orchard witnesses on already-cached notes in notes.json weren’t refreshed to tip, so send correctly blocked with witness thousands of blocks behind.
v2.3.6.7 fixes that by refreshing witnesses on all cached notes after sync, batching catch-up at tip, and adding witness_lag_blocks + ready_for_send to status. Check ready_for_send: true before send — not just blocks_behind: 0.