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
A transient transport error during reconciliation leaves the daemon blocked_corrupt until it is restarted #111
Follow-up to #106. With the fix from #107 the daemon survives a laptop sleep and reconciles again on wake. On the first real sleep since, that reconciliation hit the network before it was back, and the daemon ended in a terminal state:
2026-10-05T23:37:42Z ready_current (last refresh before sleep)
2026-10-05T23:40:16Z reconciling (record expired; re-reconciling on wake)
2026-10-05T23:45:36Z blocked_corrupt git ls-remote origin failed: fatal: unable to access
'https://github.com/magnificentlycursed/crosslink.git/': Recv failure: Connection reset by peer
blocked_corrupt is terminal and sticky: the daemon stayed alive in it for 19 hours, daemon ensure --wait-ready returned the blocked record, and every command and hook stayed blocked until daemon stop plus ensure.
Cause: is_remote_unavailable_message (reconcile/publication.rs) recognises "could not resolve host", "could not read from remote repository", "connection timed out", "connection refused", "network is unreachable", "no such file or directory" and "does not appear to be a git repository". Anything else from the remote, including "Connection reset by peer", "Recv failure", "Could not connect", "SSL", "early EOF" and the generic curl "unable to access", is Rejected, which activation maps to blocked_corrupt.
Ask:
Treat transport failures as Unavailable (the waiting_for_remote path, which already retries with backoff). A safe rule: any fatal: unable to access from git is transport, and "connection reset by peer", "recv failure", "could not connect", "failed to connect", "ssl" and "early eof" are transport.
Consider not letting a remote failure during re-reconciliation (as opposed to a verification failure) be terminal at all, since the daemon reached ready_current with the same hub minutes earlier.
Second occurrence, different repository and different wording, same outcome. mdatron's daemon on develop 875066a, 2026-10-06 07:01 UTC:
blocked_corrupt git fetch immutable reconciliation ref failed: fatal: unable to access
'https://github.com/magnificentlycursed/mdatron.git/': Recv failure: Operation timed out
daemon ensure --wait-ready at 19:xx UTC returned that same record (same attempt_id, same updated_at) without re-attempting the fetch. GitHub had been reachable from the machine for hours by then.
Note the message: "Operation timed out", not "connection timed out", so even the timeout case is missed by the current substring list. Matching on git's fatal: unable to access prefix would cover both occurrences.
Fixed in develop by #112 (transport failures during reconciliation, including the sync cache's ls-remote and fetch, now wait for the remote; HTTP 4xx stays terminal) and #115 (a hub moving under the ready-record write no longer ends the daemon, on the housekeeping or reconciliation path).
Activity
magnificentlycursed commentedon Oct 6, 2026
Second occurrence, different repository and different wording, same outcome. mdatron's daemon on develop 875066a, 2026-10-06 07:01 UTC:
daemon ensure --wait-readyat 19:xx UTC returned that same record (sameattempt_id, sameupdated_at) without re-attempting the fetch. GitHub had been reachable from the machine for hours by then.Note the message: "Operation timed out", not "connection timed out", so even the timeout case is missed by the current substring list. Matching on git's
fatal: unable to accessprefix would cover both occurrences.Authored by Claude Code on behalf of @magnificentlycursed.
fix(reconcile): classify git transport failures as the remote being u…
magnificentlycursed commentedon Oct 7, 2026
Fixed in develop by #112 (transport failures during reconciliation, including the sync cache's ls-remote and fetch, now wait for the remote; HTTP 4xx stays terminal) and #115 (a hub moving under the ready-record write no longer ends the daemon, on the housekeeping or reconciliation path).
Authored by Claude Code on behalf of @magnificentlycursed.