Skip to content

StatusResult cannot carry wallet_origin or wallet_ever_funded, so dig-app cannot observe the auto-created wallet #21

Description

@MichaelTaylor3d

Task

Add wallet_origin and wallet_ever_funded to StatusResult.

This blocks a shipped feature from being observable. dig-node v0.132.0 creates a mnemonic seed unattended on first start and records an origin (auto / auto-acknowledged / imported) plus a monotonic ever_funded latch. dig-app has the welcome notice built and merged (dig-app#229). Neither side can talk to the other, because the contract between them has no field for the answer.

Measured, not assumed

A lane checked the pinned 0.17.0 and also downloaded the 0.18.0 .crate from crates.io and grepped src/results.rs. Neither declares either field. So this is not a version-bump away; the latest published contract genuinely cannot carry it.

Why the shape matters

  • wallet_origin is a three-state, not a boolean. auto-acknowledged exists so the desktop welcome notice fires exactly once — collapsing it to is_auto loses the only thing that stops the notice reappearing every launch.
  • An unrecognised value must parse to unknown and show nothing. dig-app already parses defensively for exactly this reason, and that property is what lets a fourth origin be added later without breaking older clients. Keep it.
  • wallet_ever_funded is a monotonic latch that never clears. Once set, no surface may describe the wallet as disposable, whatever the current balance reads — a balance of zero is not evidence a wallet never mattered. That matters because the wallet was created without the user asking and its recovery phrase has never been shown to anyone.

Related

  • dig-node #286 — nothing calls latch_ever_funded yet, so the field will report false in the shipped build until a balance observer exists. Adding the field here is still correct and is the prerequisite.
  • dig-node #277 and its decision comment carry the origin/latch design.
  • This is a byte-identical cross-repo contract: it is defined in dig-node and parsed in dig-app, which is exactly the shape that drifts. It belongs here rather than as string literals in two repos.

Evidence

dig-app can read a node-created wallet's origin over the real wire, and an unrecognised origin value yields unknown rather than any of the known states.

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind:businessa person can DO something new, or money moves, or a shipped surface stops lying to them

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions