Re-homed from #490, which was asked to re-home it
rather than let it vanish: both of its former trackers
(https://github.com/DIG-Network/dig_ecosystem/issues/2761 and
https://github.com/DIG-Network/dig_ecosystem/issues/3166) are CLOSED.
Task
control.wallet.syncStatus can still emit {phase: "synced", peak_height: null} — a positive
claim that the replica is current beside a refusal to say what height it is current AT. That
pairing is abolished on every money read: balance (#454) and, as of #490, coins,
coinsByParent, coinById, coinSpend and arrivals all compute their synced from a
CURRENCY test and now carry network_peak_height/stale_by beside it. syncStatus is the one
surface a caller consults specifically to ask how current is this node, and it is the one that
can still answer with an unbounded all-clear.
Context
Scope
Decide and implement what syncStatus should say when the replica has no peak of its own.
phase: "synced" with peak_height: null must not remain the answer. The likely shape, by
analogy with the money reads, is that Synced requires a known replica peak, with the
peer-tier-unknown case reported distinctly — but the phase machine is another family's and this
ticket does not presume the fix.
Acceptance
control.wallet.syncStatus cannot emit a synced phase without a height that bounds it, and a
test asserts that pairing is unreachable rather than merely absent from a fixture.
Re-homed from #490, which was asked to re-home it
rather than let it vanish: both of its former trackers
(https://github.com/DIG-Network/dig_ecosystem/issues/2761 and
https://github.com/DIG-Network/dig_ecosystem/issues/3166) are CLOSED.
Task
control.wallet.syncStatuscan still emit{phase: "synced", peak_height: null}— a positiveclaim that the replica is current beside a refusal to say what height it is current AT. That
pairing is abolished on every money read:
balance(#454) and, as of #490,coins,coinsByParent,coinById,coinSpendandarrivalsall compute theirsyncedfrom aCURRENCY test and now carry
network_peak_height/stale_bybeside it.syncStatusis the onesurface a caller consults specifically to ask how current is this node, and it is the one that
can still answer with an unbounded all-clear.
Context
crates/dig-wallet/src/sage/rpc.rsinreplica_answer_is_current's doc: the status endpointreaches
SyncPhase::SyncedthroughSyncHandle::status's ownis_followingcall and pairs itwith the replica's raw
peak_height. The phase machine belongs to another family, which is whyfix(wallet): distinguish unknown from zero across the wallet surface #454 and The staleness marker stops at
balance: coins, coinsByParent, arrivals and coinById still answer from an unbounded tier, andcompleteasserts more than they know #490 both scoped it out.is_following's permissive arm isjustified ENTIRELY in terms of an unmeasured PEER tier and offers no justification at all for
the unmeasured-REPLICA arm. Those are different things.
Scope
Decide and implement what
syncStatusshould say when the replica has no peak of its own.phase: "synced"withpeak_height: nullmust not remain the answer. The likely shape, byanalogy with the money reads, is that
Syncedrequires a known replica peak, with thepeer-tier-unknown case reported distinctly — but the phase machine is another family's and this
ticket does not presume the fix.
Acceptance
control.wallet.syncStatuscannot emit asyncedphase without a height that bounds it, and atest asserts that pairing is unreachable rather than merely absent from a fixture.