A comment merged on main carries a false premise, and two decisions were made on it
crates/dig-wallet/src/sage/fallback.rs justifies conflating absence with outage by asserting that
only the inner coinset client exposes an absence-aware read, and that lifting it onto the ChiaQuery
facade would need a chia-query release.
That is false. Verified against the published chia-query 0.19.0 source:
ChiaQuery::get_coin_spend_opt — router.rs:480, re-exported at lib.rs:347
- it wraps
coinset.get_puzzle_and_solution_opt and adds corroboration on top
How the wrong conclusion was reached, because the shape generalises
Round 7 of PR #393 searched the facade for get_puzzle_and_solution_opt, correctly found it absent,
and concluded the capability was absent. A different method provides it. A gate then verified round
7's claim as stated — true of that method name — and upheld it.
Checking an enumerated name is not the same as asking whether the capability exists. Both the lane
and its gate were individually correct and jointly wrong, and the belief then got written into a
comment on main where the next reader inherits it as settled.
It also weakens the security objection that upheld the decision
The gate that upheld round 7's refusal added that router.rs:739 resolves peer-first, so a terminal
refusal on a missing parent would hand any NC-12 peer a money-erasure primitive. But
get_coin_spend_opt's own contract says:
Ok(None) means corroborated absence
- an absence only one source will vouch for is
UncorroboratedAbsence — an Err
- two sources that contradict each other are
SourcesDisagree — also an Err
CORROBORATION_FLOOR = 2 sources besides the answering one
One hostile peer cannot mint an absence. The objection was sound given the premise it was handed;
the premise was wrong.
What is NOT being claimed
The actionable part
Sweep for other decisions resting on the same belief. The comment is merged, so anything written
after it may have inherited it. Grep for reasoning of the shape "the facade cannot distinguish absence
from failure" / "only the inner client exposes" and check each against 0.19.0's actual surface.
The comment itself is corrected in PR #391; this ticket is for the blast radius of the belief, not the
sentence.
A comment merged on
maincarries a false premise, and two decisions were made on itcrates/dig-wallet/src/sage/fallback.rsjustifies conflating absence with outage by asserting thatonly the inner coinset client exposes an absence-aware read, and that lifting it onto the
ChiaQueryfacade would need a chia-query release.
That is false. Verified against the published
chia-query0.19.0 source:ChiaQuery::get_coin_spend_opt—router.rs:480, re-exported atlib.rs:347coinset.get_puzzle_and_solution_optand adds corroboration on topHow the wrong conclusion was reached, because the shape generalises
Round 7 of PR #393 searched the facade for
get_puzzle_and_solution_opt, correctly found it absent,and concluded the capability was absent. A different method provides it. A gate then verified round
7's claim as stated — true of that method name — and upheld it.
Checking an enumerated name is not the same as asking whether the capability exists. Both the lane
and its gate were individually correct and jointly wrong, and the belief then got written into a
comment on
mainwhere the next reader inherits it as settled.It also weakens the security objection that upheld the decision
The gate that upheld round 7's refusal added that
router.rs:739resolves peer-first, so a terminalrefusal on a missing parent would hand any NC-12 peer a money-erasure primitive. But
get_coin_spend_opt's own contract says:Ok(None)means corroborated absenceUncorroboratedAbsence— anErrSourcesDisagree— also anErrCORROBORATION_FLOOR = 2sources besides the answering oneOne hostile peer cannot mint an absence. The objection was sound given the premise it was handed;
the premise was wrong.
What is NOT being claimed
cooldown it shipped is not being reverted, and fix(wallet): run CAT attribution in production so a funded wallet can name its $DIG #391
preserves
main's rule that a failure is never an absence — it only adds the ability to report areal absence.
Ok(None)must not become a disproof. Corroboration is agreement, not currency: every source canagree and still be behind the chain, so discarding a coin on
Absentdeletes real coins when sourceslag. PR fix(wallet): run CAT attribution in production so a funded wallet can name its $DIG #391 deliberately does not make that change, and neither should a follow-up.
The actionable part
Sweep for other decisions resting on the same belief. The comment is merged, so anything written
after it may have inherited it. Grep for reasoning of the shape "the facade cannot distinguish absence
from failure" / "only the inner client exposes" and check each against 0.19.0's actual surface.
The comment itself is corrected in PR #391; this ticket is for the blast radius of the belief, not the
sentence.