{
  "name": "bitcoinsv.design rules",
  "description": "Every do and don't the BSV design guide states, with a permanent citation URL each, ordered most costly first.",
  "publisher": "BSV Association",
  "license": "https://github.com/bsv-blockchain/teranode/blob/main/LICENSE",
  "source": "https://www.bitcoinsv.design/guide/",
  "severity": {
    "critical": "Costs money: breaking it can cost somebody money or access to it, usually irreversibly.",
    "high": "Costs trust: breaking it costs trust or privacy, or sets up a costly mistake later.",
    "standard": "Every other rule the guide states."
  },
  "counts": {
    "total": 1022,
    "critical": 123,
    "high": 155,
    "standard": 744
  },
  "rules": [
    {
      "id": "665b6af4ce",
      "kind": "dont",
      "severity": "critical",
      "text": "Build a product where the user's funds depend on your company continuing to exist. Every wallet should be recoverable without you. See Backups.",
      "url": "https://www.bitcoinsv.design/guide/rule/665b6af4ce/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "b502171c81",
      "kind": "do",
      "severity": "critical",
      "text": "Make the irreversible step unmistakable. A payment cannot be recalled, so the review screen is the last line of defence.",
      "url": "https://www.bitcoinsv.design/guide/rule/b502171c81/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "72c3ab54e4",
      "kind": "do",
      "severity": "critical",
      "text": "Show the total a payment takes from the user, who it goes to, and that it cannot be undone, before they commit.",
      "url": "https://www.bitcoinsv.design/guide/rule/72c3ab54e4/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "02cda8cac2",
      "kind": "do",
      "severity": "critical",
      "text": "Name the limits. \"This backup covers your keys but not your payment records\" is the sentence that stops somebody losing money later.",
      "url": "https://www.bitcoinsv.design/guide/rule/02cda8cac2/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "762c70a9c3",
      "kind": "dont",
      "severity": "critical",
      "text": "Let recovery words reach a screenshot, a cloud note, a password manager on the same device, or a chat message.",
      "url": "https://www.bitcoinsv.design/guide/rule/762c70a9c3/",
      "page": {
        "title": "Hardware categories",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/hardware/"
      }
    },
    {
      "id": "8d5c89ed47",
      "kind": "dont",
      "severity": "critical",
      "text": "Let the everyday wallet draw from savings on its own, or let an agent raise its own budget. Both turn a bridge into a leak.",
      "url": "https://www.bitcoinsv.design/guide/rule/8d5c89ed47/",
      "page": {
        "title": "Spending, saving and delegating",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/spending-saving-delegating/"
      }
    },
    {
      "id": "b50f273390",
      "kind": "dont",
      "severity": "critical",
      "text": "Show an amount taken from the app's description text. Show the amount from the request itself, and warn if the two disagree.",
      "url": "https://www.bitcoinsv.design/guide/rule/b50f273390/",
      "page": {
        "title": "Permissions and allowances",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/permissions-and-allowances/"
      }
    },
    {
      "id": "be5632560c",
      "kind": "dont",
      "severity": "critical",
      "text": "Let an AI agent approve key linkage, share a Pass, or widen its own permissions.",
      "url": "https://www.bitcoinsv.design/guide/rule/be5632560c/",
      "page": {
        "title": "Permissions and allowances",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/permissions-and-allowances/"
      }
    },
    {
      "id": "344afceabd",
      "kind": "do",
      "severity": "critical",
      "text": "Show the profile name and avatar the handle resolved to, before the confirm button. Paying \"Anna Keller\" is checkable; paying anna@examplebank.com is only spellable.",
      "url": "https://www.bitcoinsv.design/guide/rule/344afceabd/",
      "page": {
        "title": "Paying by handle",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/paying-by-handle/"
      }
    },
    {
      "id": "f47f34353f",
      "kind": "do",
      "severity": "critical",
      "text": "Say when the key behind a saved contact has changed since last time, and make the user acknowledge it. A silently rotated key is how a handle gets hijacked.",
      "url": "https://www.bitcoinsv.design/guide/rule/f47f34353f/",
      "page": {
        "title": "Paying by handle",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/paying-by-handle/"
      }
    },
    {
      "id": "5fe9c5b068",
      "kind": "dont",
      "severity": "critical",
      "text": "Show long decimal BSV amounts in a consumer interface. \"0.00012500 BSV\" asks the reader to count zeros, and they will get it wrong.",
      "url": "https://www.bitcoinsv.design/guide/rule/5fe9c5b068/",
      "page": {
        "title": "Amounts and units",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/amounts-and-units/"
      }
    },
    {
      "id": "98fc09f14d",
      "kind": "do",
      "severity": "critical",
      "text": "Make the handle the default and the address the fallback. Every payment that uses a handle is a payment that cannot go to the wrong network.",
      "url": "https://www.bitcoinsv.design/guide/rule/98fc09f14d/",
      "page": {
        "title": "Wrong-network payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/wrong-network-payments/"
      }
    },
    {
      "id": "fea05e6af6",
      "kind": "do",
      "severity": "critical",
      "text": "Put the network name next to the address field, always, not only on error. \"BSV address\" is three words and it is the whole defence.",
      "url": "https://www.bitcoinsv.design/guide/rule/fea05e6af6/",
      "page": {
        "title": "Wrong-network payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/wrong-network-payments/"
      }
    },
    {
      "id": "7b6afde89f",
      "kind": "do",
      "severity": "critical",
      "text": "Warn on every pasted address rather than trying to detect a bad one. You cannot detect it, and a warning that only fires sometimes teaches people it means something specific.",
      "url": "https://www.bitcoinsv.design/guide/rule/7b6afde89f/",
      "page": {
        "title": "Wrong-network payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/wrong-network-payments/"
      }
    },
    {
      "id": "e92e4f5284",
      "kind": "dont",
      "severity": "critical",
      "text": "Use \"bitcoin address\" as the field label. That is the word that cannot distinguish the networks, on the screen where the distinction is the whole point.",
      "url": "https://www.bitcoinsv.design/guide/rule/e92e4f5284/",
      "page": {
        "title": "Wrong-network payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/wrong-network-payments/"
      }
    },
    {
      "id": "e7486b509a",
      "kind": "do",
      "severity": "critical",
      "text": "Put the network on the confirmation, beside the recipient, in the same weight as the amount.",
      "url": "https://www.bitcoinsv.design/guide/rule/e7486b509a/",
      "page": {
        "title": "Wrong-network payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/wrong-network-payments/"
      }
    },
    {
      "id": "94b4f84162",
      "kind": "do",
      "severity": "critical",
      "text": "Say plainly what cannot be undone, before the button: \"Sent to the wrong network, this usually cannot be recovered.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/94b4f84162/",
      "page": {
        "title": "Wrong-network payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/wrong-network-payments/"
      }
    },
    {
      "id": "ea9599e1da",
      "kind": "do",
      "severity": "critical",
      "text": "Offer a test payment for a first-time address above a threshold you choose, and ask the user to check with the recipient that it arrived. It costs a fraction of a penny and it is the only defence that proves the address is right.",
      "url": "https://www.bitcoinsv.design/guide/rule/ea9599e1da/",
      "page": {
        "title": "Wrong-network payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/wrong-network-payments/"
      }
    },
    {
      "id": "278b3b2795",
      "kind": "do",
      "severity": "critical",
      "text": "Make the network selection impossible to leave at a default, and restate the chosen network on the confirmation.",
      "url": "https://www.bitcoinsv.design/guide/rule/278b3b2795/",
      "page": {
        "title": "Wrong-network payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/wrong-network-payments/"
      }
    },
    {
      "id": "24ccdc3485",
      "kind": "dont",
      "severity": "critical",
      "text": "Offer \"Try again\" on a payment until you know the first attempt did not go out.",
      "url": "https://www.bitcoinsv.design/guide/rule/24ccdc3485/",
      "page": {
        "title": "Errors and failed payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/errors-and-failed-payments/"
      }
    },
    {
      "id": "2a72388be3",
      "kind": "do",
      "severity": "critical",
      "text": "Tell the user once when their wallet is retrying for them: \"Your wallet will keep trying to send this. You don't need to pay again.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/2a72388be3/",
      "page": {
        "title": "Errors and failed payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/errors-and-failed-payments/"
      }
    },
    {
      "id": "a96515e0c0",
      "kind": "do",
      "severity": "critical",
      "text": "Fund an agent by deliberate top-up, as a human action. A standing instruction to refill is the thing that turns a bounded loss into an unbounded one.",
      "url": "https://www.bitcoinsv.design/guide/rule/a96515e0c0/",
      "page": {
        "title": "Letting an agent spend",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/letting-an-agent-spend/"
      }
    },
    {
      "id": "a4ece91f55",
      "kind": "dont",
      "severity": "critical",
      "text": "Hand an agent the user's identity key or their Passes. It can have its own identity and act as itself; it should never be able to prove it is the person.",
      "url": "https://www.bitcoinsv.design/guide/rule/a4ece91f55/",
      "page": {
        "title": "Letting an agent spend",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/letting-an-agent-spend/"
      }
    },
    {
      "id": "63a9fc8258",
      "kind": "do",
      "severity": "critical",
      "text": "Enforce limits outside the agent, in the wallet or the service holding its keys. A limit the agent checks itself is a limit an injected instruction can argue with.",
      "url": "https://www.bitcoinsv.design/guide/rule/63a9fc8258/",
      "page": {
        "title": "Letting an agent spend",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/letting-an-agent-spend/"
      }
    },
    {
      "id": "d20dfe7b12",
      "kind": "do",
      "severity": "critical",
      "text": "Treat the supply decision as final in the interface, because it is. A field labelled \"Supply\" with no warning is a trap.",
      "url": "https://www.bitcoinsv.design/guide/rule/d20dfe7b12/",
      "page": {
        "title": "Holding tokens",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/holding-tokens/"
      }
    },
    {
      "id": "b62aa2ae7d",
      "kind": "do",
      "severity": "critical",
      "text": "Build time conditions with nLockTime and nSequence, and test that an early spend fails. A test that only proves the late spend succeeds proves nothing.",
      "url": "https://www.bitcoinsv.design/guide/rule/b62aa2ae7d/",
      "page": {
        "title": "Spending conditions",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/spending-conditions/"
      }
    },
    {
      "id": "31f330a837",
      "kind": "do",
      "severity": "critical",
      "text": "State where a pre-signed future transaction lives, who holds it, and what happens if the inputs are spent before its date. That is a backup requirement, not an implementation detail.",
      "url": "https://www.bitcoinsv.design/guide/rule/31f330a837/",
      "page": {
        "title": "Spending conditions",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/spending-conditions/"
      }
    },
    {
      "id": "039e20ae48",
      "kind": "do",
      "severity": "critical",
      "text": "Warn before a condition becomes unmeetable, not after. \"One more lost key and this is unrecoverable\" is useful; the same message afterwards is not.",
      "url": "https://www.bitcoinsv.design/guide/rule/039e20ae48/",
      "page": {
        "title": "Spending conditions",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/spending-conditions/"
      }
    },
    {
      "id": "b13bd63634",
      "kind": "dont",
      "severity": "critical",
      "text": "Let a user create a condition they have not demonstrably tested. Require a small-value rehearsal of the unlock path before real money goes in.",
      "url": "https://www.bitcoinsv.design/guide/rule/b13bd63634/",
      "page": {
        "title": "Spending conditions",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/spending-conditions/"
      }
    },
    {
      "id": "85a7914dd7",
      "kind": "do",
      "severity": "critical",
      "text": "Back up the wallet configuration alongside the key material, and include it in the recovery drill. A condition nobody can reconstruct is money nobody can move. See Backups.",
      "url": "https://www.bitcoinsv.design/guide/rule/85a7914dd7/",
      "page": {
        "title": "Spending conditions",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/spending-conditions/"
      }
    },
    {
      "id": "d18ac5c2f8",
      "kind": "dont",
      "severity": "critical",
      "text": "Write anything identifying a person without an explicit, specific consent for that write. \"Agreed to the terms\" is not consent to publish somebody's name forever.",
      "url": "https://www.bitcoinsv.design/guide/rule/d18ac5c2f8/",
      "page": {
        "title": "Storing data on chain",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/storing-data-on-chain/"
      }
    },
    {
      "id": "62eac939c1",
      "kind": "dont",
      "severity": "critical",
      "text": "Let an installed app that claims a website's name inherit the permissions or allowances already granted to that website.",
      "url": "https://www.bitcoinsv.design/guide/rule/62eac939c1/",
      "page": {
        "title": "Web apps and native apps",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/web-and-native-apps/"
      }
    },
    {
      "id": "ef08b4564a",
      "kind": "do",
      "severity": "critical",
      "text": "Prompt for the key backup once there is money to protect, at the latest when the balance first crosses an amount the user would mind losing, and let the user do it then and there.",
      "url": "https://www.bitcoinsv.design/guide/rule/ef08b4564a/",
      "page": {
        "title": "First use",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/first-use/"
      }
    },
    {
      "id": "245fa7fb11",
      "kind": "dont",
      "severity": "critical",
      "text": "Show recovery words during onboarding. A user with nothing to lose photographs them, and the screenshot outlives the carelessness.",
      "url": "https://www.bitcoinsv.design/guide/rule/245fa7fb11/",
      "page": {
        "title": "First use",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/first-use/"
      }
    },
    {
      "id": "7f7d175823",
      "kind": "do",
      "severity": "critical",
      "text": "Say what the backup covers, because it is two things: \"Your recovery words restore your keys. Your wallet backup restores your records: which money is yours and how to spend it. Keep both.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/7f7d175823/",
      "page": {
        "title": "First use",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/first-use/"
      }
    },
    {
      "id": "fba6444cf1",
      "kind": "do",
      "severity": "critical",
      "text": "Resolve the handle and show the profile name and avatar before the confirm button. Paying \"Anna Keller\" is checkable; paying anna@example.com is only spellable. See Paying by handle.",
      "url": "https://www.bitcoinsv.design/guide/rule/fba6444cf1/",
      "page": {
        "title": "Sending",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/"
      }
    },
    {
      "id": "44c3c56764",
      "kind": "dont",
      "severity": "critical",
      "text": "Let a typed handle go straight to a confirm screen with no resolution step. The resolution is the check.",
      "url": "https://www.bitcoinsv.design/guide/rule/44c3c56764/",
      "page": {
        "title": "Sending",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/"
      }
    },
    {
      "id": "2433fe3c54",
      "kind": "do",
      "severity": "critical",
      "text": "Warn on every pasted address that money sent to an address on another network is very hard to recover, and offer the user's contacts or a handle instead.",
      "url": "https://www.bitcoinsv.design/guide/rule/2433fe3c54/",
      "page": {
        "title": "Sending",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/"
      }
    },
    {
      "id": "00ea519fe6",
      "kind": "do",
      "severity": "critical",
      "text": "Warn before any payment to a contact whose key has changed, and require acknowledgement: \"Anna's wallet key has changed since you last paid her. If you weren't expecting this, check with her another way first.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/00ea519fe6/",
      "page": {
        "title": "Contacts",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/contacts/"
      }
    },
    {
      "id": "7c371b8b5e",
      "kind": "dont",
      "severity": "critical",
      "text": "Offer an unlimited allowance. There is no amount of convenience that justifies it, and a product offering it will have users who accepted it without reading.",
      "url": "https://www.bitcoinsv.design/guide/rule/7c371b8b5e/",
      "page": {
        "title": "Security",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/security/"
      }
    },
    {
      "id": "d2c2445c8a",
      "kind": "dont",
      "severity": "critical",
      "text": "Accept a single tap. Require the balance to be acknowledged, and refuse outright if there is a balance and either part of the backup is missing, with a route to making it.",
      "url": "https://www.bitcoinsv.design/guide/rule/d2c2445c8a/",
      "page": {
        "title": "Settings",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/settings/"
      }
    },
    {
      "id": "72eb015230",
      "kind": "dont",
      "severity": "critical",
      "text": "Make it a manual export the user has to remember. They will not, and the gap will be exactly the payments they most wanted back.",
      "url": "https://www.bitcoinsv.design/guide/rule/72eb015230/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/cloud-backup/"
      }
    },
    {
      "id": "3329c28e91",
      "kind": "do",
      "severity": "critical",
      "text": "Encrypt the backup with a key derived from the recovery words, so the words and the backup restore everything with nothing else to remember.",
      "url": "https://www.bitcoinsv.design/guide/rule/3329c28e91/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/cloud-backup/"
      }
    },
    {
      "id": "48e07a4783",
      "kind": "do",
      "severity": "critical",
      "text": "Say on the setup screen that nobody else can open or reset this backup: \"Only your recovery words can open this backup. Nobody can reset them, including us.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/48e07a4783/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/cloud-backup/"
      }
    },
    {
      "id": "d13e35fd6e",
      "kind": "dont",
      "severity": "critical",
      "text": "Derive the encryption key from anything the provider also holds. If they can decrypt it, this is custody and the screen should not say otherwise.",
      "url": "https://www.bitcoinsv.design/guide/rule/d13e35fd6e/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/cloud-backup/"
      }
    },
    {
      "id": "b4d9b31c84",
      "kind": "do",
      "severity": "critical",
      "text": "Test recovery by wiping a device, not by logging out.",
      "url": "https://www.bitcoinsv.design/guide/rule/b4d9b31c84/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/cloud-backup/"
      }
    },
    {
      "id": "360c4bae8b",
      "kind": "do",
      "severity": "critical",
      "text": "Say on this screen that it does not back up the keys. A user who sets this up and sees a tick will reasonably conclude they are finished. \"Your wallet backup restores your records. Your recovery words restore your keys, and you still need to write them down.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/360c4bae8b/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/cloud-backup/"
      }
    },
    {
      "id": "7b87f637ac",
      "kind": "dont",
      "severity": "critical",
      "text": "Tell users \"these words are your wallet\" unless your wallet can restore everything from the words alone. A user who believes it will one day restore an empty-looking wallet and conclude the money is gone.",
      "url": "https://www.bitcoinsv.design/guide/rule/7b87f637ac/",
      "page": {
        "title": "Backup and recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/landing-page/"
      }
    },
    {
      "id": "969c5ee46a",
      "kind": "dont",
      "severity": "critical",
      "text": "Call the whole thing \"backup\" and show one tick. That is the error this page exists to prevent.",
      "url": "https://www.bitcoinsv.design/guide/rule/969c5ee46a/",
      "page": {
        "title": "Backup and recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/landing-page/"
      }
    },
    {
      "id": "b9cea7af28",
      "kind": "do",
      "severity": "critical",
      "text": "Walk the recovery path assuming the device is gone, not locked, and remove anything that only exists on it.",
      "url": "https://www.bitcoinsv.design/guide/rule/b9cea7af28/",
      "page": {
        "title": "Backup and recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/landing-page/"
      }
    },
    {
      "id": "55c4347112",
      "kind": "do",
      "severity": "critical",
      "text": "Explain first, in two sentences: what the words do, and that a photograph of them is a copy of the money. Then show them.",
      "url": "https://www.bitcoinsv.design/guide/rule/55c4347112/",
      "page": {
        "title": "Manual backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/manual-backup/"
      }
    },
    {
      "id": "5836d4dc2f",
      "kind": "do",
      "severity": "critical",
      "text": "Disable screenshots on this screen where the platform allows it, and say why rather than failing silently.",
      "url": "https://www.bitcoinsv.design/guide/rule/5836d4dc2f/",
      "page": {
        "title": "Manual backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/manual-backup/"
      }
    },
    {
      "id": "bcf92277dd",
      "kind": "dont",
      "severity": "critical",
      "text": "Offer copy to clipboard. The clipboard is readable by other apps and syncs between devices.",
      "url": "https://www.bitcoinsv.design/guide/rule/bcf92277dd/",
      "page": {
        "title": "Manual backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/manual-backup/"
      }
    },
    {
      "id": "805502c7da",
      "kind": "do",
      "severity": "critical",
      "text": "Offer shares as an alternative, not an addition. Words and shares are two encodings of the same secret, so holding both makes two complete copies to protect rather than a safer arrangement.",
      "url": "https://www.bitcoinsv.design/guide/rule/805502c7da/",
      "page": {
        "title": "Manual backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/manual-backup/"
      }
    },
    {
      "id": "8b17310f57",
      "kind": "do",
      "severity": "critical",
      "text": "When the keys are restored but no wallet backup is found, say so: \"Your keys are restored. We could not find your wallet backup, so some payments may be missing. Anything you receive from now on will appear normally.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/8b17310f57/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "8d9414d260",
      "kind": "dont",
      "severity": "critical",
      "text": "Report a balance of zero as though it were a fact. It is the balance of what the wallet currently knows about.",
      "url": "https://www.bitcoinsv.design/guide/rule/8d9414d260/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "c35ab608d2",
      "kind": "do",
      "severity": "critical",
      "text": "Re-establish the backup on the new device, and say so. A recovered wallet with no backup is one failure away from the same situation.",
      "url": "https://www.bitcoinsv.design/guide/rule/c35ab608d2/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "c2ecdfda32",
      "kind": "do",
      "severity": "critical",
      "text": "Run a full drill before the product holds real money: fund it, make payments across several counterparties, export, delete the installation, remove your own service from the path, and restore on a clean device with a different compatible wallet. See Backups.",
      "url": "https://www.bitcoinsv.design/guide/rule/c2ecdfda32/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "8825d2c974",
      "kind": "dont",
      "severity": "critical",
      "text": "Ship a recovery flow that has only been tested with the original app still installed. That is the one situation it will not be used in.",
      "url": "https://www.bitcoinsv.design/guide/rule/8825d2c974/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "18966d7037",
      "kind": "dont",
      "severity": "critical",
      "text": "Finish setup without the user having restored from it once, with a small amount. An untested multi-key wallet has more ways to fail than a single-key one.",
      "url": "https://www.bitcoinsv.design/guide/rule/18966d7037/",
      "page": {
        "title": "Savings wallet",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/"
      }
    },
    {
      "id": "3e6a8e94db",
      "kind": "dont",
      "severity": "critical",
      "text": "Let the limit be raised with a single key. Raising the threshold for spending is itself a high-value action and needs the quorum.",
      "url": "https://www.bitcoinsv.design/guide/rule/3e6a8e94db/",
      "page": {
        "title": "Savings wallet",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/"
      }
    },
    {
      "id": "3b0fcb147c",
      "kind": "dont",
      "severity": "critical",
      "text": "Let the everyday wallet pull from savings on its own. A compromised app would drain both, which defeats the whole arrangement. See Multiple wallets.",
      "url": "https://www.bitcoinsv.design/guide/rule/3b0fcb147c/",
      "page": {
        "title": "Savings wallet",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/"
      }
    },
    {
      "id": "c85e78c073",
      "kind": "do",
      "severity": "critical",
      "text": "Move the funds to a new arrangement when a key is lost, and say why: the old key still works on every output it is part of until the money moves.",
      "url": "https://www.bitcoinsv.design/guide/rule/c85e78c073/",
      "page": {
        "title": "Savings wallet",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/"
      }
    },
    {
      "id": "2d50f1ba9d",
      "kind": "do",
      "severity": "critical",
      "text": "Back up the wallet configuration alongside the keys, and include it in the recovery drill. A quorum of signers with no record of the arrangement cannot spend. See Backups.",
      "url": "https://www.bitcoinsv.design/guide/rule/2d50f1ba9d/",
      "page": {
        "title": "Savings wallet",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/"
      }
    },
    {
      "id": "a67beef669",
      "kind": "dont",
      "severity": "critical",
      "text": "Offer a period shorter than a few months. A path that opens while somebody is on a long trip is a theft risk dressed as a feature.",
      "url": "https://www.bitcoinsv.design/guide/rule/a67beef669/",
      "page": {
        "title": "Time-based recovery",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/time-based-recovery/"
      }
    },
    {
      "id": "6b029ec268",
      "kind": "do",
      "severity": "critical",
      "text": "Make sure they keep the pre-signed transaction, since without it the path is theoretical. The wallet should hold it and the backup should include it.",
      "url": "https://www.bitcoinsv.design/guide/rule/6b029ec268/",
      "page": {
        "title": "Time-based recovery",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/time-based-recovery/"
      }
    },
    {
      "id": "83ba29796b",
      "kind": "dont",
      "severity": "critical",
      "text": "Add somebody to a recovery path without telling them. The arrangement only works if they still have their key when it matters.",
      "url": "https://www.bitcoinsv.design/guide/rule/83ba29796b/",
      "page": {
        "title": "Time-based recovery",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/time-based-recovery/"
      }
    },
    {
      "id": "80b2f24149",
      "kind": "do",
      "severity": "critical",
      "text": "Send the new recovery transaction to the recovery people as part of every refresh, and show on the home screen anyone who has not received it.",
      "url": "https://www.bitcoinsv.design/guide/rule/80b2f24149/",
      "page": {
        "title": "Time-based recovery",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/time-based-recovery/"
      }
    },
    {
      "id": "03a855b0c8",
      "kind": "do",
      "severity": "critical",
      "text": "Treat it as a change with consequences: move the money to new outputs first, so the removed person's copy stops working, then say who was removed and send the new transaction to the people who remain.",
      "url": "https://www.bitcoinsv.design/guide/rule/03a855b0c8/",
      "page": {
        "title": "Time-based recovery",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/time-based-recovery/"
      }
    },
    {
      "id": "9f8f455aa6",
      "kind": "dont",
      "severity": "critical",
      "text": "Let somebody be removed from a recovery path without the wallet confirming the replacement transaction actually reached everybody who needs it.",
      "url": "https://www.bitcoinsv.design/guide/rule/9f8f455aa6/",
      "page": {
        "title": "Time-based recovery",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/time-based-recovery/"
      }
    },
    {
      "id": "3e4771352c",
      "kind": "do",
      "severity": "critical",
      "text": "The pre-signed transaction is the part other backup designs have no slot for, and the part that makes this arrangement real. Back it up with the configuration, re-export it every time it is rebuilt, and include it in the recovery drill. See Backups.",
      "url": "https://www.bitcoinsv.design/guide/rule/3e4771352c/",
      "page": {
        "title": "Time-based recovery",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/time-based-recovery/"
      }
    },
    {
      "id": "91b6642acd",
      "kind": "dont",
      "severity": "critical",
      "text": "Let the wallet hold more than the rehearsal amount until the recovery path is built and every beneficiary has a copy. When the real money arrives, rebuild the path against it: money received after signing is not covered until the next refresh.",
      "url": "https://www.bitcoinsv.design/guide/rule/91b6642acd/",
      "page": {
        "title": "Wallet creation",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/wallet-creation/"
      }
    },
    {
      "id": "4015b36345",
      "kind": "do",
      "severity": "critical",
      "text": "Require a rehearsal with a small amount before the wallet holds anything real: fund it, spend from it with two keys, then build the recovery path and confirm every beneficiary has it.",
      "url": "https://www.bitcoinsv.design/guide/rule/4015b36345/",
      "page": {
        "title": "Wallet creation",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/wallet-creation/"
      }
    },
    {
      "id": "62829388dc",
      "kind": "do",
      "severity": "critical",
      "text": "Re-send the pre-signed transaction every time it is rebuilt, which is after every payment in or out and every refresh. An out-of-date copy either spends money that has already moved, and fails, or misses money the wallet received since.",
      "url": "https://www.bitcoinsv.design/guide/rule/62829388dc/",
      "page": {
        "title": "Onboarding cosigners",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/onboarding-cosigners/"
      }
    },
    {
      "id": "308a98d154",
      "kind": "do",
      "severity": "critical",
      "text": "Rebuild and redistribute it automatically after every payment in or out, and show on the home screen when a beneficiary is holding an out-of-date copy.",
      "url": "https://www.bitcoinsv.design/guide/rule/308a98d154/",
      "page": {
        "title": "Backup",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/backup/"
      }
    },
    {
      "id": "ad99aa9cc4",
      "kind": "dont",
      "severity": "critical",
      "text": "Treat it as a one-time export during setup. It will be wrong after the first payment.",
      "url": "https://www.bitcoinsv.design/guide/rule/ad99aa9cc4/",
      "page": {
        "title": "Backup",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/backup/"
      }
    },
    {
      "id": "bdfbad1985",
      "kind": "dont",
      "severity": "critical",
      "text": "Put key material in it. It is a map, not a key. It should be safe to leave with a solicitor.",
      "url": "https://www.bitcoinsv.design/guide/rule/bdfbad1985/",
      "page": {
        "title": "Backup",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/backup/"
      }
    },
    {
      "id": "0d296f6e0d",
      "kind": "do",
      "severity": "critical",
      "text": "Check the recovery path assumes the owner's devices are gone. Every step that needs something only on their phone fails at exactly the moment it is needed.",
      "url": "https://www.bitcoinsv.design/guide/rule/0d296f6e0d/",
      "page": {
        "title": "Backup",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/backup/"
      }
    },
    {
      "id": "becbb8448d",
      "kind": "dont",
      "severity": "critical",
      "text": "Put the configuration and a quorum of key material in the same place. Together they are the money.",
      "url": "https://www.bitcoinsv.design/guide/rule/becbb8448d/",
      "page": {
        "title": "Backup",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/backup/"
      }
    },
    {
      "id": "5c4c016184",
      "kind": "do",
      "severity": "critical",
      "text": "Run a full drill before the wallet holds anything real: fund it, export everything, delete the owner's installation, and have a beneficiary recover using only the document and their own key.",
      "url": "https://www.bitcoinsv.design/guide/rule/5c4c016184/",
      "page": {
        "title": "Backup",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/backup/"
      }
    },
    {
      "id": "aa8881fd26",
      "kind": "do",
      "severity": "critical",
      "text": "Make sure every beneficiary gets the new transaction, and tell them the old one stopped working when the money moved. Two valid-looking copies with different dates is the worst state for somebody using this in an emergency.",
      "url": "https://www.bitcoinsv.design/guide/rule/aa8881fd26/",
      "page": {
        "title": "Making changes",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/making-changes/"
      }
    },
    {
      "id": "180fdb66ea",
      "kind": "do",
      "severity": "critical",
      "text": "Make the new wallet's backup part of its creation, not a later prompt. A second wallet with no backup is a second way to lose money.",
      "url": "https://www.bitcoinsv.design/guide/rule/180fdb66ea/",
      "page": {
        "title": "Multiple wallets",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/multiple-wallets/"
      }
    },
    {
      "id": "f85efeacfa",
      "kind": "dont",
      "severity": "critical",
      "text": "Offer to connect an app to the savings wallet. A savings wallet that accepts app requests is an everyday wallet with a misleading name.",
      "url": "https://www.bitcoinsv.design/guide/rule/f85efeacfa/",
      "page": {
        "title": "Multiple wallets",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/multiple-wallets/"
      }
    },
    {
      "id": "d68af135f3",
      "kind": "dont",
      "severity": "critical",
      "text": "Let a recovery key spend alone. It should be one of a quorum, not a back door, or the arrangement is not shared control.",
      "url": "https://www.bitcoinsv.design/guide/rule/d68af135f3/",
      "page": {
        "title": "Shared wallet",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/shared-wallet/"
      }
    },
    {
      "id": "dc76c094e7",
      "kind": "do",
      "severity": "critical",
      "text": "Name the article being bought on the wallet's payment sheet, so the reader can see that the thing she tapped is the thing she is paying for.",
      "url": "https://www.bitcoinsv.design/guide/rule/dc76c094e7/",
      "page": {
        "title": "First visit and connecting",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/first-visit/"
      }
    },
    {
      "id": "aa6089c9cb",
      "kind": "dont",
      "severity": "critical",
      "text": "Charge for an article the reader has already bought, whether she returns to it on the same day or a month later.",
      "url": "https://www.bitcoinsv.design/guide/rule/aa6089c9cb/",
      "page": {
        "title": "Reading and the meter",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/reading/"
      }
    },
    {
      "id": "2981555d83",
      "kind": "do",
      "severity": "critical",
      "text": "Stop charging the moment the reader taps Stop, before any confirmation or animation, and say how much she spent today.",
      "url": "https://www.bitcoinsv.design/guide/rule/2981555d83/",
      "page": {
        "title": "Reading and the meter",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/reading/"
      }
    },
    {
      "id": "08826b6288",
      "kind": "dont",
      "severity": "critical",
      "text": "Show Try again on an article while the wallet reports its payment as still being sent.",
      "url": "https://www.bitcoinsv.design/guide/rule/08826b6288/",
      "page": {
        "title": "Reading and the meter",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/reading/"
      }
    },
    {
      "id": "cef01aa4a6",
      "kind": "do",
      "severity": "critical",
      "text": "Show on the review screen the same sats amount the wallet's prompt will show, and if the rate moves before Anna presses the button, update the figure on this screen first rather than letting the wallet show a different number.",
      "url": "https://www.bitcoinsv.design/guide/rule/cef01aa4a6/",
      "page": {
        "title": "Buying a ticket",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/buying-a-ticket/"
      }
    },
    {
      "id": "9d65fbb29c",
      "kind": "dont",
      "severity": "critical",
      "text": "Add a booking fee or any other charge after the review screen. If the product charges one, it is part of the price shown here.",
      "url": "https://www.bitcoinsv.design/guide/rule/9d65fbb29c/",
      "page": {
        "title": "Buying a ticket",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/buying-a-ticket/"
      }
    },
    {
      "id": "4740a3dd92",
      "kind": "do",
      "severity": "critical",
      "text": "Make a ticket valid at the door from the token alone, so it still works after Anna deletes her data or removes the site from her wallet.",
      "url": "https://www.bitcoinsv.design/guide/rule/4740a3dd92/",
      "page": {
        "title": "Coming back and leaving",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/coming-back-and-leaving/"
      }
    },
    {
      "id": "fa105418c9",
      "kind": "do",
      "severity": "critical",
      "text": "Show the amount and the payee from the payment Scout's wallet refused, and Scout's explanation separately, labelled as Scout's. If the explanation names a different amount, show both and say they disagree.",
      "url": "https://www.bitcoinsv.design/guide/rule/fa105418c9/",
      "page": {
        "title": "While it works",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/while-it-works/"
      }
    },
    {
      "id": "44db19b4c1",
      "kind": "dont",
      "severity": "critical",
      "text": "Put \"Always allow\" or \"Add to Scout's services\" on the approval screen. Widening Scout's scope from a notification is how one odd request becomes a standing permission.",
      "url": "https://www.bitcoinsv.design/guide/rule/44db19b4c1/",
      "page": {
        "title": "While it works",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/while-it-works/"
      }
    },
    {
      "id": "54786d4a9a",
      "kind": "dont",
      "severity": "critical",
      "text": "Let the assistant approve its own request, or accept an approval from anywhere other than Anna's own device.",
      "url": "https://www.bitcoinsv.design/guide/rule/54786d4a9a/",
      "page": {
        "title": "While it works",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/while-it-works/"
      }
    },
    {
      "id": "23eeedf9ef",
      "kind": "do",
      "severity": "critical",
      "text": "Refuse a payment above the price shown on the limits screen, even when it is inside the per-payment limit, and send it to Anna like any other request outside scope.",
      "url": "https://www.bitcoinsv.design/guide/rule/23eeedf9ef/",
      "page": {
        "title": "While it works",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/while-it-works/"
      }
    },
    {
      "id": "5b82904b28",
      "kind": "do",
      "severity": "critical",
      "text": "Cap paid retries to one service at a fixed number per task, show that number on the limits screen, and stop using the service when it is reached. Each retry is another payment, and a loop of small failures is how an agent spends its budget on nothing.",
      "url": "https://www.bitcoinsv.design/guide/rule/5b82904b28/",
      "page": {
        "title": "While it works",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/while-it-works/"
      }
    },
    {
      "id": "35dd3d1ba8",
      "kind": "do",
      "severity": "critical",
      "text": "Make pausing take effect in Scout's wallet, not in the assistant. Spending stops even if the assistant is still running or has not noticed.",
      "url": "https://www.bitcoinsv.design/guide/rule/35dd3d1ba8/",
      "page": {
        "title": "Stopping it",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/stopping-it/"
      }
    },
    {
      "id": "1b0b0bbfed",
      "kind": "do",
      "severity": "critical",
      "text": "Offer only the wallet that funded Scout as the destination for what is left. A payee chosen at the end of a delegation is a payee nobody vetted.",
      "url": "https://www.bitcoinsv.design/guide/rule/1b0b0bbfed/",
      "page": {
        "title": "Stopping it",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/stopping-it/"
      }
    },
    {
      "id": "1f4de4aefa",
      "kind": "do",
      "severity": "critical",
      "text": "Make sure users can move their funds out without your service, and say how in your exposure statement. See Disclose what you use.",
      "url": "https://www.bitcoinsv.design/guide/rule/1f4de4aefa/",
      "page": {
        "title": "Custody as a product decision",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/custody/"
      }
    },
    {
      "id": "c38c5182f8",
      "kind": "do",
      "severity": "critical",
      "text": "Plan what happens to users' money if your company stops, before launch. The plan is part of the product, and users of a service holding a share need it as much as users of a custodial one.",
      "url": "https://www.bitcoinsv.design/guide/rule/c38c5182f8/",
      "page": {
        "title": "Custody as a product decision",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/custody/"
      }
    },
    {
      "id": "5c2cbfbd80",
      "kind": "do",
      "severity": "critical",
      "text": "Run a recovery drill on a wiped device before launch, whichever arrangement you choose, and repeat it after any change to backup or key handling.",
      "url": "https://www.bitcoinsv.design/guide/rule/5c2cbfbd80/",
      "page": {
        "title": "Custody as a product decision",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/custody/"
      }
    },
    {
      "id": "0b8177ceb7",
      "kind": "do",
      "severity": "critical",
      "text": "Train support on the one thing they cannot do. If you do not hold the keys, support must never imply it can recover funds, because that sentence is what impersonators say next.",
      "url": "https://www.bitcoinsv.design/guide/rule/0b8177ceb7/",
      "page": {
        "title": "Custody as a product decision",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/custody/"
      }
    },
    {
      "id": "2d15bfffa6",
      "kind": "do",
      "severity": "critical",
      "text": "Name the network as \"Bitcoin SV\" or \"BSV\" wherever a user adds money, takes it out, or pastes an address, even in a product that names it nowhere else.",
      "url": "https://www.bitcoinsv.design/guide/rule/2d15bfffa6/",
      "page": {
        "title": "Talking about BSV",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/talking-about-bsv/"
      }
    },
    {
      "id": "1dcc7454f0",
      "kind": "dont",
      "severity": "critical",
      "text": "Protect a backup with a password manager or account that lived only on the lost phone. That is not a backup. See Cloud backup › The circular-dependency trap.",
      "url": "https://www.bitcoinsv.design/guide/rule/1dcc7454f0/",
      "page": {
        "title": "Backups",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/backups/"
      }
    },
    {
      "id": "79072d4e71",
      "kind": "do",
      "severity": "critical",
      "text": "Never tell users \"these words are your wallet\" unless that is true for your wallet. Say plainly what the backup covers and what it doesn't.",
      "url": "https://www.bitcoinsv.design/guide/rule/79072d4e71/",
      "page": {
        "title": "Backups",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/backups/"
      }
    },
    {
      "id": "d44d6f8652",
      "kind": "do",
      "severity": "critical",
      "text": "Make the recipient and the amount unmistakable on the review screen. Once accepted, a payment cannot be cancelled.",
      "url": "https://www.bitcoinsv.design/guide/rule/d44d6f8652/",
      "page": {
        "title": "Transactions",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/transactions/"
      }
    },
    {
      "id": "435cfa246c",
      "kind": "do",
      "severity": "critical",
      "text": "Warn when a user pastes an address rather than choosing a handle or contact, and offer handles and contacts first everywhere you can. See Wrong-network payments.",
      "url": "https://www.bitcoinsv.design/guide/rule/435cfa246c/",
      "page": {
        "title": "Transactions",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/transactions/"
      }
    },
    {
      "id": "e9ca132d95",
      "kind": "dont",
      "severity": "critical",
      "text": "Let the everyday wallet draw from savings on its own. A compromised app could then drain both.",
      "url": "https://www.bitcoinsv.design/guide/rule/e9ca132d95/",
      "page": {
        "title": "Wallet setups",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/wallet-setups/"
      }
    },
    {
      "id": "9e9222d5c4",
      "kind": "dont",
      "severity": "critical",
      "text": "Give an agent wallet access to savings, the owner's identity key or Passes, or the ability to reveal key linkage.",
      "url": "https://www.bitcoinsv.design/guide/rule/9e9222d5c4/",
      "page": {
        "title": "Wallet setups",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/wallet-setups/"
      }
    },
    {
      "id": "282a044b2d",
      "kind": "do",
      "severity": "critical",
      "text": "Show the network on every receive screen that shows a plain address, and warn on send when an address is pasted rather than picked.",
      "url": "https://www.bitcoinsv.design/guide/rule/282a044b2d/",
      "page": {
        "title": "Legacy compatibility",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/legacy-compatibility/"
      }
    },
    {
      "id": "cce4fe671e",
      "kind": "do",
      "severity": "critical",
      "text": "When an import of recovery words finds nothing, check the other derivation path before telling the user the wallet is empty.",
      "url": "https://www.bitcoinsv.design/guide/rule/cce4fe671e/",
      "page": {
        "title": "Legacy compatibility",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/legacy-compatibility/"
      }
    },
    {
      "id": "bd0e68876f",
      "kind": "dont",
      "severity": "critical",
      "text": "Let the master identity key sign payments or messages directly, and never expose a child private key derived against anyone.",
      "url": "https://www.bitcoinsv.design/guide/rule/bd0e68876f/",
      "page": {
        "title": "Overview",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/overview/"
      }
    },
    {
      "id": "78bc2950f3",
      "kind": "do",
      "severity": "critical",
      "text": "Encrypt on the device, before anything is sent. The service should only ever hold a blob it cannot read.",
      "url": "https://www.bitcoinsv.design/guide/rule/78bc2950f3/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/cloud-backup/"
      }
    },
    {
      "id": "f728c8f93c",
      "kind": "dont",
      "severity": "critical",
      "text": "Store the root private key on a remote service in a form the service can decrypt. That is custody, and it should be described as custody.",
      "url": "https://www.bitcoinsv.design/guide/rule/f728c8f93c/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/cloud-backup/"
      }
    },
    {
      "id": "c22b55aa20",
      "kind": "do",
      "severity": "critical",
      "text": "Walk the recovery path assuming the device is gone, not locked, and remove every step that needs something only that device had.",
      "url": "https://www.bitcoinsv.design/guide/rule/c22b55aa20/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/cloud-backup/"
      }
    },
    {
      "id": "fa511c9f66",
      "kind": "dont",
      "severity": "critical",
      "text": "Derive the encryption key from something the provider also holds. If the provider can decrypt it, the user is not self-custodying and the screen should not say they are.",
      "url": "https://www.bitcoinsv.design/guide/rule/fa511c9f66/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/cloud-backup/"
      }
    },
    {
      "id": "0994527ea9",
      "kind": "do",
      "severity": "critical",
      "text": "Show when the last backup ran, on a screen the user sees often. A backup that silently stopped three months ago fails exactly when it is needed.",
      "url": "https://www.bitcoinsv.design/guide/rule/0994527ea9/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/cloud-backup/"
      }
    },
    {
      "id": "2377e802d8",
      "kind": "dont",
      "severity": "critical",
      "text": "Imply that recovery words move between wallet families. \"Compatible with any bitcoin wallet\" is false here, and a user who believes it will conclude their money is gone.",
      "url": "https://www.bitcoinsv.design/guide/rule/2377e802d8/",
      "page": {
        "title": "Manual backup",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/manual-backup/"
      }
    },
    {
      "id": "fd2bd65519",
      "kind": "dont",
      "severity": "critical",
      "text": "Let the words reach a screenshot, a cloud note, a password manager on the same device, or a chat message. Disable screenshots on that screen where the platform allows it, and say why.",
      "url": "https://www.bitcoinsv.design/guide/rule/fd2bd65519/",
      "page": {
        "title": "Manual backup",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/manual-backup/"
      }
    },
    {
      "id": "3bd229a88f",
      "kind": "do",
      "severity": "critical",
      "text": "Treat the signer as one key in a set rather than the only key, where the amount justifies it. A single signing device that is lost is a total loss. See Multi-key.",
      "url": "https://www.bitcoinsv.design/guide/rule/3bd229a88f/",
      "page": {
        "title": "External signers",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/external-signers/"
      }
    },
    {
      "id": "04eea61984",
      "kind": "do",
      "severity": "critical",
      "text": "Say what happens if the device breaks, during setup, not during recovery. The answer is the recovery material, and the user should have it before they need it.",
      "url": "https://www.bitcoinsv.design/guide/rule/04eea61984/",
      "page": {
        "title": "External signers",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/external-signers/"
      }
    },
    {
      "id": "63bb703e74",
      "kind": "do",
      "severity": "critical",
      "text": "Back up the wallet configuration with the same care as a key. It names every key in the arrangement.",
      "url": "https://www.bitcoinsv.design/guide/rule/63bb703e74/",
      "page": {
        "title": "Multi-key",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/multi-key/"
      }
    },
    {
      "id": "0b9964e35a",
      "kind": "dont",
      "severity": "critical",
      "text": "Shorten an address with an ellipsis where somebody is checking it. Middle elision is acceptable in a list row, never on a confirmation.",
      "url": "https://www.bitcoinsv.design/guide/rule/0b9964e35a/",
      "page": {
        "title": "Address",
        "section": "Glossary",
        "url": "https://www.bitcoinsv.design/guide/glossary/address/"
      }
    },
    {
      "id": "2a1abdf36f",
      "kind": "dont",
      "severity": "high",
      "text": "Require an identity document, an email address or a phone number to hold money. Where a regulation requires it for a particular feature, gate that feature, not the wallet.",
      "url": "https://www.bitcoinsv.design/guide/rule/2a1abdf36f/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "0d8433711c",
      "kind": "do",
      "severity": "high",
      "text": "Give every wallet an export the user holds themselves, and a send to a plain address that works without your servers. See Legacy compatibility.",
      "url": "https://www.bitcoinsv.design/guide/rule/0d8433711c/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "6db3fdafda",
      "kind": "do",
      "severity": "high",
      "text": "Before revealing key linkage for a counterparty, tell the user it exposes every payment between them and that counterparty, past and future. See Wallet privacy.",
      "url": "https://www.bitcoinsv.design/guide/rule/6db3fdafda/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "ae4738597e",
      "kind": "do",
      "severity": "high",
      "text": "Block screenshots on the screen showing recovery words, where the platform allows it.",
      "url": "https://www.bitcoinsv.design/guide/rule/ae4738597e/",
      "page": {
        "title": "Hardware categories",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/hardware/"
      }
    },
    {
      "id": "8168773689",
      "kind": "do",
      "severity": "high",
      "text": "Be honest about the whole journey. A product that advertises a transfer costing less than 1p and leaves the recipient paying several percent at an exchange has not saved anybody anything.",
      "url": "https://www.bitcoinsv.design/guide/rule/8168773689/",
      "page": {
        "title": "Personal finance",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/personal-finance/"
      }
    },
    {
      "id": "11140daf0a",
      "kind": "dont",
      "severity": "high",
      "text": "Put a savings total and a quick-pay action on the same screen. The total makes the payment feel smaller than it is.",
      "url": "https://www.bitcoinsv.design/guide/rule/11140daf0a/",
      "page": {
        "title": "Spending, saving and delegating",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/spending-saving-delegating/"
      }
    },
    {
      "id": "ca4deb21a3",
      "kind": "do",
      "severity": "high",
      "text": "Let the weight of a confirmation follow its consequence: whether it can be undone, how large the amount is against what the wallet holds, whether the recipient is new, and whether it grants something that keeps working after today.",
      "url": "https://www.bitcoinsv.design/guide/rule/ca4deb21a3/",
      "page": {
        "title": "Getting to know your users",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/getting-to-know-your-users/"
      }
    },
    {
      "id": "cf6fbcfa5c",
      "kind": "dont",
      "severity": "high",
      "text": "Use one confirmation style for everything. People learn the shape of \"confirm\" within a week and stop reading what is inside it.",
      "url": "https://www.bitcoinsv.design/guide/rule/cf6fbcfa5c/",
      "page": {
        "title": "Getting to know your users",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/getting-to-know-your-users/"
      }
    },
    {
      "id": "9653a8c175",
      "kind": "do",
      "severity": "high",
      "text": "Give every failure on the send and connect flows a message that says whether money moved: \"Nothing left your wallet\" or \"The payment went through\".",
      "url": "https://www.bitcoinsv.design/guide/rule/9653a8c175/",
      "page": {
        "title": "Common user flows",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/common-user-flows/"
      }
    },
    {
      "id": "383024fd53",
      "kind": "do",
      "severity": "high",
      "text": "Export the wallet backup in the wallet data format (BRC-38 and BRC-39), to a file the user holds. If your format is your own, say so plainly and publish it.",
      "url": "https://www.bitcoinsv.design/guide/rule/383024fd53/",
      "page": {
        "title": "Interoperability",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/interoperability/"
      }
    },
    {
      "id": "783df4309f",
      "kind": "do",
      "severity": "high",
      "text": "Make a wallet's permission prompt readable in full by a screen reader: who is asking, what for, and for how long. A grant the person could not hear is not consent.",
      "url": "https://www.bitcoinsv.design/guide/rule/783df4309f/",
      "page": {
        "title": "Accessibility",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/accessibility/"
      }
    },
    {
      "id": "5d5c53b7cd",
      "kind": "do",
      "severity": "high",
      "text": "Request each permission when the user first uses the feature that needs it.",
      "url": "https://www.bitcoinsv.design/guide/rule/5d5c53b7cd/",
      "page": {
        "title": "Connecting a wallet",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/connecting-a-wallet/"
      }
    },
    {
      "id": "09052402ed",
      "kind": "dont",
      "severity": "high",
      "text": "Bundle every permission into one approval screen during onboarding.",
      "url": "https://www.bitcoinsv.design/guide/rule/09052402ed/",
      "page": {
        "title": "Connecting a wallet",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/connecting-a-wallet/"
      }
    },
    {
      "id": "a4593d9103",
      "kind": "dont",
      "severity": "high",
      "text": "Preselect broad permissions, describe a permission as less than it is, or show a refused prompt again until the user gives in. All three teach people to tap Allow without reading.",
      "url": "https://www.bitcoinsv.design/guide/rule/a4593d9103/",
      "page": {
        "title": "Permissions and allowances",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/permissions-and-allowances/"
      }
    },
    {
      "id": "2dc3c0d133",
      "kind": "do",
      "severity": "high",
      "text": "Show the app's name from its manifest beside its verified domain in every prompt, and the domain alone when the app has no manifest.",
      "url": "https://www.bitcoinsv.design/guide/rule/2dc3c0d133/",
      "page": {
        "title": "Permissions and allowances",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/permissions-and-allowances/"
      }
    },
    {
      "id": "5be139d90a",
      "kind": "dont",
      "severity": "high",
      "text": "Cancel a wallet request because the user has not answered yet. A timeout turns a user who was reading into an error.",
      "url": "https://www.bitcoinsv.design/guide/rule/5be139d90a/",
      "page": {
        "title": "Permissions and allowances",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/permissions-and-allowances/"
      }
    },
    {
      "id": "7b093f1075",
      "kind": "do",
      "severity": "high",
      "text": "Cap an allowance per payment, per hour and per day as well as per month, where the wallet supports it, and show every cap in the same prompt.",
      "url": "https://www.bitcoinsv.design/guide/rule/7b093f1075/",
      "page": {
        "title": "Permissions and allowances",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/permissions-and-allowances/"
      }
    },
    {
      "id": "aad955fa0f",
      "kind": "do",
      "severity": "high",
      "text": "Ask the user again when an amount is unusually high, the recipient is new, the payment pattern changes, an allowance that has ended would start again, or the app asks for a new protocol, basket, Pass field, the identity key or key linkage.",
      "url": "https://www.bitcoinsv.design/guide/rule/aad955fa0f/",
      "page": {
        "title": "Permissions and allowances",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/permissions-and-allowances/"
      }
    },
    {
      "id": "2ed9e55238",
      "kind": "do",
      "severity": "high",
      "text": "Make a revoke take effect at once, and say what stops working: \"The Satoshi Vision can no longer charge you. It will ask again when you next open an article.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/2ed9e55238/",
      "page": {
        "title": "Permissions and allowances",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/permissions-and-allowances/"
      }
    },
    {
      "id": "59118a881e",
      "kind": "do",
      "severity": "high",
      "text": "Ask for key linkage fresh each time, name who receives it and what they learn, and keep a local record of what was revealed to whom.",
      "url": "https://www.bitcoinsv.design/guide/rule/59118a881e/",
      "page": {
        "title": "Permissions and allowances",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/permissions-and-allowances/"
      }
    },
    {
      "id": "6cb55dd598",
      "kind": "dont",
      "severity": "high",
      "text": "Ask for an email address or a password as part of signing in. If you need an email for receipts, ask for it afterwards, as its own optional step.",
      "url": "https://www.bitcoinsv.design/guide/rule/6cb55dd598/",
      "page": {
        "title": "Signing in",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/signing-in/"
      }
    },
    {
      "id": "8f450792bc",
      "kind": "do",
      "severity": "high",
      "text": "Sign users in with a key derived for your app. If your database leaks, the leaked keys can't be matched to the same person's activity elsewhere.",
      "url": "https://www.bitcoinsv.design/guide/rule/8f450792bc/",
      "page": {
        "title": "Signing in",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/signing-in/"
      }
    },
    {
      "id": "99b4b29b25",
      "kind": "dont",
      "severity": "high",
      "text": "Use the root identity key as the account ID for a social network, game, shop or payment service. One breach then becomes a cross-app tracking event.",
      "url": "https://www.bitcoinsv.design/guide/rule/99b4b29b25/",
      "page": {
        "title": "Signing in",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/signing-in/"
      }
    },
    {
      "id": "3763695367",
      "kind": "dont",
      "severity": "high",
      "text": "Request the wallet's root identity key without a reason you can state in the prompt. Approving a sign-in or a payment must never include it.",
      "url": "https://www.bitcoinsv.design/guide/rule/3763695367/",
      "page": {
        "title": "Signing in",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/signing-in/"
      }
    },
    {
      "id": "db6818a134",
      "kind": "do",
      "severity": "high",
      "text": "Say on sign-out that the app is still connected in the wallet, and where to disconnect it: \"Signed out. Pixel Arcade is still listed in your wallet. Remove it there to stop it asking.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/db6818a134/",
      "page": {
        "title": "Signing in",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/signing-in/"
      }
    },
    {
      "id": "f2c89e599b",
      "kind": "dont",
      "severity": "high",
      "text": "Call sign-out \"Disconnect wallet\". It does not touch the wallet's permissions, and the user will think it did.",
      "url": "https://www.bitcoinsv.design/guide/rule/f2c89e599b/",
      "page": {
        "title": "Signing in",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/signing-in/"
      }
    },
    {
      "id": "3087625834",
      "kind": "do",
      "severity": "high",
      "text": "Warn plainly when a handle does not resolve, naming what failed: no such handle, domain unreachable, certificate invalid. \"Couldn't find that\" sends people to try again rather than to look harder at what they typed.",
      "url": "https://www.bitcoinsv.design/guide/rule/3087625834/",
      "page": {
        "title": "Paying by handle",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/paying-by-handle/"
      }
    },
    {
      "id": "b1f4906d93",
      "kind": "dont",
      "severity": "high",
      "text": "Fall back silently to a plain-address payment when a handle resolves but does not support the peer-to-peer flow. Say so, because the confirmation the user gets is weaker. See Legacy compatibility.",
      "url": "https://www.bitcoinsv.design/guide/rule/b1f4906d93/",
      "page": {
        "title": "Paying by handle",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/paying-by-handle/"
      }
    },
    {
      "id": "4e724b402c",
      "kind": "do",
      "severity": "high",
      "text": "Use Bitcoin SV or BSV on screen: \"Send BSV\", \"Your BSV balance\", \"Bitcoin SV address\". Use one of the two consistently within a screen.",
      "url": "https://www.bitcoinsv.design/guide/rule/4e724b402c/",
      "page": {
        "title": "Amounts and units",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/amounts-and-units/"
      }
    },
    {
      "id": "ff7e7b18ab",
      "kind": "dont",
      "severity": "high",
      "text": "Write \"bitcoin\" alone on a screen where somebody is about to move money. Used precisely it is an umbrella covering several chains, so it is the one word that cannot tell a user which network they are on. See Bitcoin.",
      "url": "https://www.bitcoinsv.design/guide/rule/ff7e7b18ab/",
      "page": {
        "title": "Amounts and units",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/amounts-and-units/"
      }
    },
    {
      "id": "ab0796fbfa",
      "kind": "do",
      "severity": "high",
      "text": "Say when a converted figure is an estimate, and roughly how fresh the rate is. A price that silently drifts is worse than one labelled approximate.",
      "url": "https://www.bitcoinsv.design/guide/rule/ab0796fbfa/",
      "page": {
        "title": "Amounts and units",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/amounts-and-units/"
      }
    },
    {
      "id": "19ba942704",
      "kind": "do",
      "severity": "high",
      "text": "Keep one bitcoin unit per screen. Mixing \"0.0001 BSV\" and \"10,000 sats\" in one view asks the user to do arithmetic to compare two things you wrote.",
      "url": "https://www.bitcoinsv.design/guide/rule/19ba942704/",
      "page": {
        "title": "Amounts and units",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/amounts-and-units/"
      }
    },
    {
      "id": "e8d6661969",
      "kind": "dont",
      "severity": "high",
      "text": "Abbreviate amounts in a financial context. \"12.5k sats\" saves four characters and introduces a rounding question.",
      "url": "https://www.bitcoinsv.design/guide/rule/e8d6661969/",
      "page": {
        "title": "Amounts and units",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/amounts-and-units/"
      }
    },
    {
      "id": "28ab6b7ed7",
      "kind": "dont",
      "severity": "high",
      "text": "Shorten a number with an ellipsis, ever. Reformat it or let it wrap.",
      "url": "https://www.bitcoinsv.design/guide/rule/28ab6b7ed7/",
      "page": {
        "title": "Amounts and units",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/amounts-and-units/"
      }
    },
    {
      "id": "758fae5e4a",
      "kind": "do",
      "severity": "high",
      "text": "Show the running total against the allowance wherever the spending is happening, not only in a settings screen.",
      "url": "https://www.bitcoinsv.design/guide/rule/758fae5e4a/",
      "page": {
        "title": "Charging per use",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/charging-per-use/"
      }
    },
    {
      "id": "780419e009",
      "kind": "do",
      "severity": "high",
      "text": "Put a stop control next to that total. One action, no confirmation, effective immediately.",
      "url": "https://www.bitcoinsv.design/guide/rule/780419e009/",
      "page": {
        "title": "Charging per use",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/charging-per-use/"
      }
    },
    {
      "id": "4399f2f0dc",
      "kind": "dont",
      "severity": "high",
      "text": "Renew an allowance that has ended without asking the user again. A limit that starts again each month within a live grant is normal, provided the reset date is shown beside what is left.",
      "url": "https://www.bitcoinsv.design/guide/rule/4399f2f0dc/",
      "page": {
        "title": "Charging per use",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/charging-per-use/"
      }
    },
    {
      "id": "0b795249b1",
      "kind": "do",
      "severity": "high",
      "text": "Make stopping obvious and instantaneous, and confirm that it stopped. \"Stopped. You spent 340 sats.\" closes the loop.",
      "url": "https://www.bitcoinsv.design/guide/rule/0b795249b1/",
      "page": {
        "title": "Charging per use",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/charging-per-use/"
      }
    },
    {
      "id": "c46631d9e7",
      "kind": "do",
      "severity": "high",
      "text": "Offer a ceiling before starting, not only an allowance. \"Stop at 5,000 sats\" is a different and more reassuring promise.",
      "url": "https://www.bitcoinsv.design/guide/rule/c46631d9e7/",
      "page": {
        "title": "Charging per use",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/charging-per-use/"
      }
    },
    {
      "id": "41ccf96223",
      "kind": "do",
      "severity": "high",
      "text": "Fail towards not charging. A user who got something free will forgive you; one charged twice will not.",
      "url": "https://www.bitcoinsv.design/guide/rule/41ccf96223/",
      "page": {
        "title": "Charging per use",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/charging-per-use/"
      }
    },
    {
      "id": "6221629f1c",
      "kind": "do",
      "severity": "high",
      "text": "Say what happened in plain words: which network it went to, that the money is not lost from the chain but is out of reach from here, and what recovery would require.",
      "url": "https://www.bitcoinsv.design/guide/rule/6221629f1c/",
      "page": {
        "title": "Wrong-network payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/wrong-network-payments/"
      }
    },
    {
      "id": "d3b1447e05",
      "kind": "dont",
      "severity": "high",
      "text": "Promise recovery you cannot deliver. If it needs the other party's cooperation, say that is what it needs.",
      "url": "https://www.bitcoinsv.design/guide/rule/d3b1447e05/",
      "page": {
        "title": "Wrong-network payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/wrong-network-payments/"
      }
    },
    {
      "id": "10b3023998",
      "kind": "do",
      "severity": "high",
      "text": "Say whether money moved in every message that follows a payment attempt, including when the answer is that nothing left the wallet.",
      "url": "https://www.bitcoinsv.design/guide/rule/10b3023998/",
      "page": {
        "title": "Errors and failed payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/errors-and-failed-payments/"
      }
    },
    {
      "id": "8f8a59fa96",
      "kind": "do",
      "severity": "high",
      "text": "Require a human for anything outside the scope: a new payee, a larger amount, a wider permission. Send the person a notification for it, rather than adding it to a list they have to check.",
      "url": "https://www.bitcoinsv.design/guide/rule/8f8a59fa96/",
      "page": {
        "title": "Letting an agent spend",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/letting-an-agent-spend/"
      }
    },
    {
      "id": "e68f2cc069",
      "kind": "do",
      "severity": "high",
      "text": "Record what each payment was for at the moment it happens. Intent cannot be reconstructed afterwards.",
      "url": "https://www.bitcoinsv.design/guide/rule/e68f2cc069/",
      "page": {
        "title": "Letting an agent spend",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/letting-an-agent-spend/"
      }
    },
    {
      "id": "03963e9df4",
      "kind": "do",
      "severity": "high",
      "text": "Surface the unusual rather than the complete. A payee it has never paid, or a payment larger than its usual, belongs at the top; the routine belongs in a total.",
      "url": "https://www.bitcoinsv.design/guide/rule/03963e9df4/",
      "page": {
        "title": "Letting an agent spend",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/letting-an-agent-spend/"
      }
    },
    {
      "id": "74988614f8",
      "kind": "dont",
      "severity": "high",
      "text": "Report agent spending only in a log. A log is for after somebody already suspects something.",
      "url": "https://www.bitcoinsv.design/guide/rule/74988614f8/",
      "page": {
        "title": "Letting an agent spend",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/letting-an-agent-spend/"
      }
    },
    {
      "id": "d715b16a24",
      "kind": "do",
      "severity": "high",
      "text": "Put one control that stops everything, visible wherever the agent is, with no confirmation step. Confirmations are for actions you might regret, and stopping is not one of them.",
      "url": "https://www.bitcoinsv.design/guide/rule/d715b16a24/",
      "page": {
        "title": "Letting an agent spend",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/letting-an-agent-spend/"
      }
    },
    {
      "id": "155356ce9f",
      "kind": "do",
      "severity": "high",
      "text": "Name the agent and its purpose wherever its spending appears. \"Example Assistant, buying search results\" is a thing a person can consent to; \"automated payments\" is not.",
      "url": "https://www.bitcoinsv.design/guide/rule/155356ce9f/",
      "page": {
        "title": "Letting an agent spend",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/letting-an-agent-spend/"
      }
    },
    {
      "id": "468c1a74fb",
      "kind": "dont",
      "severity": "high",
      "text": "Ask for broad wallet access in order to read a token balance. Ask for the basket. An app that wants everything in order to show one number is the reason permission screens get ignored.",
      "url": "https://www.bitcoinsv.design/guide/rule/468c1a74fb/",
      "page": {
        "title": "Holding tokens",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/holding-tokens/"
      }
    },
    {
      "id": "3d6d023dfe",
      "kind": "do",
      "severity": "high",
      "text": "Show provenance as a short human sentence before a trade or a transfer: \"Issued by Example Studio, 3 owners since, unbroken.\" The full chain belongs behind that line, not in front of it.",
      "url": "https://www.bitcoinsv.design/guide/rule/3d6d023dfe/",
      "page": {
        "title": "Holding tokens",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/holding-tokens/"
      }
    },
    {
      "id": "032bc32a78",
      "kind": "do",
      "severity": "high",
      "text": "Resolve the real-or-fake question for the user rather than printing an ID and hoping. Match against issuers they already trust, and say plainly when you cannot.",
      "url": "https://www.bitcoinsv.design/guide/rule/032bc32a78/",
      "page": {
        "title": "Holding tokens",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/holding-tokens/"
      }
    },
    {
      "id": "3ad9441a9c",
      "kind": "dont",
      "severity": "high",
      "text": "Show a token's picture at the size of a decision without the provenance beside it. The picture is the part that is trivial to fake.",
      "url": "https://www.bitcoinsv.design/guide/rule/3ad9441a9c/",
      "page": {
        "title": "Holding tokens",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/holding-tokens/"
      }
    },
    {
      "id": "19b03c2390",
      "kind": "do",
      "severity": "high",
      "text": "Say what is being written on chain, that it cannot be edited later, and what it costs. The cost is a fraction of a penny, which is worth saying out loud because people expect otherwise.",
      "url": "https://www.bitcoinsv.design/guide/rule/19b03c2390/",
      "page": {
        "title": "Holding tokens",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/holding-tokens/"
      }
    },
    {
      "id": "df5ae6683e",
      "kind": "do",
      "severity": "high",
      "text": "Name the issuer wherever the balance appears, not only at acquisition. \"120 GBP, issued by Example Trust\" is the honest form.",
      "url": "https://www.bitcoinsv.design/guide/rule/df5ae6683e/",
      "page": {
        "title": "Holding tokens",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/holding-tokens/"
      }
    },
    {
      "id": "ab34f1e402",
      "kind": "dont",
      "severity": "high",
      "text": "Draw a stablecoin balance in the same type as a BSV balance with no distinction. One is a bearer asset and the other is a claim on a company.",
      "url": "https://www.bitcoinsv.design/guide/rule/ab34f1e402/",
      "page": {
        "title": "Holding tokens",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/holding-tokens/"
      }
    },
    {
      "id": "6c60d5831a",
      "kind": "do",
      "severity": "high",
      "text": "Treat the condition as public when you design it. A recovery path that only works because nobody knows it exists is not a security property.",
      "url": "https://www.bitcoinsv.design/guide/rule/6c60d5831a/",
      "page": {
        "title": "Spending conditions",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/spending-conditions/"
      }
    },
    {
      "id": "f3791442cf",
      "kind": "do",
      "severity": "high",
      "text": "Say \"permanent and public\" in the consent step, in those words, before anything is written.",
      "url": "https://www.bitcoinsv.design/guide/rule/f3791442cf/",
      "page": {
        "title": "Storing data on chain",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/storing-data-on-chain/"
      }
    },
    {
      "id": "5ec4966080",
      "kind": "do",
      "severity": "high",
      "text": "Show exactly what will be written. If it is a hash, say that the document stays on your server and only a fingerprint goes out.",
      "url": "https://www.bitcoinsv.design/guide/rule/5ec4966080/",
      "page": {
        "title": "Storing data on chain",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/storing-data-on-chain/"
      }
    },
    {
      "id": "e608a8eef7",
      "kind": "dont",
      "severity": "high",
      "text": "Offer a delete button for on-chain data. You can stop displaying it. That is not the same thing and the difference is the whole point.",
      "url": "https://www.bitcoinsv.design/guide/rule/e608a8eef7/",
      "page": {
        "title": "Storing data on chain",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/storing-data-on-chain/"
      }
    },
    {
      "id": "f21b5fcb40",
      "kind": "do",
      "severity": "high",
      "text": "Default to the hash. Publishing is the irreversible option and should be the deliberate one.",
      "url": "https://www.bitcoinsv.design/guide/rule/f21b5fcb40/",
      "page": {
        "title": "Storing data on chain",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/storing-data-on-chain/"
      }
    },
    {
      "id": "7162ccb4f6",
      "kind": "do",
      "severity": "high",
      "text": "Make sure the data can still be verified without your overlay. The point of putting it on chain was independence from you.",
      "url": "https://www.bitcoinsv.design/guide/rule/7162ccb4f6/",
      "page": {
        "title": "Storing data on chain",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/storing-data-on-chain/"
      }
    },
    {
      "id": "46b50bb14b",
      "kind": "do",
      "severity": "high",
      "text": "If you build a wallet, show a domain checked by the browser and a name an app gave itself differently, and say plainly when the name has not been checked.",
      "url": "https://www.bitcoinsv.design/guide/rule/46b50bb14b/",
      "page": {
        "title": "Web apps and native apps",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/web-and-native-apps/"
      }
    },
    {
      "id": "25b772932f",
      "kind": "do",
      "severity": "high",
      "text": "If you build a desktop or phone app, ask for less on the first connection than the website would: no standing allowance until the person has used the app and come back to it.",
      "url": "https://www.bitcoinsv.design/guide/rule/25b772932f/",
      "page": {
        "title": "Web apps and native apps",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/web-and-native-apps/"
      }
    },
    {
      "id": "83d92b4597",
      "kind": "dont",
      "severity": "high",
      "text": "Ask for an email address, a phone number or an identity document to create a wallet. None is needed, and requiring one discards the main advantage the product has.",
      "url": "https://www.bitcoinsv.design/guide/rule/83d92b4597/",
      "page": {
        "title": "First use",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/first-use/"
      }
    },
    {
      "id": "d2302d96da",
      "kind": "dont",
      "severity": "high",
      "text": "Offer a choice of key scheme during onboarding. Somebody setting up their first wallet has no basis to answer. See Private key management.",
      "url": "https://www.bitcoinsv.design/guide/rule/d2302d96da/",
      "page": {
        "title": "First use",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/first-use/"
      }
    },
    {
      "id": "2b88a5095b",
      "kind": "do",
      "severity": "high",
      "text": "Offer automatic encrypted backup of the wallet's records during onboarding, with one line saying where it goes, and turn it on only if the user says yes. Never switch remote storage on silently. Records are the part that must be continuous anyway. See Backups.",
      "url": "https://www.bitcoinsv.design/guide/rule/2b88a5095b/",
      "page": {
        "title": "First use",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/first-use/"
      }
    },
    {
      "id": "2a1e3fc5a2",
      "kind": "dont",
      "severity": "high",
      "text": "Put anything personal in a note by default. It is shared with the payer and may end up in their records. See Wallet privacy.",
      "url": "https://www.bitcoinsv.design/guide/rule/2a1e3fc5a2/",
      "page": {
        "title": "Requesting",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/requesting/"
      }
    },
    {
      "id": "651a6d824e",
      "kind": "do",
      "severity": "high",
      "text": "A public donation handle is permanently linked to everything paid to it. Suggest a separate handle for it. A tag such as @maya+donations@example.com sorts the payments but still resolves to Maya. See Paying by handle.",
      "url": "https://www.bitcoinsv.design/guide/rule/651a6d824e/",
      "page": {
        "title": "Requesting",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/requesting/"
      }
    },
    {
      "id": "faf9dcb5ed",
      "kind": "do",
      "severity": "high",
      "text": "Show the running total against the allowance somewhere the user passes regularly, and make every agent or app payment visible in activity, marked as such. See Permissions and allowances.",
      "url": "https://www.bitcoinsv.design/guide/rule/faf9dcb5ed/",
      "page": {
        "title": "Sending",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/"
      }
    },
    {
      "id": "5a60232bfd",
      "kind": "do",
      "severity": "high",
      "text": "Require the device's authentication to confirm, above whatever threshold the user set.",
      "url": "https://www.bitcoinsv.design/guide/rule/5a60232bfd/",
      "page": {
        "title": "Sending",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/"
      }
    },
    {
      "id": "0b8d2226b1",
      "kind": "do",
      "severity": "high",
      "text": "Say first whether money left the wallet.",
      "url": "https://www.bitcoinsv.design/guide/rule/0b8d2226b1/",
      "page": {
        "title": "Sending",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/"
      }
    },
    {
      "id": "575c867a4e",
      "kind": "do",
      "severity": "high",
      "text": "Make sure this works without your servers, any Pass, or any vendor service. It is the user's guaranteed way out if everything else in the stack fails. See Backups.",
      "url": "https://www.bitcoinsv.design/guide/rule/575c867a4e/",
      "page": {
        "title": "Sending",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/"
      }
    },
    {
      "id": "5d31c5cfd7",
      "kind": "dont",
      "severity": "high",
      "text": "Keep a fee picker because the design system already has one. It asks the user a question with no wrong answer, which teaches them that your questions are decorative.",
      "url": "https://www.bitcoinsv.design/guide/rule/5d31c5cfd7/",
      "page": {
        "title": "Send fees",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/send-fees/"
      }
    },
    {
      "id": "8223d8056e",
      "kind": "do",
      "severity": "high",
      "text": "Leave the fee off the review screen entirely for ordinary payments, and put it in the transaction details afterwards for anyone who looks.",
      "url": "https://www.bitcoinsv.design/guide/rule/8223d8056e/",
      "page": {
        "title": "Send fees",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/send-fees/"
      }
    },
    {
      "id": "250ffdfe50",
      "kind": "dont",
      "severity": "high",
      "text": "Make an explorer the answer to \"where is my money\". If a wallet cannot explain the state of its own payment, that is a gap in the wallet. See Nodes and verification.",
      "url": "https://www.bitcoinsv.design/guide/rule/250ffdfe50/",
      "page": {
        "title": "Activity",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/activity/"
      }
    },
    {
      "id": "1f7685c1df",
      "kind": "do",
      "severity": "high",
      "text": "Name what is lost in the confirmation: the saved key, and therefore the warning if it changes. Payment history stays.",
      "url": "https://www.bitcoinsv.design/guide/rule/1f7685c1df/",
      "page": {
        "title": "Contacts",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/contacts/"
      }
    },
    {
      "id": "776e679024",
      "kind": "do",
      "severity": "high",
      "text": "Let the user set a threshold above which authentication is required per payment, and default it to something sensible rather than to every payment or to none. We suggest an amount around the price of a coffee.",
      "url": "https://www.bitcoinsv.design/guide/rule/776e679024/",
      "page": {
        "title": "Security",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/security/"
      }
    },
    {
      "id": "52648865d0",
      "kind": "do",
      "severity": "high",
      "text": "Make revoking immediate and obvious, and say what it will break: the app stops working until it asks again.",
      "url": "https://www.bitcoinsv.design/guide/rule/52648865d0/",
      "page": {
        "title": "Security",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/security/"
      }
    },
    {
      "id": "1e8193cabc",
      "kind": "do",
      "severity": "high",
      "text": "Expire spending and sensitive permissions by default, and tell the user when one is about to lapse rather than renewing it silently.",
      "url": "https://www.bitcoinsv.design/guide/rule/1e8193cabc/",
      "page": {
        "title": "Security",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/security/"
      }
    },
    {
      "id": "088505e3f8",
      "kind": "dont",
      "severity": "high",
      "text": "Bury this in settings. It is the control panel for everything that can spend the user's money without asking each time.",
      "url": "https://www.bitcoinsv.design/guide/rule/088505e3f8/",
      "page": {
        "title": "Security",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/security/"
      }
    },
    {
      "id": "af64165675",
      "kind": "do",
      "severity": "high",
      "text": "Set allowances per app, with a per-payment cap as well as a total. A thousand payments of a satoshi and one payment of a thousand satoshis are different risks.",
      "url": "https://www.bitcoinsv.design/guide/rule/af64165675/",
      "page": {
        "title": "Security",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/security/"
      }
    },
    {
      "id": "e19e79e1b4",
      "kind": "do",
      "severity": "high",
      "text": "Give it its own confirmation, outside any bundle, naming who is asking and what they will be able to see.",
      "url": "https://www.bitcoinsv.design/guide/rule/e19e79e1b4/",
      "page": {
        "title": "Security",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/security/"
      }
    },
    {
      "id": "369bdbaf52",
      "kind": "dont",
      "severity": "high",
      "text": "Include it in a connect-time grant. Nothing legitimate needs it at connect time.",
      "url": "https://www.bitcoinsv.design/guide/rule/369bdbaf52/",
      "page": {
        "title": "Security",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/security/"
      }
    },
    {
      "id": "938b1989c3",
      "kind": "dont",
      "severity": "high",
      "text": "Reveal the user's identity key or profile to an app for a routine payment unless the user chose to. It permanently links a name to spending. See Identity.",
      "url": "https://www.bitcoinsv.design/guide/rule/938b1989c3/",
      "page": {
        "title": "Privacy",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/privacy/"
      }
    },
    {
      "id": "50b37269b0",
      "kind": "do",
      "severity": "high",
      "text": "Name what is lost and what is not. The money stays where it is; the recovery words and the wallet backup together restore it on another device. If either is missing, say that deleting may make the money unrecoverable, in those words.",
      "url": "https://www.bitcoinsv.design/guide/rule/50b37269b0/",
      "page": {
        "title": "Settings",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/settings/"
      }
    },
    {
      "id": "eaac762adf",
      "kind": "do",
      "severity": "high",
      "text": "Explain it in one line that says where the backup goes and what opens it: \"Back up your wallet to your cloud storage? It is encrypted on this phone, and only your recovery words can open it.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/eaac762adf/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/cloud-backup/"
      }
    },
    {
      "id": "6efda86df6",
      "kind": "dont",
      "severity": "high",
      "text": "Enable remote storage without saying so. It changes who can be compelled to hand over data, and that is the user's decision.",
      "url": "https://www.bitcoinsv.design/guide/rule/6efda86df6/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/cloud-backup/"
      }
    },
    {
      "id": "010eaed1f0",
      "kind": "dont",
      "severity": "high",
      "text": "Protect the backup with a separate PIN or password. A short PIN can be guessed by anyone holding the file, and a password is one more secret to forget at the worst moment.",
      "url": "https://www.bitcoinsv.design/guide/rule/010eaed1f0/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/cloud-backup/"
      }
    },
    {
      "id": "68b56c1f7c",
      "kind": "do",
      "severity": "high",
      "text": "Say on the words screen which wallets can restore them: \"These words restore your wallet in apps that support BSV recovery words. Other wallets may show an empty balance.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/68b56c1f7c/",
      "page": {
        "title": "Manual backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/manual-backup/"
      }
    },
    {
      "id": "38ddb4b53c",
      "kind": "do",
      "severity": "high",
      "text": "End the flow by saying what it did not do, and show the state of the other part: \"Your recovery words restore your keys. Your wallet backup restores your records: which money is yours and how to spend it. Keep both.\" See Backup and recovery.",
      "url": "https://www.bitcoinsv.design/guide/rule/38ddb4b53c/",
      "page": {
        "title": "Manual backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/manual-backup/"
      }
    },
    {
      "id": "a3cc43f610",
      "kind": "do",
      "severity": "high",
      "text": "Recover what can be recovered without records, and be explicit that it may be partial.",
      "url": "https://www.bitcoinsv.design/guide/rule/a3cc43f610/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "4478343928",
      "kind": "do",
      "severity": "high",
      "text": "Name anything that did not, and say what it means. A token type the wallet does not support, records older than the backup, a Pass that needs reissuing.",
      "url": "https://www.bitcoinsv.design/guide/rule/4478343928/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "6d3c1b95b2",
      "kind": "dont",
      "severity": "high",
      "text": "Show a success screen with no numbers on it. The user's question is \"is my money there\", and a tick does not answer it.",
      "url": "https://www.bitcoinsv.design/guide/rule/6d3c1b95b2/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "7216e8df19",
      "kind": "do",
      "severity": "high",
      "text": "Prompt the user to check whether the old device should be considered compromised, if it was stolen rather than lost. Moving to fresh keys is a real option and nobody will think of it unaided.",
      "url": "https://www.bitcoinsv.design/guide/rule/7216e8df19/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "e9a7cf3858",
      "kind": "dont",
      "severity": "high",
      "text": "Build savings features into the everyday wallet. A wallet that is both ends up too slow for a coffee and too exposed for savings.",
      "url": "https://www.bitcoinsv.design/guide/rule/e9a7cf3858/",
      "page": {
        "title": "Savings wallet",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/"
      }
    },
    {
      "id": "c1003435c4",
      "kind": "dont",
      "severity": "high",
      "text": "Show a pending shared payment as \"Sending\". Nothing has been sent, and the difference matters when somebody is waiting to be paid.",
      "url": "https://www.bitcoinsv.design/guide/rule/c1003435c4/",
      "page": {
        "title": "Shared wallet",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/shared-wallet/"
      }
    },
    {
      "id": "4eaf5f7317",
      "kind": "dont",
      "severity": "high",
      "text": "Offer downgrades without a hard confirmation naming what is lost. Going from three keys to one is a real reduction in protection and should feel like one.",
      "url": "https://www.bitcoinsv.design/guide/rule/4eaf5f7317/",
      "page": {
        "title": "Upgradeable wallet",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/upgradeable-wallet/"
      }
    },
    {
      "id": "49340e32ba",
      "kind": "do",
      "severity": "high",
      "text": "Name the price, in satoshis and local currency, on the same panel as the connect button. The reader should know what the first tap costs before the wallet opens.",
      "url": "https://www.bitcoinsv.design/guide/rule/49340e32ba/",
      "page": {
        "title": "First visit and connecting",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/first-visit/"
      }
    },
    {
      "id": "d0c330a5ba",
      "kind": "do",
      "severity": "high",
      "text": "Ask for a key made for this site only at connection, and nothing else: no identity key, no Pass, no spending grant.",
      "url": "https://www.bitcoinsv.design/guide/rule/d0c330a5ba/",
      "page": {
        "title": "First visit and connecting",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/first-visit/"
      }
    },
    {
      "id": "7bf718fae1",
      "kind": "do",
      "severity": "high",
      "text": "Give the allowance an end date in the request itself, and show that date on the wallet's sheet. When it ends, ask again and show what the last one was spent on.",
      "url": "https://www.bitcoinsv.design/guide/rule/7bf718fae1/",
      "page": {
        "title": "First visit and connecting",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/first-visit/"
      }
    },
    {
      "id": "3cbfd2bd9e",
      "kind": "do",
      "severity": "high",
      "text": "Say on the stopped state that the allowance still exists in the wallet, and where to remove it.",
      "url": "https://www.bitcoinsv.design/guide/rule/3cbfd2bd9e/",
      "page": {
        "title": "Reading and the meter",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/reading/"
      }
    },
    {
      "id": "fc4fae7aaf",
      "kind": "dont",
      "severity": "high",
      "text": "Describe a refund in the app as a payment being reversed or cancelled. Say \"We've sent you 20 sats back\".",
      "url": "https://www.bitcoinsv.design/guide/rule/fc4fae7aaf/",
      "page": {
        "title": "Receipts, refunds and leaving",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/receipts-and-leaving/"
      }
    },
    {
      "id": "db9aa2e469",
      "kind": "do",
      "severity": "high",
      "text": "After a revocation, keep every article the reader already paid for readable once she connects the same wallet again, with no new payment.",
      "url": "https://www.bitcoinsv.design/guide/rule/db9aa2e469/",
      "page": {
        "title": "Receipts, refunds and leaving",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/receipts-and-leaving/"
      }
    },
    {
      "id": "cf71fe8ba0",
      "kind": "do",
      "severity": "high",
      "text": "Ask only for the sign-in key at this step. Payment, the age check and the ticket basket each wait for the screen where Anna first needs them.",
      "url": "https://www.bitcoinsv.design/guide/rule/cf71fe8ba0/",
      "page": {
        "title": "Signing in",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/signing-in/"
      }
    },
    {
      "id": "d243cfb658",
      "kind": "dont",
      "severity": "high",
      "text": "Ask for a name or email straight after sign-in to make the header friendlier. \"Your account\" is enough until Anna chooses to add something.",
      "url": "https://www.bitcoinsv.design/guide/rule/d243cfb658/",
      "page": {
        "title": "Signing in",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/signing-in/"
      }
    },
    {
      "id": "43d25db81b",
      "kind": "dont",
      "severity": "high",
      "text": "Offer to \"find\" Anna's account when a different wallet connects. The site cannot tell it is her, and guessing from anything else would link identities she kept apart.",
      "url": "https://www.bitcoinsv.design/guide/rule/43d25db81b/",
      "page": {
        "title": "Signing in",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/signing-in/"
      }
    },
    {
      "id": "3d0644d70d",
      "kind": "do",
      "severity": "high",
      "text": "List on the site, before the wallet prompt opens, the one thing the site will receive and the things it will not, in the same words the wallet is about to use.",
      "url": "https://www.bitcoinsv.design/guide/rule/3d0644d70d/",
      "page": {
        "title": "Proving an age",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/proving-an-age/"
      }
    },
    {
      "id": "d0624dea5c",
      "kind": "dont",
      "severity": "high",
      "text": "Ask for a date of birth and work out the age on the site. The site then holds a fact it never needed, and the wallet's field-level choice is wasted.",
      "url": "https://www.bitcoinsv.design/guide/rule/d0624dea5c/",
      "page": {
        "title": "Proving an age",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/proving-an-age/"
      }
    },
    {
      "id": "64fb68ab22",
      "kind": "do",
      "severity": "high",
      "text": "Ask for the same single field, \"over 18\", at every age-restricted checkout, and never widen a later request because an earlier one was granted.",
      "url": "https://www.bitcoinsv.design/guide/rule/64fb68ab22/",
      "page": {
        "title": "Proving an age",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/proving-an-age/"
      }
    },
    {
      "id": "6d94573c75",
      "kind": "dont",
      "severity": "high",
      "text": "Ask for a spending allowance \"to make the next purchase faster\". A site people pay a few times a year should ask each time.",
      "url": "https://www.bitcoinsv.design/guide/rule/6d94573c75/",
      "page": {
        "title": "Buying a ticket",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/buying-a-ticket/"
      }
    },
    {
      "id": "c0d587e4e7",
      "kind": "dont",
      "severity": "high",
      "text": "Put a \"Disconnect\" button on the site that only clears the session. Anna would believe the site lost its access when the wallet still lists it.",
      "url": "https://www.bitcoinsv.design/guide/rule/c0d587e4e7/",
      "page": {
        "title": "Coming back and leaving",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/coming-back-and-leaving/"
      }
    },
    {
      "id": "174de490e2",
      "kind": "do",
      "severity": "high",
      "text": "Store the result of an age check, the gig and the date, and never the Pass or any field beyond the one asked for, and say so on the site's data page.",
      "url": "https://www.bitcoinsv.design/guide/rule/174de490e2/",
      "page": {
        "title": "Coming back and leaving",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/coming-back-and-leaving/"
      }
    },
    {
      "id": "4bcb851c13",
      "kind": "dont",
      "severity": "high",
      "text": "Keep anything about Anna that this page does not list. If the site starts storing something new, the page changes the same day.",
      "url": "https://www.bitcoinsv.design/guide/rule/4bcb851c13/",
      "page": {
        "title": "Coming back and leaving",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/coming-back-and-leaving/"
      }
    },
    {
      "id": "0b18fa39bf",
      "kind": "dont",
      "severity": "high",
      "text": "Offer to connect Scout to Bitcoin SV Wallet with a spending permission as a quicker alternative. Two routes to the same task make the safer one look like the slow one.",
      "url": "https://www.bitcoinsv.design/guide/rule/0b18fa39bf/",
      "page": {
        "title": "Setting it up",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/setting-it-up/"
      }
    },
    {
      "id": "e0a63a7226",
      "kind": "dont",
      "severity": "high",
      "text": "Ask Anna to switch on a low-balance refill during funding. Topping up is a separate decision each time, made when she can see what the last budget bought.",
      "url": "https://www.bitcoinsv.design/guide/rule/e0a63a7226/",
      "page": {
        "title": "Setting it up",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/setting-it-up/"
      }
    },
    {
      "id": "62372051f5",
      "kind": "do",
      "severity": "high",
      "text": "Say plainly when a service kept the money: \"Example Data was paid 15 sats and sent nothing back.\" Whether money moved is the first thing the errors pattern asks every failure to answer.",
      "url": "https://www.bitcoinsv.design/guide/rule/62372051f5/",
      "page": {
        "title": "While it works",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/while-it-works/"
      }
    },
    {
      "id": "aa39be0fe6",
      "kind": "do",
      "severity": "high",
      "text": "Record Scout's reason with each payment at the moment it is made, and keep it unchangeable. A reason written afterwards is a story, not a record.",
      "url": "https://www.bitcoinsv.design/guide/rule/aa39be0fe6/",
      "page": {
        "title": "Reviewing what it did",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/reviewing-what-it-did/"
      }
    },
    {
      "id": "d9a50748d3",
      "kind": "dont",
      "severity": "high",
      "text": "Present Scout's note in the same style as the amount and payee. The amount and payee come from the payment; the note comes from the agent, and the screen should show the difference.",
      "url": "https://www.bitcoinsv.design/guide/rule/d9a50748d3/",
      "page": {
        "title": "Reviewing what it did",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/reviewing-what-it-did/"
      }
    },
    {
      "id": "eabf7ac795",
      "kind": "dont",
      "severity": "high",
      "text": "Offer \"Get a refund\" or \"Dispute\" on an agent payment. Scout cannot reverse a payment, and a button that implies it can will be pressed and will fail.",
      "url": "https://www.bitcoinsv.design/guide/rule/eabf7ac795/",
      "page": {
        "title": "Reviewing what it did",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/reviewing-what-it-did/"
      }
    },
    {
      "id": "e088a098bd",
      "kind": "do",
      "severity": "high",
      "text": "Show the exact time spending stopped, and whether a payment was already on its way at that moment: \"The last payment, 20 sats to The Satoshi Vision at 14:32, went through before you paused.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/e088a098bd/",
      "page": {
        "title": "Stopping it",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/stopping-it/"
      }
    },
    {
      "id": "f20efb8ac0",
      "kind": "dont",
      "severity": "high",
      "text": "Let Scout's stop message argue for resuming. \"I was nearly there\" turns a safety control into a negotiation with the thing being stopped.",
      "url": "https://www.bitcoinsv.design/guide/rule/f20efb8ac0/",
      "page": {
        "title": "Stopping it",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/stopping-it/"
      }
    },
    {
      "id": "c7dc404e84",
      "kind": "do",
      "severity": "high",
      "text": "Say on the revoke screen that the money left in Scout's wallet stays there until Anna sends it back, and show the amount.",
      "url": "https://www.bitcoinsv.design/guide/rule/c7dc404e84/",
      "page": {
        "title": "Stopping it",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/stopping-it/"
      }
    },
    {
      "id": "f81057791d",
      "kind": "do",
      "severity": "high",
      "text": "Say what you will record, and never capture real recovery words, even accidentally, in a screen recording.",
      "url": "https://www.bitcoinsv.design/guide/rule/f81057791d/",
      "page": {
        "title": "Conducting research",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/conducting-research/"
      }
    },
    {
      "id": "c026432582",
      "kind": "dont",
      "severity": "high",
      "text": "Ask how much somebody holds or earns on a screener. You do not need it to recruit, and you are now storing it.",
      "url": "https://www.bitcoinsv.design/guide/rule/c026432582/",
      "page": {
        "title": "Recruiting participants",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/recruiting-participants/"
      }
    },
    {
      "id": "14cc5f8d84",
      "kind": "dont",
      "severity": "high",
      "text": "Record a participant's real handle, address or transaction in your notes. If one appears on screen, stop the recording and remove it.",
      "url": "https://www.bitcoinsv.design/guide/rule/14cc5f8d84/",
      "page": {
        "title": "Recruiting participants",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/recruiting-participants/"
      }
    },
    {
      "id": "4557fb2522",
      "kind": "dont",
      "severity": "high",
      "text": "Ask a participant to open a real wallet or banking app to show you something. If a story needs a screen, ask them to describe it.",
      "url": "https://www.bitcoinsv.design/guide/rule/4557fb2522/",
      "page": {
        "title": "Interview guides",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/interview-guides/"
      }
    },
    {
      "id": "b4beef2f29",
      "kind": "do",
      "severity": "high",
      "text": "Give every participant test money in a test wallet you created, and never ask them to use their own wallet.",
      "url": "https://www.bitcoinsv.design/guide/rule/b4beef2f29/",
      "page": {
        "title": "Usability test plans",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/usability-test-plans/"
      }
    },
    {
      "id": "3f13ce7398",
      "kind": "dont",
      "severity": "high",
      "text": "Include a handle, address, transaction or balance from any participant's real wallet in a write-up, even partly masked.",
      "url": "https://www.bitcoinsv.design/guide/rule/3f13ce7398/",
      "page": {
        "title": "Writing up findings",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/writing-up-findings/"
      }
    },
    {
      "id": "c4ab770f9e",
      "kind": "dont",
      "severity": "high",
      "text": "Build a prepaid balance that your app holds in place of an allowance in the user's wallet. Money sitting with you is a custody decision, and the allowance does the same job without it. See Custody as a product decision.",
      "url": "https://www.bitcoinsv.design/guide/rule/c4ab770f9e/",
      "page": {
        "title": "Business models",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/business-models/"
      }
    },
    {
      "id": "2fc4b88ff2",
      "kind": "do",
      "severity": "high",
      "text": "Fix the satoshi amount when you show the price, and hold it until the user pays or leaves the screen. A figure that changes between the quote and the payment reads as a bait and switch.",
      "url": "https://www.bitcoinsv.design/guide/rule/2fc4b88ff2/",
      "page": {
        "title": "Pricing",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/pricing/"
      }
    },
    {
      "id": "d1acb841d6",
      "kind": "do",
      "severity": "high",
      "text": "Round the local-currency figure up, never down, and say it is approximate: \"about 1p\", \"less than 1p\". The user should never pay more than the figure suggested.",
      "url": "https://www.bitcoinsv.design/guide/rule/d1acb841d6/",
      "page": {
        "title": "Pricing",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/pricing/"
      }
    },
    {
      "id": "08049c90da",
      "kind": "dont",
      "severity": "high",
      "text": "Raise a price on users mid-allowance without telling them. They granted the budget against the old price, and spending it faster is a change to what they agreed to.",
      "url": "https://www.bitcoinsv.design/guide/rule/08049c90da/",
      "page": {
        "title": "Pricing",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/pricing/"
      }
    },
    {
      "id": "7aa32762d2",
      "kind": "do",
      "severity": "high",
      "text": "Keep what you need to pay a customer back with each payment you take: their handle, or a way to reach their wallet, and what the payment was for. Keep it in your order records, not your analytics, and delete it when the refund window closes.",
      "url": "https://www.bitcoinsv.design/guide/rule/7aa32762d2/",
      "page": {
        "title": "Pricing",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/pricing/"
      }
    },
    {
      "id": "21b9b76a1a",
      "kind": "dont",
      "severity": "high",
      "text": "Promise to \"reverse\" or \"cancel\" a payment in support copy. The word teaches users something false about every other payment they make.",
      "url": "https://www.bitcoinsv.design/guide/rule/21b9b76a1a/",
      "page": {
        "title": "Pricing",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/pricing/"
      }
    },
    {
      "id": "abce8495b7",
      "kind": "dont",
      "severity": "high",
      "text": "Attach a user's identity key or handle to payment records in your analytics. Joined with the public ledger, that table names their spending to anyone who gets a copy.",
      "url": "https://www.bitcoinsv.design/guide/rule/abce8495b7/",
      "page": {
        "title": "Measuring a product",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/measuring-a-product/"
      }
    },
    {
      "id": "376fc6d603",
      "kind": "dont",
      "severity": "high",
      "text": "Run chain analysis on your own users to fill gaps in your analytics. If a number can only be found by tracing payments, decide you do not need it.",
      "url": "https://www.bitcoinsv.design/guide/rule/376fc6d603/",
      "page": {
        "title": "Measuring a product",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/measuring-a-product/"
      }
    },
    {
      "id": "3079af1ff5",
      "kind": "do",
      "severity": "high",
      "text": "Send credit to try after a first action you value, never on wallet creation or connection alone.",
      "url": "https://www.bitcoinsv.design/guide/rule/3079af1ff5/",
      "page": {
        "title": "Growth that pays",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/growth-that-pays/"
      }
    },
    {
      "id": "95b7b272bd",
      "kind": "dont",
      "severity": "high",
      "text": "Call an arrangement self-custody if your service can move the user's money or decrypt their key. Say what it is.",
      "url": "https://www.bitcoinsv.design/guide/rule/95b7b272bd/",
      "page": {
        "title": "Custody as a product decision",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/custody/"
      }
    },
    {
      "id": "ee15090cb1",
      "kind": "dont",
      "severity": "high",
      "text": "Keep a balance on users' behalf just to make many small payments smoother. An allowance in the user's own wallet does that job without the custody.",
      "url": "https://www.bitcoinsv.design/guide/rule/ee15090cb1/",
      "page": {
        "title": "Custody as a product decision",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/custody/"
      }
    },
    {
      "id": "76cf73394d",
      "kind": "do",
      "severity": "high",
      "text": "In interface strings, write \"Bitcoin SV\" or \"BSV\". Never write \"bitcoin\" alone on a screen, a button or a store listing, where a user can read it as another network.",
      "url": "https://www.bitcoinsv.design/guide/rule/76cf73394d/",
      "page": {
        "title": "Talking about BSV",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/talking-about-bsv/"
      }
    },
    {
      "id": "693f1b95a0",
      "kind": "dont",
      "severity": "high",
      "text": "Mention the price of BSV, past gains or future value anywhere in marketing for a product that is not about investing. Copy that reads as a promise of returns attracts the wrong users and alarms the right ones.",
      "url": "https://www.bitcoinsv.design/guide/rule/693f1b95a0/",
      "page": {
        "title": "Talking about BSV",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/talking-about-bsv/"
      }
    },
    {
      "id": "338e7363b6",
      "kind": "do",
      "severity": "high",
      "text": "Treat confirmation as a risk setting, not a blanket rule. For coffee, articles, tips and most in-person sales, treat a payment as complete once the recipient's wallet has accepted it. For large amounts, show the payment as Settling until it is mined, and let businesses set their own threshold.",
      "url": "https://www.bitcoinsv.design/guide/rule/338e7363b6/",
      "page": {
        "title": "Transactions",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/transactions/"
      }
    },
    {
      "id": "655ff9cb9b",
      "kind": "do",
      "severity": "high",
      "text": "Show one spendable balance, and show separately anything that is not spendable because it is reserved, in a token, or in another basket. \"2,400 sats, plus 1 token\" is honest; a single number that silently excludes things is not.",
      "url": "https://www.bitcoinsv.design/guide/rule/655ff9cb9b/",
      "page": {
        "title": "Coin selection",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/coin-selection/"
      }
    },
    {
      "id": "2cc79b8eeb",
      "kind": "do",
      "severity": "high",
      "text": "Always show the user what they're paying for, and the running total against their allowance. Small, frequent payments add up, and users should never be surprised by them.",
      "url": "https://www.bitcoinsv.design/guide/rule/2cc79b8eeb/",
      "page": {
        "title": "Payments",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/payments/"
      }
    },
    {
      "id": "a093cf784f",
      "kind": "dont",
      "severity": "high",
      "text": "Trust a single service's word that a payment is confirmed. The merkle proof is the evidence; verify it against headers rather than displaying whatever the API returned.",
      "url": "https://www.bitcoinsv.design/guide/rule/a093cf784f/",
      "page": {
        "title": "Nodes and verification",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/nodes/"
      }
    },
    {
      "id": "d919803bc1",
      "kind": "dont",
      "severity": "high",
      "text": "Attach a user's identity key to routine payments because it makes your activity list prettier. It permanently links their name to their spending.",
      "url": "https://www.bitcoinsv.design/guide/rule/d919803bc1/",
      "page": {
        "title": "Wallet privacy",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/wallet-privacy/"
      }
    },
    {
      "id": "9098861073",
      "kind": "dont",
      "severity": "high",
      "text": "Call payments \"anonymous\" or \"private\". Both are false.",
      "url": "https://www.bitcoinsv.design/guide/rule/9098861073/",
      "page": {
        "title": "Wallet privacy",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/wallet-privacy/"
      }
    },
    {
      "id": "074187441b",
      "kind": "do",
      "severity": "high",
      "text": "Move funds out of a seed-only wallet by sending them, not by importing its words.",
      "url": "https://www.bitcoinsv.design/guide/rule/074187441b/",
      "page": {
        "title": "Legacy compatibility",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/legacy-compatibility/"
      }
    },
    {
      "id": "24346e61e5",
      "kind": "do",
      "severity": "high",
      "text": "Every consumer wallet should still be able to send to a plain address. It's the user's guaranteed exit if anything else in the stack fails. Label it clearly, for example Send to external wallet, and make sure it works without any vendor service.",
      "url": "https://www.bitcoinsv.design/guide/rule/24346e61e5/",
      "page": {
        "title": "Legacy compatibility",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/legacy-compatibility/"
      }
    },
    {
      "id": "3154963c4f",
      "kind": "dont",
      "severity": "high",
      "text": "Describe a shared or custodial key as self-custody.",
      "url": "https://www.bitcoinsv.design/guide/rule/3154963c4f/",
      "page": {
        "title": "Overview",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/overview/"
      }
    },
    {
      "id": "9c4d3387b5",
      "kind": "dont",
      "severity": "high",
      "text": "Offer a choice of key scheme during onboarding. A person setting up their first wallet has no basis to answer, and the question is a good way to lose them before they hold anything.",
      "url": "https://www.bitcoinsv.design/guide/rule/9c4d3387b5/",
      "page": {
        "title": "Overview",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/overview/"
      }
    },
    {
      "id": "b2e765791f",
      "kind": "dont",
      "severity": "high",
      "text": "Turn remote storage on without saying so. It is a meaningful change in who can be compelled to hand over data, and it belongs to the user to decide.",
      "url": "https://www.bitcoinsv.design/guide/rule/b2e765791f/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/cloud-backup/"
      }
    },
    {
      "id": "d1ea40e31c",
      "kind": "do",
      "severity": "high",
      "text": "Let a partly signed payment be abandoned cleanly, without leaving funds stuck.",
      "url": "https://www.bitcoinsv.design/guide/rule/d1ea40e31c/",
      "page": {
        "title": "Multi-key",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/multi-key/"
      }
    },
    {
      "id": "3453bd7d1f",
      "kind": "do",
      "severity": "high",
      "text": "Validate as it is entered, and disable sending until it passes.",
      "url": "https://www.bitcoinsv.design/guide/rule/3453bd7d1f/",
      "page": {
        "title": "Address",
        "section": "Glossary",
        "url": "https://www.bitcoinsv.design/guide/glossary/address/"
      }
    },
    {
      "id": "54bedf798d",
      "kind": "do",
      "severity": "standard",
      "text": "Say \"Received\" as soon as the wallet has verified the payment. A spinner waiting for a block is a wait you added.",
      "url": "https://www.bitcoinsv.design/guide/rule/54bedf798d/",
      "page": {
        "title": "Why BSV is different",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/why-bitcoin-is-unique/"
      }
    },
    {
      "id": "7daf9fa116",
      "kind": "do",
      "severity": "standard",
      "text": "Absorb the fee and leave it off the review screen. A fee of less than 1p does not deserve a line competing with the recipient.",
      "url": "https://www.bitcoinsv.design/guide/rule/7daf9fa116/",
      "page": {
        "title": "Why BSV is different",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/why-bitcoin-is-unique/"
      }
    },
    {
      "id": "a9c9f398c1",
      "kind": "do",
      "severity": "standard",
      "text": "State the minimum protocol version any script you publish depends on. Chronicle restored opcodes that older transactions do not get. See Spending conditions.",
      "url": "https://www.bitcoinsv.design/guide/rule/a9c9f398c1/",
      "page": {
        "title": "Why BSV is different",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/why-bitcoin-is-unique/"
      }
    },
    {
      "id": "28c1db82cc",
      "kind": "dont",
      "severity": "standard",
      "text": "Offer to speed up, bump or cancel a payment. There is no replace-by-fee, so none of those controls can do anything, and offering them implies the payment is still yours to change.",
      "url": "https://www.bitcoinsv.design/guide/rule/28c1db82cc/",
      "page": {
        "title": "Why BSV is different",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/why-bitcoin-is-unique/"
      }
    },
    {
      "id": "12b7843a2f",
      "kind": "do",
      "severity": "standard",
      "text": "Pick one problem from The hard parts and attempt its exercise in Design challenges. A good attempt is a contribution to this guide.",
      "url": "https://www.bitcoinsv.design/guide/rule/12b7843a2f/",
      "page": {
        "title": "Why design for BSV",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/why-design-for-bitcoin/"
      }
    },
    {
      "id": "0e25385677",
      "kind": "do",
      "severity": "standard",
      "text": "Let the user hold their own keys, and make the path to doing so the default rather than an advanced option.",
      "url": "https://www.bitcoinsv.design/guide/rule/0e25385677/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "3726e3cf93",
      "kind": "do",
      "severity": "standard",
      "text": "Say plainly when something is custodial. A service holding keys on a user's behalf is a legitimate product; describing it as self-custody is not.",
      "url": "https://www.bitcoinsv.design/guide/rule/3726e3cf93/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "88ed0414ab",
      "kind": "do",
      "severity": "standard",
      "text": "Match the protection to the amount. A wallet holding coffee money and a wallet holding savings are different products, and pretending otherwise produces one that is wrong for both. See Wallet setups.",
      "url": "https://www.bitcoinsv.design/guide/rule/88ed0414ab/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "0341c279d1",
      "kind": "do",
      "severity": "standard",
      "text": "Ask for as little as the product needs. The independent risk assessment of the wallet interface (BRC-151) warns how much a wallet can be asked for; the answer is to need less of it. See Connecting a wallet.",
      "url": "https://www.bitcoinsv.design/guide/rule/0341c279d1/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "b405f2b096",
      "kind": "dont",
      "severity": "standard",
      "text": "Train people to tap approve. A prompt that appears constantly, is pre-ticked, or reappears until accepted teaches exactly the habit that gets someone robbed.",
      "url": "https://www.bitcoinsv.design/guide/rule/b405f2b096/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "da45913bb9",
      "kind": "do",
      "severity": "standard",
      "text": "Write for someone who has never heard of a UTXO and never needs to. Internal vocabulary belongs in advanced views and documentation.",
      "url": "https://www.bitcoinsv.design/guide/rule/da45913bb9/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "bb3271f0dc",
      "kind": "do",
      "severity": "standard",
      "text": "Meet WCAG 2.2 AA: contrast, touch targets, screen reader labels, and amounts that read aloud sensibly. See Accessibility.",
      "url": "https://www.bitcoinsv.design/guide/rule/bb3271f0dc/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "381f5ac09f",
      "kind": "do",
      "severity": "standard",
      "text": "Support the standards rather than a bespoke integration. Design your connect flow around \"your wallet\", not a brand.",
      "url": "https://www.bitcoinsv.design/guide/rule/381f5ac09f/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "f6ae896c38",
      "kind": "dont",
      "severity": "standard",
      "text": "Invent a proprietary format for something a BRC already covers. A format only your product reads is a lock-in whether or not you meant it as one.",
      "url": "https://www.bitcoinsv.design/guide/rule/f6ae896c38/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "ca1aefc429",
      "kind": "do",
      "severity": "standard",
      "text": "Say what your product can see and what it stores. A wallet that phones a service on every balance check should say which service and what it learns.",
      "url": "https://www.bitcoinsv.design/guide/rule/ca1aefc429/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "630f05adcd",
      "kind": "dont",
      "severity": "standard",
      "text": "Describe a product as private, anonymous or instant without the qualifier that makes it true.",
      "url": "https://www.bitcoinsv.design/guide/rule/630f05adcd/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "8e1c2b6c46",
      "kind": "do",
      "severity": "standard",
      "text": "Keep outputs from unrelated counterparties apart when selecting what to spend. Spending them together is the main remaining on-chain leak. See Coin selection.",
      "url": "https://www.bitcoinsv.design/guide/rule/8e1c2b6c46/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "532e6d6e67",
      "kind": "dont",
      "severity": "standard",
      "text": "Collect what you do not need, and never attach a user's identity to routine payments for convenience.",
      "url": "https://www.bitcoinsv.design/guide/rule/532e6d6e67/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "9cf7b80b0a",
      "kind": "dont",
      "severity": "standard",
      "text": "Write personal data on chain in the clear. There is no delete.",
      "url": "https://www.bitcoinsv.design/guide/rule/9cf7b80b0a/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "a310b591f1",
      "kind": "do",
      "severity": "standard",
      "text": "Let users choose or self-host the services your wallet depends on, and support more than one. See Nodes and verification.",
      "url": "https://www.bitcoinsv.design/guide/rule/a310b591f1/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "90f2e1b5df",
      "kind": "dont",
      "severity": "standard",
      "text": "Weld a product to one provider's endpoint. That is your product's lifespan as well as theirs.",
      "url": "https://www.bitcoinsv.design/guide/rule/90f2e1b5df/",
      "page": {
        "title": "Design principles",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/principles/"
      }
    },
    {
      "id": "fe64509ecb",
      "kind": "do",
      "severity": "standard",
      "text": "Use the BSV mark, the upright B on gold, wherever a BSV product needs the symbol as a mark.",
      "url": "https://www.bitcoinsv.design/guide/rule/fe64509ecb/",
      "page": {
        "title": "Visual language",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/visual-language/"
      }
    },
    {
      "id": "349de561b7",
      "kind": "dont",
      "severity": "standard",
      "text": "Use the orange disc or a tilted B to stand for BSV. Both say a different network to anyone who knows the difference.",
      "url": "https://www.bitcoinsv.design/guide/rule/349de561b7/",
      "page": {
        "title": "Visual language",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/visual-language/"
      }
    },
    {
      "id": "3da32ce0ba",
      "kind": "do",
      "severity": "standard",
      "text": "Use the Unicode character ₿, not the logo, when you need the bitcoin symbol in text. It scales, reflows and can be read by a screen reader. For amounts and labels, use sats and BSV; see Amounts and units.",
      "url": "https://www.bitcoinsv.design/guide/rule/3da32ce0ba/",
      "page": {
        "title": "Visual language",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/visual-language/"
      }
    },
    {
      "id": "2e80a24df0",
      "kind": "dont",
      "severity": "standard",
      "text": "Use the golden disc logo inside a sentence. It is a mark, not a letterform, and at text size it is a smudge.",
      "url": "https://www.bitcoinsv.design/guide/rule/2e80a24df0/",
      "page": {
        "title": "Visual language",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/visual-language/"
      }
    },
    {
      "id": "48418fbe04",
      "kind": "dont",
      "severity": "standard",
      "text": "Put memes in a product. They read as a private joke to people inside and as unseriousness to people outside, and the second group is who you are trying to reach.",
      "url": "https://www.bitcoinsv.design/guide/rule/48418fbe04/",
      "page": {
        "title": "Visual language",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/visual-language/"
      }
    },
    {
      "id": "6200916e40",
      "kind": "do",
      "severity": "standard",
      "text": "Draw the thing that is happening. A payment is a person handing something to a person.",
      "url": "https://www.bitcoinsv.design/guide/rule/6200916e40/",
      "page": {
        "title": "Visual language",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/visual-language/"
      }
    },
    {
      "id": "d3b7b38cd3",
      "kind": "do",
      "severity": "standard",
      "text": "Pick a point on the scale deliberately and hold it across the product. Drifting between the two is what produces an app that is baffling to newcomers and patronising to everyone else.",
      "url": "https://www.bitcoinsv.design/guide/rule/d3b7b38cd3/",
      "page": {
        "title": "Visual language",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/visual-language/"
      }
    },
    {
      "id": "8aabfb2d4b",
      "kind": "dont",
      "severity": "standard",
      "text": "Use a lightning bolt to mean speed in a BSV product. Show the thing itself: a payment confirmed while the customer is still at the till.",
      "url": "https://www.bitcoinsv.design/guide/rule/8aabfb2d4b/",
      "page": {
        "title": "Visual language",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/visual-language/"
      }
    },
    {
      "id": "69599bcb85",
      "kind": "dont",
      "severity": "standard",
      "text": "Put advocacy in a product. Say what yours does and let it be judged on that.",
      "url": "https://www.bitcoinsv.design/guide/rule/69599bcb85/",
      "page": {
        "title": "Visual language",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/visual-language/"
      }
    },
    {
      "id": "4f51bc1620",
      "kind": "do",
      "severity": "standard",
      "text": "Reach for the gold metaphor on a savings surface and leave it off an everyday one. A payment app that looks like a vault tells people their coffee money is an investment.",
      "url": "https://www.bitcoinsv.design/guide/rule/4f51bc1620/",
      "page": {
        "title": "Visual language",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/visual-language/"
      }
    },
    {
      "id": "f645ed96cd",
      "kind": "do",
      "severity": "standard",
      "text": "Verify with headers and a merkle proof rather than asking a server you trust. A wallet that can check its own money does not need to explain whose server it believes.",
      "url": "https://www.bitcoinsv.design/guide/rule/f645ed96cd/",
      "page": {
        "title": "Technology primer",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/technology-primer/"
      }
    },
    {
      "id": "d25de37c0d",
      "kind": "do",
      "severity": "standard",
      "text": "Build time conditions with nLockTime and nSequence, and test that an early spend actually fails. CHECKLOCKTIMEVERIFY and CHECKSEQUENCEVERIFY run and enforce nothing here.",
      "url": "https://www.bitcoinsv.design/guide/rule/d25de37c0d/",
      "page": {
        "title": "Technology primer",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/technology-primer/"
      }
    },
    {
      "id": "3c93da07c1",
      "kind": "dont",
      "severity": "standard",
      "text": "Design network states the wallet does not have: no connection setup, no routing errors, no sync progress bar. A BSV wallet hands payments to the recipient and verifies with headers, so none of these can occur.",
      "url": "https://www.bitcoinsv.design/guide/rule/3c93da07c1/",
      "page": {
        "title": "Technology primer",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/technology-primer/"
      }
    },
    {
      "id": "e64957a044",
      "kind": "do",
      "severity": "standard",
      "text": "If your product sends people to an exchange, say what will be asked of them before they go. Being surprised by a passport request is where people stop.",
      "url": "https://www.bitcoinsv.design/guide/rule/e64957a044/",
      "page": {
        "title": "Software categories",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/software/"
      }
    },
    {
      "id": "01aa31dcf0",
      "kind": "do",
      "severity": "standard",
      "text": "If you are designing one, read Connecting a wallet before anything else. A common mistake in this category is asking a wallet for more than the product needs.",
      "url": "https://www.bitcoinsv.design/guide/rule/01aa31dcf0/",
      "page": {
        "title": "Software categories",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/software/"
      }
    },
    {
      "id": "b18dffac6c",
      "kind": "do",
      "severity": "standard",
      "text": "Suggest two locations in different buildings, in plain terms. \"One at home, one somewhere else you can reach\" is advice somebody can act on.",
      "url": "https://www.bitcoinsv.design/guide/rule/b18dffac6c/",
      "page": {
        "title": "Hardware categories",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/hardware/"
      }
    },
    {
      "id": "5bdd8fb31d",
      "kind": "do",
      "severity": "standard",
      "text": "Show progress as a proportion collected while an animated code is being scanned. Users point a camera at a flickering screen for several seconds and need to know it is working.",
      "url": "https://www.bitcoinsv.design/guide/rule/5bdd8fb31d/",
      "page": {
        "title": "Hardware categories",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/hardware/"
      }
    },
    {
      "id": "24eb0bdbe2",
      "kind": "do",
      "severity": "standard",
      "text": "Design the paid state for a glance across a counter. Large, unambiguous, and legible to both people at once.",
      "url": "https://www.bitcoinsv.design/guide/rule/24eb0bdbe2/",
      "page": {
        "title": "Hardware categories",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/hardware/"
      }
    },
    {
      "id": "bd846afb86",
      "kind": "dont",
      "severity": "standard",
      "text": "Make a shopkeeper wait on a confirmation count for a cup of coffee. See Transactions.",
      "url": "https://www.bitcoinsv.design/guide/rule/bd846afb86/",
      "page": {
        "title": "Hardware categories",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/hardware/"
      }
    },
    {
      "id": "4323bf6053",
      "kind": "do",
      "severity": "standard",
      "text": "Say what the fee is before the user commits. An ATM's margin is often a large share of a small purchase, and a product that routes somebody to one without saying so has not been straight with them.",
      "url": "https://www.bitcoinsv.design/guide/rule/4323bf6053/",
      "page": {
        "title": "Hardware categories",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/hardware/"
      }
    },
    {
      "id": "c3a7cfe9cf",
      "kind": "do",
      "severity": "standard",
      "text": "Publish the reasoning with the design: what problem, what you ruled out, what you are unsure about. The last one gets the most useful replies.",
      "url": "https://www.bitcoinsv.design/guide/rule/c3a7cfe9cf/",
      "page": {
        "title": "Open design",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/open-design/"
      }
    },
    {
      "id": "5e8b760e70",
      "kind": "do",
      "severity": "standard",
      "text": "Share at the stage where the shape is clear and the details are not. Perfect work invites compliments; rough work invites help.",
      "url": "https://www.bitcoinsv.design/guide/rule/5e8b760e70/",
      "page": {
        "title": "Open design",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/open-design/"
      }
    },
    {
      "id": "ff1d509eac",
      "kind": "dont",
      "severity": "standard",
      "text": "Treat a repository as a portfolio. Something polished, final and unexplained gets no engagement, which is the one thing it needed.",
      "url": "https://www.bitcoinsv.design/guide/rule/ff1d509eac/",
      "page": {
        "title": "Open design",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/open-design/"
      }
    },
    {
      "id": "dcd528e29b",
      "kind": "do",
      "severity": "standard",
      "text": "Record why, not just what, somewhere the next person will find it. A paragraph in a pull request is enough.",
      "url": "https://www.bitcoinsv.design/guide/rule/dcd528e29b/",
      "page": {
        "title": "Open design",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/open-design/"
      }
    },
    {
      "id": "f9886653e6",
      "kind": "do",
      "severity": "standard",
      "text": "State the licence on anything you publish, and keep the attribution on anything you reuse. A file with no licence is one nobody can safely build on.",
      "url": "https://www.bitcoinsv.design/guide/rule/f9886653e6/",
      "page": {
        "title": "Open design",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/open-design/"
      }
    },
    {
      "id": "1c5b94197f",
      "kind": "dont",
      "severity": "standard",
      "text": "Reuse artwork without checking what its licence asks for. \"It was on the internet\" is not a licence, and CC BY costs you one line of credit.",
      "url": "https://www.bitcoinsv.design/guide/rule/1c5b94197f/",
      "page": {
        "title": "Open design",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/open-design/"
      }
    },
    {
      "id": "4494c095ae",
      "kind": "do",
      "severity": "standard",
      "text": "Pick a page you know something about, find one sentence that is wrong or unclear, and open an issue naming the page and the sentence. That is a complete, useful contribution and it takes ten minutes.",
      "url": "https://www.bitcoinsv.design/guide/rule/4494c095ae/",
      "page": {
        "title": "Open design",
        "section": "Getting started",
        "url": "https://www.bitcoinsv.design/guide/getting-started/open-design/"
      }
    },
    {
      "id": "dcb2b27100",
      "kind": "do",
      "severity": "standard",
      "text": "Name the limits in the product where they are relevant. A wallet that says \"this isn't where to keep next month's rent\" earns more trust than one that implies it is good for everything.",
      "url": "https://www.bitcoinsv.design/guide/rule/dcb2b27100/",
      "page": {
        "title": "Personal finance",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/personal-finance/"
      }
    },
    {
      "id": "0bb7a8c0cf",
      "kind": "do",
      "severity": "standard",
      "text": "Let people name and separate pots, and show them together with a total. See Multiple wallets.",
      "url": "https://www.bitcoinsv.design/guide/rule/0bb7a8c0cf/",
      "page": {
        "title": "Personal finance",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/personal-finance/"
      }
    },
    {
      "id": "f30396160f",
      "kind": "dont",
      "severity": "standard",
      "text": "Ship budgeting features before sending, receiving and backup work reliably. People can skip a budget; they cannot skip those.",
      "url": "https://www.bitcoinsv.design/guide/rule/f30396160f/",
      "page": {
        "title": "Personal finance",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/personal-finance/"
      }
    },
    {
      "id": "7f98a99062",
      "kind": "do",
      "severity": "standard",
      "text": "Decide which state of mind each screen is for, and design that screen for it alone.",
      "url": "https://www.bitcoinsv.design/guide/rule/7f98a99062/",
      "page": {
        "title": "Spending, saving and delegating",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/spending-saving-delegating/"
      }
    },
    {
      "id": "ad2b23851e",
      "kind": "do",
      "severity": "standard",
      "text": "Build each state of mind on its own wallet, so the separation holds even when the interface does not. A layout can be redesigned; a key the everyday wallet never had cannot leak from it.",
      "url": "https://www.bitcoinsv.design/guide/rule/ad2b23851e/",
      "page": {
        "title": "Spending, saving and delegating",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/spending-saving-delegating/"
      }
    },
    {
      "id": "10f19e8865",
      "kind": "do",
      "severity": "standard",
      "text": "Make every move between states of mind a visible step the person takes, with its own confirmation.",
      "url": "https://www.bitcoinsv.design/guide/rule/10f19e8865/",
      "page": {
        "title": "Spending, saving and delegating",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/spending-saving-delegating/"
      }
    },
    {
      "id": "e557c3aab8",
      "kind": "do",
      "severity": "standard",
      "text": "Pick the primary state of mind for the product, and say so. A payments app is for spending, with saving as an optional layer reached by a bridge. A savings product is for saving, with a quick top-up as its one shortcut. A product that will not choose ends up with the savings total next to the pay button.",
      "url": "https://www.bitcoinsv.design/guide/rule/e557c3aab8/",
      "page": {
        "title": "Spending, saving and delegating",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/spending-saving-delegating/"
      }
    },
    {
      "id": "4d5e8b87d4",
      "kind": "do",
      "severity": "standard",
      "text": "Lead with the concrete benefit for the person in front of you. \"Keep the 45p the card company takes on a £5 sale\" beats any sentence containing the word sovereignty.",
      "url": "https://www.bitcoinsv.design/guide/rule/4d5e8b87d4/",
      "page": {
        "title": "Getting to know your users",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/getting-to-know-your-users/"
      }
    },
    {
      "id": "6633d7fd30",
      "kind": "do",
      "severity": "standard",
      "text": "Count the ideas a person has to hold to finish their first task, not just the steps. Each new idea is a place they can stop.",
      "url": "https://www.bitcoinsv.design/guide/rule/6633d7fd30/",
      "page": {
        "title": "Getting to know your users",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/getting-to-know-your-users/"
      }
    },
    {
      "id": "5d79ca507e",
      "kind": "dont",
      "severity": "standard",
      "text": "Treat speed as comprehension. Removing friction removes the reason to stop; it does not answer \"what did I just do?\"",
      "url": "https://www.bitcoinsv.design/guide/rule/5d79ca507e/",
      "page": {
        "title": "Getting to know your users",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/getting-to-know-your-users/"
      }
    },
    {
      "id": "6102c7a17c",
      "kind": "do",
      "severity": "standard",
      "text": "Decide which of the three you are for, and say so. A product aimed at all three serves none well.",
      "url": "https://www.bitcoinsv.design/guide/rule/6102c7a17c/",
      "page": {
        "title": "Getting to know your users",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/getting-to-know-your-users/"
      }
    },
    {
      "id": "dd776c8dbe",
      "kind": "dont",
      "severity": "standard",
      "text": "Assume somebody who has used another chain understands this one. They will look for a fee picker, wait for confirmations, and assume their recovery words work here. See Legacy compatibility.",
      "url": "https://www.bitcoinsv.design/guide/rule/dd776c8dbe/",
      "page": {
        "title": "Getting to know your users",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/getting-to-know-your-users/"
      }
    },
    {
      "id": "c011785af6",
      "kind": "do",
      "severity": "standard",
      "text": "Test recovery before you polish onboarding: confirm a new user can restore their wallet on a second device before refining the first-run screens.",
      "url": "https://www.bitcoinsv.design/guide/rule/c011785af6/",
      "page": {
        "title": "Getting to know your users",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/getting-to-know-your-users/"
      }
    },
    {
      "id": "5e4df29166",
      "kind": "dont",
      "severity": "standard",
      "text": "Lead a store listing with self-custody or decentralisation. They are reasons to stay, not reasons to install.",
      "url": "https://www.bitcoinsv.design/guide/rule/5e4df29166/",
      "page": {
        "title": "Common user flows",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/common-user-flows/"
      }
    },
    {
      "id": "6f716b945f",
      "kind": "do",
      "severity": "standard",
      "text": "Use the device's own biometric with a passcode fallback, and require authentication for payments above a threshold the user can see.",
      "url": "https://www.bitcoinsv.design/guide/rule/6f716b945f/",
      "page": {
        "title": "Common user flows",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/common-user-flows/"
      }
    },
    {
      "id": "40259c712c",
      "kind": "do",
      "severity": "standard",
      "text": "Make the wallet's own activity the place to find out whether something worked. See Activity.",
      "url": "https://www.bitcoinsv.design/guide/rule/40259c712c/",
      "page": {
        "title": "Common user flows",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/common-user-flows/"
      }
    },
    {
      "id": "6d0c87d856",
      "kind": "do",
      "severity": "standard",
      "text": "Offer a view-only mode for people who should see a balance but not spend it.",
      "url": "https://www.bitcoinsv.design/guide/rule/6d0c87d856/",
      "page": {
        "title": "Common user flows",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/common-user-flows/"
      }
    },
    {
      "id": "69e63ba024",
      "kind": "dont",
      "severity": "standard",
      "text": "Keep showing onboarding hints to somebody on their hundredth payment.",
      "url": "https://www.bitcoinsv.design/guide/rule/69e63ba024/",
      "page": {
        "title": "Usage life cycle",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/usage-life-cycle/"
      }
    },
    {
      "id": "86f56f942f",
      "kind": "do",
      "severity": "standard",
      "text": "Teach each of the four at the moment it first applies: ownership when money first arrives, irreversibility on the first review screen, the backup when the balance is worth protecting, the network name wherever somebody pastes an address.",
      "url": "https://www.bitcoinsv.design/guide/rule/86f56f942f/",
      "page": {
        "title": "Usage life cycle",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/usage-life-cycle/"
      }
    },
    {
      "id": "1f6a29ac0d",
      "kind": "dont",
      "severity": "standard",
      "text": "Teach what the product can take care of for them, such as fees or key schemes. Every concept taught before it is needed is a reason to stop.",
      "url": "https://www.bitcoinsv.design/guide/rule/1f6a29ac0d/",
      "page": {
        "title": "Usage life cycle",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/usage-life-cycle/"
      }
    },
    {
      "id": "2a864d4717",
      "kind": "do",
      "severity": "standard",
      "text": "Make the first thing a new user does end with them holding real money: received from a person, or spent on something they wanted anyway.",
      "url": "https://www.bitcoinsv.design/guide/rule/2a864d4717/",
      "page": {
        "title": "Usage life cycle",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/usage-life-cycle/"
      }
    },
    {
      "id": "584baf8aaf",
      "kind": "dont",
      "severity": "standard",
      "text": "Build a practice wallet or a simulated payment in place of a real first receive. It teaches the user that the real thing is somewhere else.",
      "url": "https://www.bitcoinsv.design/guide/rule/584baf8aaf/",
      "page": {
        "title": "Usage life cycle",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/usage-life-cycle/"
      }
    },
    {
      "id": "86c37f9174",
      "kind": "do",
      "severity": "standard",
      "text": "Design for the person doing the introducing: a handle they can share, a payment request they can send, and a first payment that says who it came from. See Contacts.",
      "url": "https://www.bitcoinsv.design/guide/rule/86c37f9174/",
      "page": {
        "title": "Usage life cycle",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/usage-life-cycle/"
      }
    },
    {
      "id": "38199c11b4",
      "kind": "do",
      "severity": "standard",
      "text": "Get a new user from opening the app to holding money in one sitting, without leaving the app except to ask somebody to pay them.",
      "url": "https://www.bitcoinsv.design/guide/rule/38199c11b4/",
      "page": {
        "title": "Usage life cycle",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/usage-life-cycle/"
      }
    },
    {
      "id": "1e89fe909b",
      "kind": "do",
      "severity": "standard",
      "text": "Give every setup step a way back. A mistake during setup should cost a tap, not the wallet.",
      "url": "https://www.bitcoinsv.design/guide/rule/1e89fe909b/",
      "page": {
        "title": "Usage life cycle",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/usage-life-cycle/"
      }
    },
    {
      "id": "9f4988651b",
      "kind": "do",
      "severity": "standard",
      "text": "Ask the person, after a test, to explain to a friend what they just did. What they cannot explain did not land.",
      "url": "https://www.bitcoinsv.design/guide/rule/9f4988651b/",
      "page": {
        "title": "Usage life cycle",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/usage-life-cycle/"
      }
    },
    {
      "id": "44e7d6568e",
      "kind": "do",
      "severity": "standard",
      "text": "Measure where people stop, step by step, and work on the worst step first. A whole-funnel number tells you there is a problem and not where it is.",
      "url": "https://www.bitcoinsv.design/guide/rule/44e7d6568e/",
      "page": {
        "title": "Usage life cycle",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/usage-life-cycle/"
      }
    },
    {
      "id": "09a0b91ad8",
      "kind": "do",
      "severity": "standard",
      "text": "Design the \"frightening moment\" explicitly. A payment that looks stuck, an unexpected balance, an app asking for something alarming. One clear explanation at that moment can keep somebody who would otherwise leave.",
      "url": "https://www.bitcoinsv.design/guide/rule/09a0b91ad8/",
      "page": {
        "title": "Usage life cycle",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/usage-life-cycle/"
      }
    },
    {
      "id": "daa04676a4",
      "kind": "do",
      "severity": "standard",
      "text": "We suggest two causes to check first: being asked to choose a key scheme, and having nowhere to get any BSV. The first is yours to fix. See First use.",
      "url": "https://www.bitcoinsv.design/guide/rule/daa04676a4/",
      "page": {
        "title": "Usage life cycle",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/usage-life-cycle/"
      }
    },
    {
      "id": "9d2bbd0f1e",
      "kind": "do",
      "severity": "standard",
      "text": "Talk to the wallet through the connection standard rather than bundling one. The user keeps their keys where they already are, and your app works with wallets that did not exist when you shipped.",
      "url": "https://www.bitcoinsv.design/guide/rule/9d2bbd0f1e/",
      "page": {
        "title": "Interoperability",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/interoperability/"
      }
    },
    {
      "id": "82d554c9de",
      "kind": "dont",
      "severity": "standard",
      "text": "Build a wallet inside your app because it is quicker. You inherit key custody, recovery and support, and the user now has one more set of keys to lose.",
      "url": "https://www.bitcoinsv.design/guide/rule/82d554c9de/",
      "page": {
        "title": "Interoperability",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/interoperability/"
      }
    },
    {
      "id": "5d0805ff30",
      "kind": "do",
      "severity": "standard",
      "text": "Accept a pasted or scanned value without asking the user which kind it is. Detect it and say what you found.",
      "url": "https://www.bitcoinsv.design/guide/rule/5d0805ff30/",
      "page": {
        "title": "Interoperability",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/interoperability/"
      }
    },
    {
      "id": "df7caa73bd",
      "kind": "do",
      "severity": "standard",
      "text": "Support the peer-to-peer payment flow, where the payee's software supplies the output script and gets the transaction and its proof directly. It is the privacy-preserving default and it is how handles work.",
      "url": "https://www.bitcoinsv.design/guide/rule/df7caa73bd/",
      "page": {
        "title": "Interoperability",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/interoperability/"
      }
    },
    {
      "id": "7564b30c43",
      "kind": "do",
      "severity": "standard",
      "text": "Support restoring a backup written by other software, and report honestly what came across and what did not.",
      "url": "https://www.bitcoinsv.design/guide/rule/7564b30c43/",
      "page": {
        "title": "Interoperability",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/interoperability/"
      }
    },
    {
      "id": "ed9cf79714",
      "kind": "dont",
      "severity": "standard",
      "text": "Keep the only copy of a user's proofs on your server. That is custody by another name, whoever holds the keys.",
      "url": "https://www.bitcoinsv.design/guide/rule/ed9cf79714/",
      "page": {
        "title": "Interoperability",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/interoperability/"
      }
    },
    {
      "id": "45ceb7d433",
      "kind": "do",
      "severity": "standard",
      "text": "Verify Passes rather than issuing your own account. A person who has already proved who they are to somebody you trust should not have to do it again.",
      "url": "https://www.bitcoinsv.design/guide/rule/45ceb7d433/",
      "page": {
        "title": "Interoperability",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/interoperability/"
      }
    },
    {
      "id": "9b7e45558c",
      "kind": "do",
      "severity": "standard",
      "text": "Ask for the single field you need. A Pass can be shown selectively, and asking for all of it when you need one line is a design choice, not a protocol limit.",
      "url": "https://www.bitcoinsv.design/guide/rule/9b7e45558c/",
      "page": {
        "title": "Interoperability",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/interoperability/"
      }
    },
    {
      "id": "d7ed3e6a10",
      "kind": "do",
      "severity": "standard",
      "text": "Offer a plain export of contacts and labels, in a documented format, without a support request.",
      "url": "https://www.bitcoinsv.design/guide/rule/d7ed3e6a10/",
      "page": {
        "title": "Interoperability",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/interoperability/"
      }
    },
    {
      "id": "129a35ec55",
      "kind": "do",
      "severity": "standard",
      "text": "Encode a handle rather than an address where you can. It is shorter, it survives being printed once, and it does not tie a person to one key forever.",
      "url": "https://www.bitcoinsv.design/guide/rule/129a35ec55/",
      "page": {
        "title": "Interoperability",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/interoperability/"
      }
    },
    {
      "id": "3b682ab184",
      "kind": "do",
      "severity": "standard",
      "text": "Support animated codes for anything that does not fit in one frame, such as a transaction with its proof going to an offline signer.",
      "url": "https://www.bitcoinsv.design/guide/rule/3b682ab184/",
      "page": {
        "title": "Interoperability",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/interoperability/"
      }
    },
    {
      "id": "9fdd213885",
      "kind": "do",
      "severity": "standard",
      "text": "Use upper case for codes made only of digits, capitals and $%+-./:. Those encode in a smaller, faster-scanning mode. Handles and addresses do not qualify.",
      "url": "https://www.bitcoinsv.design/guide/rule/9fdd213885/",
      "page": {
        "title": "Interoperability",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/interoperability/"
      }
    },
    {
      "id": "fed7c84f43",
      "kind": "dont",
      "severity": "standard",
      "text": "Use a transaction format that leaves out the input proofs. The receiver then has to ask a third party whether the transaction is real.",
      "url": "https://www.bitcoinsv.design/guide/rule/fed7c84f43/",
      "page": {
        "title": "Interoperability",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/interoperability/"
      }
    },
    {
      "id": "4c2d4eeb47",
      "kind": "do",
      "severity": "standard",
      "text": "Follow the fountain-coded air-gap transport (BRC-141) rather than a private encoding, so a user's existing signer works with your software.",
      "url": "https://www.bitcoinsv.design/guide/rule/4c2d4eeb47/",
      "page": {
        "title": "Interoperability",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/interoperability/"
      }
    },
    {
      "id": "a5d21af2be",
      "kind": "do",
      "severity": "standard",
      "text": "Exchange public keys and pending transactions in documented formats, and let a cosigner review and sign in whatever wallet they already use.",
      "url": "https://www.bitcoinsv.design/guide/rule/a5d21af2be/",
      "page": {
        "title": "Interoperability",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/interoperability/"
      }
    },
    {
      "id": "a500cecc36",
      "kind": "do",
      "severity": "standard",
      "text": "List your dependencies somewhere a curious user can find them, and let the technical ones be changed.",
      "url": "https://www.bitcoinsv.design/guide/rule/a500cecc36/",
      "page": {
        "title": "Interoperability",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/interoperability/"
      }
    },
    {
      "id": "0c5f608d33",
      "kind": "do",
      "severity": "standard",
      "text": "Let a user point at their own header source and their own broadcaster. Most will never touch the setting, and the option costs little.",
      "url": "https://www.bitcoinsv.design/guide/rule/0c5f608d33/",
      "page": {
        "title": "Interoperability",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/interoperability/"
      }
    },
    {
      "id": "975540d1d7",
      "kind": "dont",
      "severity": "standard",
      "text": "Ship a control labelled \"button\". A QR code built as an unlabelled image is not selectable at all, so it does not exist for a screen reader user.",
      "url": "https://www.bitcoinsv.design/guide/rule/975540d1d7/",
      "page": {
        "title": "Accessibility",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/accessibility/"
      }
    },
    {
      "id": "c4b54d03e8",
      "kind": "do",
      "severity": "standard",
      "text": "Name the thing and its effect: \"QR code, double tap to copy the payment handle\".",
      "url": "https://www.bitcoinsv.design/guide/rule/c4b54d03e8/",
      "page": {
        "title": "Accessibility",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/accessibility/"
      }
    },
    {
      "id": "b61d8d3e8a",
      "kind": "do",
      "severity": "standard",
      "text": "Put the recipient before the amount in the reading order of a review screen. It is the field most worth hearing first.",
      "url": "https://www.bitcoinsv.design/guide/rule/b61d8d3e8a/",
      "page": {
        "title": "Accessibility",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/accessibility/"
      }
    },
    {
      "id": "e62777c1c9",
      "kind": "do",
      "severity": "standard",
      "text": "Give every scan a typed or pasted equivalent. A user who cannot aim a camera still needs to pay.",
      "url": "https://www.bitcoinsv.design/guide/rule/e62777c1c9/",
      "page": {
        "title": "Accessibility",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/accessibility/"
      }
    },
    {
      "id": "dd06a6092e",
      "kind": "do",
      "severity": "standard",
      "text": "Pair colour with a word or a symbol, always. Sent and received, plus and minus, not just red and green.",
      "url": "https://www.bitcoinsv.design/guide/rule/dd06a6092e/",
      "page": {
        "title": "Accessibility",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/accessibility/"
      }
    },
    {
      "id": "58d003b536",
      "kind": "dont",
      "severity": "standard",
      "text": "Put a countdown on a confirmation. Nothing here expires, so a timer is a difficulty you added. If a rate quote goes stale, refresh it rather than timing the person out.",
      "url": "https://www.bitcoinsv.design/guide/rule/58d003b536/",
      "page": {
        "title": "Accessibility",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/accessibility/"
      }
    },
    {
      "id": "8d7230c7d8",
      "kind": "do",
      "severity": "standard",
      "text": "Make sure an amount reads aloud correctly. \"12,500 sats\" should be spoken as a number and a unit, which means it has to be text with a real unit beside it.",
      "url": "https://www.bitcoinsv.design/guide/rule/8d7230c7d8/",
      "page": {
        "title": "Accessibility",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/accessibility/"
      }
    },
    {
      "id": "c4dae24589",
      "kind": "do",
      "severity": "standard",
      "text": "Use fixed-width digits (tabular-nums), so a changing balance does not shift the layout under a magnified viewport.",
      "url": "https://www.bitcoinsv.design/guide/rule/c4dae24589/",
      "page": {
        "title": "Accessibility",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/accessibility/"
      }
    },
    {
      "id": "e6ffe7da39",
      "kind": "do",
      "severity": "standard",
      "text": "Offer at least one route that does not need handwriting: an encrypted file the user stores themselves, split shares held by people they trust, or a signing device.",
      "url": "https://www.bitcoinsv.design/guide/rule/e6ffe7da39/",
      "page": {
        "title": "Accessibility",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/accessibility/"
      }
    },
    {
      "id": "0ceff10f13",
      "kind": "do",
      "severity": "standard",
      "text": "Let the words be read aloud in private, and let the confirmation step be completed with a screen reader. A test that only works by sight makes recovery impossible later.",
      "url": "https://www.bitcoinsv.design/guide/rule/0ceff10f13/",
      "page": {
        "title": "Accessibility",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/accessibility/"
      }
    },
    {
      "id": "e93cc9b805",
      "kind": "do",
      "severity": "standard",
      "text": "Write at a reading age of about twelve. Short sentences, common words, one idea each.",
      "url": "https://www.bitcoinsv.design/guide/rule/e93cc9b805/",
      "page": {
        "title": "Accessibility",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/accessibility/"
      }
    },
    {
      "id": "89b13e7a98",
      "kind": "do",
      "severity": "standard",
      "text": "Say what happened and what it means for the money. \"The payment did not go through. Nothing left your wallet.\" beats an error code every time.",
      "url": "https://www.bitcoinsv.design/guide/rule/89b13e7a98/",
      "page": {
        "title": "Accessibility",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/accessibility/"
      }
    },
    {
      "id": "2fb80808d8",
      "kind": "do",
      "severity": "standard",
      "text": "Run the send and recovery flows with the screen reader on and the screen off. It takes an afternoon and finds problems an automated audit misses.",
      "url": "https://www.bitcoinsv.design/guide/rule/2fb80808d8/",
      "page": {
        "title": "Accessibility",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/accessibility/"
      }
    },
    {
      "id": "a4d68925d0",
      "kind": "do",
      "severity": "standard",
      "text": "Include people with disabilities in research, paid, rather than simulating them.",
      "url": "https://www.bitcoinsv.design/guide/rule/a4d68925d0/",
      "page": {
        "title": "Accessibility",
        "section": "Designing BSV products",
        "url": "https://www.bitcoinsv.design/guide/designing-products/accessibility/"
      }
    },
    {
      "id": "ca7237170b",
      "kind": "do",
      "severity": "standard",
      "text": "Write the connect flow around \"your wallet\". Name a specific wallet only when helping somebody install one.",
      "url": "https://www.bitcoinsv.design/guide/rule/ca7237170b/",
      "page": {
        "title": "Connecting a wallet",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/connecting-a-wallet/"
      }
    },
    {
      "id": "c497ac76cc",
      "kind": "do",
      "severity": "standard",
      "text": "Warn the user and ask for approval again when an app's domain or certificate changes unexpectedly.",
      "url": "https://www.bitcoinsv.design/guide/rule/c497ac76cc/",
      "page": {
        "title": "Connecting a wallet",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/connecting-a-wallet/"
      }
    },
    {
      "id": "64d59112cd",
      "kind": "do",
      "severity": "standard",
      "text": "Publish an exposure statement for your app: the wallet methods you call, the protocols and baskets you use, whether you request the identity key or Passes, what wallet data you keep, and whether agents can act through your app.",
      "url": "https://www.bitcoinsv.design/guide/rule/64d59112cd/",
      "page": {
        "title": "Connecting a wallet",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/connecting-a-wallet/"
      }
    },
    {
      "id": "924f375af5",
      "kind": "do",
      "severity": "standard",
      "text": "If you build a wallet, publish one for the wallet too: what is allowed automatically, how apps are kept apart, where data is stored, what a full backup contains, and whether users can move funds without your service.",
      "url": "https://www.bitcoinsv.design/guide/rule/924f375af5/",
      "page": {
        "title": "Connecting a wallet",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/connecting-a-wallet/"
      }
    },
    {
      "id": "0c8131ca43",
      "kind": "do",
      "severity": "standard",
      "text": "Write the description for each permission your app declares as what the user gets from it: \"To save your reading position\", not \"Protocol access\".",
      "url": "https://www.bitcoinsv.design/guide/rule/0c8131ca43/",
      "page": {
        "title": "Permissions and allowances",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/permissions-and-allowances/"
      }
    },
    {
      "id": "3a68bd2cb5",
      "kind": "do",
      "severity": "standard",
      "text": "Let the user approve some items in a grouped prompt and decline others, and let the app carry on with what was approved.",
      "url": "https://www.bitcoinsv.design/guide/rule/3a68bd2cb5/",
      "page": {
        "title": "Permissions and allowances",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/permissions-and-allowances/"
      }
    },
    {
      "id": "a72759d455",
      "kind": "do",
      "severity": "standard",
      "text": "Show a waiting state in the app that tells the user their wallet is asking them something, and keep it until the wallet answers.",
      "url": "https://www.bitcoinsv.design/guide/rule/a72759d455/",
      "page": {
        "title": "Permissions and allowances",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/permissions-and-allowances/"
      }
    },
    {
      "id": "11b1c8630c",
      "kind": "do",
      "severity": "standard",
      "text": "Set an allowance to expire by default, and make a lasting allowance an explicit choice the user picks.",
      "url": "https://www.bitcoinsv.design/guide/rule/11b1c8630c/",
      "page": {
        "title": "Permissions and allowances",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/permissions-and-allowances/"
      }
    },
    {
      "id": "493751c5a9",
      "kind": "do",
      "severity": "standard",
      "text": "Show the date a monthly allowance starts again beside what is left of it: \"1,200 of 5,000 sats left, resets 1 December\".",
      "url": "https://www.bitcoinsv.design/guide/rule/493751c5a9/",
      "page": {
        "title": "Permissions and allowances",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/permissions-and-allowances/"
      }
    },
    {
      "id": "e205b2169b",
      "kind": "do",
      "severity": "standard",
      "text": "After a refusal, say in one sentence what the app cannot do without the permission, and keep everything else working.",
      "url": "https://www.bitcoinsv.design/guide/rule/e205b2169b/",
      "page": {
        "title": "Permissions and allowances",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/permissions-and-allowances/"
      }
    },
    {
      "id": "8232bd84ee",
      "kind": "do",
      "severity": "standard",
      "text": "Ask again only when the user next uses the feature that needs the permission, not on the next screen.",
      "url": "https://www.bitcoinsv.design/guide/rule/8232bd84ee/",
      "page": {
        "title": "Permissions and allowances",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/permissions-and-allowances/"
      }
    },
    {
      "id": "63de192726",
      "kind": "do",
      "severity": "standard",
      "text": "Use one button for a first visit and a return visit. There is no separate sign-up, because there is no account to create.",
      "url": "https://www.bitcoinsv.design/guide/rule/63de192726/",
      "page": {
        "title": "Signing in",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/signing-in/"
      }
    },
    {
      "id": "d081585700",
      "kind": "do",
      "severity": "standard",
      "text": "Recognise a returning user without a wallet prompt where the wallet already holds your app's permission.",
      "url": "https://www.bitcoinsv.design/guide/rule/d081585700/",
      "page": {
        "title": "Signing in",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/signing-in/"
      }
    },
    {
      "id": "dfd139ee15",
      "kind": "dont",
      "severity": "standard",
      "text": "Show a public key as the user's name. Use the name they gave you, or a plain label such as \"Your account\".",
      "url": "https://www.bitcoinsv.design/guide/rule/dfd139ee15/",
      "page": {
        "title": "Signing in",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/signing-in/"
      }
    },
    {
      "id": "f319bd8f6a",
      "kind": "do",
      "severity": "standard",
      "text": "Tell people before their first sign-in that the account belongs to their wallet: \"Restore this wallet and your account comes back with it. A different wallet is a new account.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/f319bd8f6a/",
      "page": {
        "title": "Signing in",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/signing-in/"
      }
    },
    {
      "id": "cc199d3d88",
      "kind": "do",
      "severity": "standard",
      "text": "Ask for the narrowest field that answers the question: \"over 18\", not a date of birth.",
      "url": "https://www.bitcoinsv.design/guide/rule/cc199d3d88/",
      "page": {
        "title": "Signing in",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/signing-in/"
      }
    },
    {
      "id": "783536be60",
      "kind": "do",
      "severity": "standard",
      "text": "Say which Pass issuers you accept, and offer another way to qualify where the law allows.",
      "url": "https://www.bitcoinsv.design/guide/rule/783536be60/",
      "page": {
        "title": "Signing in",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/signing-in/"
      }
    },
    {
      "id": "664c4e5f5a",
      "kind": "dont",
      "severity": "standard",
      "text": "Make a Pass a condition of signing in when only one feature needs it. Ask at that feature.",
      "url": "https://www.bitcoinsv.design/guide/rule/664c4e5f5a/",
      "page": {
        "title": "Signing in",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/signing-in/"
      }
    },
    {
      "id": "4692ae01e3",
      "kind": "do",
      "severity": "standard",
      "text": "After the first sign-in, say in one line what your app received and what it cannot see: \"Pixel Arcade can recognise you next time. It can't see your balance or your other apps.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/4692ae01e3/",
      "page": {
        "title": "Signing in",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/signing-in/"
      }
    },
    {
      "id": "f8fdfce7d2",
      "kind": "do",
      "severity": "standard",
      "text": "Accept both forms in any field that takes a handle. A user pasting anna@example.com into a wallet using the newer scheme should simply work.",
      "url": "https://www.bitcoinsv.design/guide/rule/f8fdfce7d2/",
      "page": {
        "title": "Paying by handle",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/paying-by-handle/"
      }
    },
    {
      "id": "e308418a77",
      "kind": "do",
      "severity": "standard",
      "text": "Make saving a resolved handle as a contact the obvious next step. The second payment to someone should never involve typing.",
      "url": "https://www.bitcoinsv.design/guide/rule/e308418a77/",
      "page": {
        "title": "Paying by handle",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/paying-by-handle/"
      }
    },
    {
      "id": "8d56db7003",
      "kind": "dont",
      "severity": "standard",
      "text": "Show the derived address anywhere in the main flow. It is a one-time internal value and putting it on screen invites comparison nobody can perform.",
      "url": "https://www.bitcoinsv.design/guide/rule/8d56db7003/",
      "page": {
        "title": "Paying by handle",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/paying-by-handle/"
      }
    },
    {
      "id": "61c7489fc9",
      "kind": "do",
      "severity": "standard",
      "text": "Offer matches from saved contacts as the user types a handle, before accepting free text.",
      "url": "https://www.bitcoinsv.design/guide/rule/61c7489fc9/",
      "page": {
        "title": "Paying by handle",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/paying-by-handle/"
      }
    },
    {
      "id": "6e2c0b3343",
      "kind": "dont",
      "severity": "standard",
      "text": "Show a handle on the review screen without the profile name it resolved to. On its own, a one-character difference is invisible.",
      "url": "https://www.bitcoinsv.design/guide/rule/6e2c0b3343/",
      "page": {
        "title": "Paying by handle",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/paying-by-handle/"
      }
    },
    {
      "id": "7109c0692f",
      "kind": "do",
      "severity": "standard",
      "text": "Default to satoshis, not BSV, for the bitcoin figure. Everyday amounts are hundreds or thousands of satoshis, and the decimal form is unreadable at that scale.",
      "url": "https://www.bitcoinsv.design/guide/rule/7109c0692f/",
      "page": {
        "title": "Amounts and units",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/amounts-and-units/"
      }
    },
    {
      "id": "cb0ea7723f",
      "kind": "do",
      "severity": "standard",
      "text": "Write \"sats\" or \"satoshis\" in words, and group digits in threes: 12,500 sats.",
      "url": "https://www.bitcoinsv.design/guide/rule/cb0ea7723f/",
      "page": {
        "title": "Amounts and units",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/amounts-and-units/"
      }
    },
    {
      "id": "0259e17026",
      "kind": "dont",
      "severity": "standard",
      "text": "Adopt a satoshi glyph. None renders reliably, none is in common fonts, and your users have not seen any of them.",
      "url": "https://www.bitcoinsv.design/guide/rule/0259e17026/",
      "page": {
        "title": "Amounts and units",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/amounts-and-units/"
      }
    },
    {
      "id": "3c14de2099",
      "kind": "do",
      "severity": "standard",
      "text": "Prefer \"Bitcoin SV\" where there is room and the reader may be new to it, \"BSV\" where space is tight or the term repeats in a list.",
      "url": "https://www.bitcoinsv.design/guide/rule/3c14de2099/",
      "page": {
        "title": "Amounts and units",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/amounts-and-units/"
      }
    },
    {
      "id": "3efb93cfc2",
      "kind": "do",
      "severity": "standard",
      "text": "Lead with local currency for anything a person chooses to buy, with the satoshi amount beside it: \"£12.00 (24,000 sats)\".",
      "url": "https://www.bitcoinsv.design/guide/rule/3efb93cfc2/",
      "page": {
        "title": "Amounts and units",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/amounts-and-units/"
      }
    },
    {
      "id": "4db298dc64",
      "kind": "do",
      "severity": "standard",
      "text": "Lead with satoshis for figures software decides or enforces, such as allowance limits, what is left of an allowance and agent budgets, with local currency beside them.",
      "url": "https://www.bitcoinsv.design/guide/rule/4db298dc64/",
      "page": {
        "title": "Amounts and units",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/amounts-and-units/"
      }
    },
    {
      "id": "ee876b1dbf",
      "kind": "do",
      "severity": "standard",
      "text": "Let the two be swapped in one tap, and remember the choice.",
      "url": "https://www.bitcoinsv.design/guide/rule/ee876b1dbf/",
      "page": {
        "title": "Amounts and units",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/amounts-and-units/"
      }
    },
    {
      "id": "052b376429",
      "kind": "do",
      "severity": "standard",
      "text": "Use tabular figures (tabular-nums in CSS) everywhere a figure appears, so digits line up in a column and a changing balance does not shift the layout.",
      "url": "https://www.bitcoinsv.design/guide/rule/052b376429/",
      "page": {
        "title": "Amounts and units",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/amounts-and-units/"
      }
    },
    {
      "id": "a50eb4bb1f",
      "kind": "do",
      "severity": "standard",
      "text": "Format for the reader's locale. 1,200 and 1.200 and 1 200 are the same number to three different people and three different numbers to one of them.",
      "url": "https://www.bitcoinsv.design/guide/rule/a50eb4bb1f/",
      "page": {
        "title": "Amounts and units",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/amounts-and-units/"
      }
    },
    {
      "id": "848ac6bb53",
      "kind": "do",
      "severity": "standard",
      "text": "Leave the fee off the review screen and put it in the transaction details. If it is shown, show it in local currency: \"Fee: less than 1p\".",
      "url": "https://www.bitcoinsv.design/guide/rule/848ac6bb53/",
      "page": {
        "title": "Amounts and units",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/amounts-and-units/"
      }
    },
    {
      "id": "fb1efa5b2d",
      "kind": "do",
      "severity": "standard",
      "text": "Show the individual amount where it happens and the aggregate where the user is deciding something. \"About 1p (20 sats)\" on the article, \"940 sats (about 47p) today\" in the allowance summary.",
      "url": "https://www.bitcoinsv.design/guide/rule/fb1efa5b2d/",
      "page": {
        "title": "Amounts and units",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/amounts-and-units/"
      }
    },
    {
      "id": "62d7f58727",
      "kind": "do",
      "severity": "standard",
      "text": "Round aggregates to a sensible precision in local currency. \"About 24p today\" is more useful than \"£0.2384\".",
      "url": "https://www.bitcoinsv.design/guide/rule/62d7f58727/",
      "page": {
        "title": "Amounts and units",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/amounts-and-units/"
      }
    },
    {
      "id": "3873d5026d",
      "kind": "do",
      "severity": "standard",
      "text": "Make sure an amount reads correctly aloud. A screen reader should say \"twelve thousand five hundred satoshis\", which means the unit needs to be text rather than an image or an unlabelled glyph.",
      "url": "https://www.bitcoinsv.design/guide/rule/3873d5026d/",
      "page": {
        "title": "Amounts and units",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/amounts-and-units/"
      }
    },
    {
      "id": "8d1e3f0487",
      "kind": "do",
      "severity": "standard",
      "text": "Never rely on colour alone to show direction. Pair the colour with a sign or a word.",
      "url": "https://www.bitcoinsv.design/guide/rule/8d1e3f0487/",
      "page": {
        "title": "Amounts and units",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/amounts-and-units/"
      }
    },
    {
      "id": "2b56360d79",
      "kind": "do",
      "severity": "standard",
      "text": "Put the cost on the thing: \"about 1p (20 sats)\" on the article link, \"5 sats per request\" on the endpoint.",
      "url": "https://www.bitcoinsv.design/guide/rule/2b56360d79/",
      "page": {
        "title": "Charging per use",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/charging-per-use/"
      }
    },
    {
      "id": "953f6e5714",
      "kind": "do",
      "severity": "standard",
      "text": "Lead with local currency for anything a person chooses to buy, and with satoshis for anything software decides, with the other figure beside it. \"About 1p\" means something to a reader; \"20 sats\" means something to a developer.",
      "url": "https://www.bitcoinsv.design/guide/rule/953f6e5714/",
      "page": {
        "title": "Charging per use",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/charging-per-use/"
      }
    },
    {
      "id": "c438b741e1",
      "kind": "dont",
      "severity": "standard",
      "text": "Round a per-use price up to something tidy because the real number looks odd. The real number is the product's best argument.",
      "url": "https://www.bitcoinsv.design/guide/rule/c438b741e1/",
      "page": {
        "title": "Charging per use",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/charging-per-use/"
      }
    },
    {
      "id": "9f5e2cbddf",
      "kind": "do",
      "severity": "standard",
      "text": "Group by what the user was doing, not by transaction. \"The Satoshi Vision, 14 articles, about 14p (280 sats)\" is one row they understand.",
      "url": "https://www.bitcoinsv.design/guide/rule/9f5e2cbddf/",
      "page": {
        "title": "Charging per use",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/charging-per-use/"
      }
    },
    {
      "id": "c9e64e1560",
      "kind": "do",
      "severity": "standard",
      "text": "Let that row open into the individual payments, for the person who wants them and the accountant who needs them.",
      "url": "https://www.bitcoinsv.design/guide/rule/c9e64e1560/",
      "page": {
        "title": "Charging per use",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/charging-per-use/"
      }
    },
    {
      "id": "c3d6ec0f9a",
      "kind": "do",
      "severity": "standard",
      "text": "Lead with the period total. \"About 24p today\" answers the question they actually have.",
      "url": "https://www.bitcoinsv.design/guide/rule/c3d6ec0f9a/",
      "page": {
        "title": "Charging per use",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/charging-per-use/"
      }
    },
    {
      "id": "e84ab93e7c",
      "kind": "dont",
      "severity": "standard",
      "text": "Show a notification per payment. The first one is informative, the fortieth is why the feature gets switched off.",
      "url": "https://www.bitcoinsv.design/guide/rule/e84ab93e7c/",
      "page": {
        "title": "Charging per use",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/charging-per-use/"
      }
    },
    {
      "id": "fbbf1fb8c9",
      "kind": "do",
      "severity": "standard",
      "text": "Show the rate and the elapsed cost together, and update at a pace a person can read. A figure changing ten times a second is not information.",
      "url": "https://www.bitcoinsv.design/guide/rule/fbbf1fb8c9/",
      "page": {
        "title": "Charging per use",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/charging-per-use/"
      }
    },
    {
      "id": "e1b5b1016a",
      "kind": "do",
      "severity": "standard",
      "text": "Decide what happens when one payment in a hundred fails: retry, skip, or stop. Then tell the user which, once, rather than reporting each one.",
      "url": "https://www.bitcoinsv.design/guide/rule/e1b5b1016a/",
      "page": {
        "title": "Charging per use",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/charging-per-use/"
      }
    },
    {
      "id": "dc1f50e8b3",
      "kind": "do",
      "severity": "standard",
      "text": "Give them the transaction reference and the output, so somebody technical can help.",
      "url": "https://www.bitcoinsv.design/guide/rule/dc1f50e8b3/",
      "page": {
        "title": "Wrong-network payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/wrong-network-payments/"
      }
    },
    {
      "id": "c1d8c3eddf",
      "kind": "dont",
      "severity": "standard",
      "text": "Say \"transaction failed\". It did not fail. It succeeded somewhere else, and telling somebody it failed sends them looking for a refund that is not coming.",
      "url": "https://www.bitcoinsv.design/guide/rule/c1d8c3eddf/",
      "page": {
        "title": "Wrong-network payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/wrong-network-payments/"
      }
    },
    {
      "id": "6e0e8f799c",
      "kind": "do",
      "severity": "standard",
      "text": "Treat a first withdrawal to a new address as a different flow from a repeat one.",
      "url": "https://www.bitcoinsv.design/guide/rule/6e0e8f799c/",
      "page": {
        "title": "Wrong-network payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/wrong-network-payments/"
      }
    },
    {
      "id": "0e448050b8",
      "kind": "do",
      "severity": "standard",
      "text": "End every error with one thing the user can do, as a button where there is one.",
      "url": "https://www.bitcoinsv.design/guide/rule/0e448050b8/",
      "page": {
        "title": "Errors and failed payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/errors-and-failed-payments/"
      }
    },
    {
      "id": "fd58b25cc9",
      "kind": "do",
      "severity": "standard",
      "text": "Put the error code and technical detail in an expandable details area with a copy button, so support can ask for it.",
      "url": "https://www.bitcoinsv.design/guide/rule/fd58b25cc9/",
      "page": {
        "title": "Errors and failed payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/errors-and-failed-payments/"
      }
    },
    {
      "id": "987ac15fa3",
      "kind": "do",
      "severity": "standard",
      "text": "Keep what the user entered. Return them to where they were with the amount, recipient and note still filled in.",
      "url": "https://www.bitcoinsv.design/guide/rule/987ac15fa3/",
      "page": {
        "title": "Errors and failed payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/errors-and-failed-payments/"
      }
    },
    {
      "id": "29c4f5d4cc",
      "kind": "dont",
      "severity": "standard",
      "text": "Write \"Something went wrong\" on its own. If you truly do not know what happened, say what you do know and whether money moved.",
      "url": "https://www.bitcoinsv.design/guide/rule/29c4f5d4cc/",
      "page": {
        "title": "Errors and failed payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/errors-and-failed-payments/"
      }
    },
    {
      "id": "cf11c641f7",
      "kind": "do",
      "severity": "standard",
      "text": "Explain a failure in the app when it is about the app's task, such as an article not unlocking, and in the wallet when it is about the user's money or permissions.",
      "url": "https://www.bitcoinsv.design/guide/rule/cf11c641f7/",
      "page": {
        "title": "Errors and failed payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/errors-and-failed-payments/"
      }
    },
    {
      "id": "0199a519d1",
      "kind": "dont",
      "severity": "standard",
      "text": "Show a refusal or an unanswered wallet prompt in an error style. Both are the user's choice, and red tells them they did something wrong.",
      "url": "https://www.bitcoinsv.design/guide/rule/0199a519d1/",
      "page": {
        "title": "Errors and failed payments",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/errors-and-failed-payments/"
      }
    },
    {
      "id": "ae1053b72e",
      "kind": "do",
      "severity": "standard",
      "text": "Show all four on one screen, as current values rather than settings. \"412 of 5,000 sats, 18 payments today, 3 services, 22 days left\" is a status, and a settings form is not.",
      "url": "https://www.bitcoinsv.design/guide/rule/ae1053b72e/",
      "page": {
        "title": "Letting an agent spend",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/letting-an-agent-spend/"
      }
    },
    {
      "id": "5199ba4b4f",
      "kind": "do",
      "severity": "standard",
      "text": "Group by purpose, not by payment. \"Research assistant: 6 sources, 240 sats\" is reviewable; forty rows are not.",
      "url": "https://www.bitcoinsv.design/guide/rule/5199ba4b4f/",
      "page": {
        "title": "Letting an agent spend",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/letting-an-agent-spend/"
      }
    },
    {
      "id": "e430eb4b01",
      "kind": "do",
      "severity": "standard",
      "text": "Say what stopping means: no further payments, work in progress abandoned, funds stay where they are. A user who is not sure what the button does will not press it.",
      "url": "https://www.bitcoinsv.design/guide/rule/e430eb4b01/",
      "page": {
        "title": "Letting an agent spend",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/letting-an-agent-spend/"
      }
    },
    {
      "id": "4c5769140c",
      "kind": "do",
      "severity": "standard",
      "text": "Report on a human schedule. A daily summary a person reads beats a real-time feed nobody watches.",
      "url": "https://www.bitcoinsv.design/guide/rule/4c5769140c/",
      "page": {
        "title": "Letting an agent spend",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/letting-an-agent-spend/"
      }
    },
    {
      "id": "88096862ab",
      "kind": "do",
      "severity": "standard",
      "text": "Choose by what you need enforced on chain rather than by what is popular. A loyalty point and a regulated instrument are not the same design problem, and the stricter family exists for the second.",
      "url": "https://www.bitcoinsv.design/guide/rule/88096862ab/",
      "page": {
        "title": "Holding tokens",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/holding-tokens/"
      }
    },
    {
      "id": "cef6a5fb47",
      "kind": "do",
      "severity": "standard",
      "text": "State the minimum transaction version any script you document requires. A script that works in one version and silently fails in another is the worst kind of documentation error.",
      "url": "https://www.bitcoinsv.design/guide/rule/cef6a5fb47/",
      "page": {
        "title": "Spending conditions",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/spending-conditions/"
      }
    },
    {
      "id": "165a3631ce",
      "kind": "dont",
      "severity": "standard",
      "text": "Assume every wallet or service in the chain of custody emits the version your script needs. Check before you depend on it.",
      "url": "https://www.bitcoinsv.design/guide/rule/165a3631ce/",
      "page": {
        "title": "Spending conditions",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/spending-conditions/"
      }
    },
    {
      "id": "c25799d12f",
      "kind": "do",
      "severity": "standard",
      "text": "Describe a condition by its consequence: \"Locked until 1 March 2027. Nobody can move this, including you.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/c25799d12f/",
      "page": {
        "title": "Spending conditions",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/spending-conditions/"
      }
    },
    {
      "id": "5e1c50a8ad",
      "kind": "do",
      "severity": "standard",
      "text": "Show the whole schedule on one screen, including the rules that have not taken effect yet.",
      "url": "https://www.bitcoinsv.design/guide/rule/5e1c50a8ad/",
      "page": {
        "title": "Spending conditions",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/spending-conditions/"
      }
    },
    {
      "id": "c52aed0ae0",
      "kind": "do",
      "severity": "standard",
      "text": "Let an unfinished setup be saved and resumed. These arrangements need several devices or several people and rarely come together in one sitting.",
      "url": "https://www.bitcoinsv.design/guide/rule/c52aed0ae0/",
      "page": {
        "title": "Spending conditions",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/spending-conditions/"
      }
    },
    {
      "id": "14e24f95bf",
      "kind": "dont",
      "severity": "standard",
      "text": "Offer a condition builder to ordinary users. Offer two or three worked arrangements with names and plain descriptions, and let the complexity live in the templates rather than in the user's head.",
      "url": "https://www.bitcoinsv.design/guide/rule/14e24f95bf/",
      "page": {
        "title": "Spending conditions",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/spending-conditions/"
      }
    },
    {
      "id": "3b81bf9bb5",
      "kind": "do",
      "severity": "standard",
      "text": "Treat the overlay as a dependency the user should know exists, the way you would treat any other service. See Interoperability.",
      "url": "https://www.bitcoinsv.design/guide/rule/3b81bf9bb5/",
      "page": {
        "title": "Storing data on chain",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/storing-data-on-chain/"
      }
    },
    {
      "id": "335014706c",
      "kind": "do",
      "severity": "standard",
      "text": "Show progress honestly for anything large, and say what happens if it stops halfway. A partially written file is a real state, not a theoretical one.",
      "url": "https://www.bitcoinsv.design/guide/rule/335014706c/",
      "page": {
        "title": "Storing data on chain",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/storing-data-on-chain/"
      }
    },
    {
      "id": "11cb102c91",
      "kind": "dont",
      "severity": "standard",
      "text": "Put a large file on chain because you can. Cost is not the constraint; permanence is, and so is the user's understanding of it.",
      "url": "https://www.bitcoinsv.design/guide/rule/11cb102c91/",
      "page": {
        "title": "Storing data on chain",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/storing-data-on-chain/"
      }
    },
    {
      "id": "fec32573be",
      "kind": "do",
      "severity": "standard",
      "text": "Say \"anchored in block 951,204\" alongside the human date. The block is the fact; the date is the convenience.",
      "url": "https://www.bitcoinsv.design/guide/rule/fec32573be/",
      "page": {
        "title": "Storing data on chain",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/storing-data-on-chain/"
      }
    },
    {
      "id": "46b033fefa",
      "kind": "do",
      "severity": "standard",
      "text": "When no wallet answers, say that the wallet may be closed as well as missing: \"Open your BSV wallet, or install one, then try again.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/46b033fefa/",
      "page": {
        "title": "Web apps and native apps",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/web-and-native-apps/"
      }
    },
    {
      "id": "060373c22b",
      "kind": "do",
      "severity": "standard",
      "text": "Detect the ordinary phone browser and say so before the person presses anything: \"To pay here, open this page in your BSV wallet's browser.\" Offer to copy the link, and a way to install a wallet.",
      "url": "https://www.bitcoinsv.design/guide/rule/060373c22b/",
      "page": {
        "title": "Web apps and native apps",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/web-and-native-apps/"
      }
    },
    {
      "id": "00b6e06f40",
      "kind": "dont",
      "severity": "standard",
      "text": "Show a Connect button on a phone browser that cannot connect, or an error only after it is pressed.",
      "url": "https://www.bitcoinsv.design/guide/rule/00b6e06f40/",
      "page": {
        "title": "Web apps and native apps",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/web-and-native-apps/"
      }
    },
    {
      "id": "a020c1b97d",
      "kind": "do",
      "severity": "standard",
      "text": "Show what the person is waiting for while the approval is in another app or on another device, and bring them back to the exact step they left.",
      "url": "https://www.bitcoinsv.design/guide/rule/a020c1b97d/",
      "page": {
        "title": "Web apps and native apps",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/web-and-native-apps/"
      }
    },
    {
      "id": "2941ae4349",
      "kind": "dont",
      "severity": "standard",
      "text": "Treat leaving for the wallet as cancelling. A person who switches to approve and comes back should find the request still waiting, not a reset form.",
      "url": "https://www.bitcoinsv.design/guide/rule/2941ae4349/",
      "page": {
        "title": "Web apps and native apps",
        "section": "Patterns",
        "url": "https://www.bitcoinsv.design/guide/patterns/web-and-native-apps/"
      }
    },
    {
      "id": "20b02271ab",
      "kind": "do",
      "severity": "standard",
      "text": "Read the reasoning and adapt. A reference design that is copied screen for screen produces a product that is identical to everyone else's and fits nobody's users in particular.",
      "url": "https://www.bitcoinsv.design/guide/rule/20b02271ab/",
      "page": {
        "title": "Daily spending wallet",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/"
      }
    },
    {
      "id": "27f66f4202",
      "kind": "do",
      "severity": "standard",
      "text": "Start from Connecting a wallet and Payments if you are building the real thing. Nearly every surprise traces back to one of those two.",
      "url": "https://www.bitcoinsv.design/guide/rule/27f66f4202/",
      "page": {
        "title": "Daily spending wallet",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/"
      }
    },
    {
      "id": "8c3fc74dbf",
      "kind": "dont",
      "severity": "standard",
      "text": "Treat this as a specification. It is one defensible set of answers, and several of the questions are genuinely open. Most flow pages list their open questions.",
      "url": "https://www.bitcoinsv.design/guide/rule/8c3fc74dbf/",
      "page": {
        "title": "Daily spending wallet",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/"
      }
    },
    {
      "id": "50abe868e0",
      "kind": "do",
      "severity": "standard",
      "text": "After the first money arrives, suggest a maximum balance by asking the question that answers it: \"How much would you be comfortable losing if this phone were stolen?\" See Wallet setups.",
      "url": "https://www.bitcoinsv.design/guide/rule/50abe868e0/",
      "page": {
        "title": "Daily spending wallet",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/"
      }
    },
    {
      "id": "ab9764be8d",
      "kind": "do",
      "severity": "standard",
      "text": "Say what it does in the first line, in the words of someone who does not know what BSV is. \"Pay anyone in seconds, for less than a penny\" works. \"Non-custodial BSV wallet with a standard app interface\" does not.",
      "url": "https://www.bitcoinsv.design/guide/rule/ab9764be8d/",
      "page": {
        "title": "First use",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/first-use/"
      }
    },
    {
      "id": "7e36fd9141",
      "kind": "dont",
      "severity": "standard",
      "text": "Lead with self-custody, sovereignty or decentralisation. They are reasons to stay, not reasons to install.",
      "url": "https://www.bitcoinsv.design/guide/rule/7e36fd9141/",
      "page": {
        "title": "First use",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/first-use/"
      }
    },
    {
      "id": "bdf9c24167",
      "kind": "do",
      "severity": "standard",
      "text": "Create the wallet and show it. The user can have a working, empty wallet within seconds of opening the app.",
      "url": "https://www.bitcoinsv.design/guide/rule/bdf9c24167/",
      "page": {
        "title": "First use",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/first-use/"
      }
    },
    {
      "id": "ef3c6c6d7b",
      "kind": "do",
      "severity": "standard",
      "text": "Say it once, in one sentence, when money first arrives rather than when the app opens, alongside the key-backup prompt: \"This money is yours. There is no password reset, so back up your recovery words now.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/ef3c6c6d7b/",
      "page": {
        "title": "First use",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/first-use/"
      }
    },
    {
      "id": "22af7b9cad",
      "kind": "dont",
      "severity": "standard",
      "text": "Put a scrolling legal text and a checkbox between a person and an empty wallet. It protects nobody and teaches them that your warnings are furniture.",
      "url": "https://www.bitcoinsv.design/guide/rule/22af7b9cad/",
      "page": {
        "title": "First use",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/first-use/"
      }
    },
    {
      "id": "885dcdf1bf",
      "kind": "do",
      "severity": "standard",
      "text": "Say what each route will ask for before the user goes there. Being surprised by a passport request is where people stop.",
      "url": "https://www.bitcoinsv.design/guide/rule/885dcdf1bf/",
      "page": {
        "title": "First use",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/first-use/"
      }
    },
    {
      "id": "7e7e907d0f",
      "kind": "do",
      "severity": "standard",
      "text": "Make \"ask someone to pay you\" a first-class option. It is free, instant and needs no account, and it is easy to bury under the buy button.",
      "url": "https://www.bitcoinsv.design/guide/rule/7e7e907d0f/",
      "page": {
        "title": "First use",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/first-use/"
      }
    },
    {
      "id": "c51b8a3805",
      "kind": "do",
      "severity": "standard",
      "text": "Show the handle as the primary thing to share, with the QR code as the in-person version of the same thing.",
      "url": "https://www.bitcoinsv.design/guide/rule/c51b8a3805/",
      "page": {
        "title": "First use",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/first-use/"
      }
    },
    {
      "id": "7f2c6aa1bd",
      "kind": "dont",
      "severity": "standard",
      "text": "Show a derived address. It is a one-time internal value and putting it on screen invites comparison nobody can usefully perform.",
      "url": "https://www.bitcoinsv.design/guide/rule/7f2c6aa1bd/",
      "page": {
        "title": "First use",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/first-use/"
      }
    },
    {
      "id": "9a36745df2",
      "kind": "dont",
      "severity": "standard",
      "text": "Show a fee breakdown on a first receive. See Send fees.",
      "url": "https://www.bitcoinsv.design/guide/rule/9a36745df2/",
      "page": {
        "title": "First use",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/first-use/"
      }
    },
    {
      "id": "58c28cacfd",
      "kind": "do",
      "severity": "standard",
      "text": "Make the reminder persistent but quiet: a banner on the home screen that does not block anything and does not reappear as a modal.",
      "url": "https://www.bitcoinsv.design/guide/rule/58c28cacfd/",
      "page": {
        "title": "First use",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/first-use/"
      }
    },
    {
      "id": "bcfce24862",
      "kind": "do",
      "severity": "standard",
      "text": "Say what is at risk in terms of the balance, not in the abstract. \"Back up your wallet to protect the 4,200 sats you're holding\" is a reason; \"secure your wallet\" is wallpaper.",
      "url": "https://www.bitcoinsv.design/guide/rule/bcfce24862/",
      "page": {
        "title": "First use",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/first-use/"
      }
    },
    {
      "id": "6679777b2c",
      "kind": "dont",
      "severity": "standard",
      "text": "Nag on a schedule. One persistent, dismissible reminder beats a modal every third launch, which people learn to dismiss without reading.",
      "url": "https://www.bitcoinsv.design/guide/rule/6679777b2c/",
      "page": {
        "title": "First use",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/first-use/"
      }
    },
    {
      "id": "7a42bd0615",
      "kind": "do",
      "severity": "standard",
      "text": "Make the handle the primary thing on the receive screen, and the amount optional. Most of the time the payer knows what they owe.",
      "url": "https://www.bitcoinsv.design/guide/rule/7a42bd0615/",
      "page": {
        "title": "Requesting",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/requesting/"
      }
    },
    {
      "id": "b047195dc2",
      "kind": "dont",
      "severity": "standard",
      "text": "Generate a new address for each request and show it. On BSV a fresh key is derived per payment automatically, so the privacy reason for showing a new address has already been handled. See Payments.",
      "url": "https://www.bitcoinsv.design/guide/rule/b047195dc2/",
      "page": {
        "title": "Requesting",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/requesting/"
      }
    },
    {
      "id": "8b8d9838a1",
      "kind": "dont",
      "severity": "standard",
      "text": "Add an expiry to a request. Nothing in a handle and an amount goes stale, so an expiry is a deadline with nothing behind it.",
      "url": "https://www.bitcoinsv.design/guide/rule/8b8d9838a1/",
      "page": {
        "title": "Requesting",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/requesting/"
      }
    },
    {
      "id": "cf3f778dba",
      "kind": "do",
      "severity": "standard",
      "text": "Let the amount be entered in local currency and converted, which is how people think about being owed money.",
      "url": "https://www.bitcoinsv.design/guide/rule/cf3f778dba/",
      "page": {
        "title": "Requesting",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/requesting/"
      }
    },
    {
      "id": "f4dbdc826a",
      "kind": "do",
      "severity": "standard",
      "text": "Allow an empty amount. \"Pay me what you like\" is a real case: tips, donations, splitting a bill the payer can see.",
      "url": "https://www.bitcoinsv.design/guide/rule/f4dbdc826a/",
      "page": {
        "title": "Requesting",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/requesting/"
      }
    },
    {
      "id": "275c3dcb7f",
      "kind": "do",
      "severity": "standard",
      "text": "Prefill it where you can. A request made from a shared bill can say what the bill was.",
      "url": "https://www.bitcoinsv.design/guide/rule/275c3dcb7f/",
      "page": {
        "title": "Requesting",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/requesting/"
      }
    },
    {
      "id": "9f96c8a20f",
      "kind": "do",
      "severity": "standard",
      "text": "Offer copy and share as distinct actions, and confirm in place rather than with a toast the user is not looking at.",
      "url": "https://www.bitcoinsv.design/guide/rule/9f96c8a20f/",
      "page": {
        "title": "Requesting",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/requesting/"
      }
    },
    {
      "id": "71daac948d",
      "kind": "do",
      "severity": "standard",
      "text": "Show it immediately and clearly: who paid, how much, and the note. A received payment is a good moment and the interface can say so.",
      "url": "https://www.bitcoinsv.design/guide/rule/71daac948d/",
      "page": {
        "title": "Requesting",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/requesting/"
      }
    },
    {
      "id": "1c01595db1",
      "kind": "do",
      "severity": "standard",
      "text": "Show who paid, how much, and the note. When the payer's wallet shares a profile name and avatar, an entry can read \"Anna Keller, for lunch\"; otherwise show their handle.",
      "url": "https://www.bitcoinsv.design/guide/rule/1c01595db1/",
      "page": {
        "title": "Receiving",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/requesting/receiving/"
      }
    },
    {
      "id": "885d7cb83f",
      "kind": "do",
      "severity": "standard",
      "text": "Make it noticeable. A received payment is one of the few genuinely good moments in a finance app, and a silent list entry wastes it.",
      "url": "https://www.bitcoinsv.design/guide/rule/885d7cb83f/",
      "page": {
        "title": "Receiving",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/requesting/receiving/"
      }
    },
    {
      "id": "61405a5d46",
      "kind": "dont",
      "severity": "standard",
      "text": "Show a confirmation counter. It was verified on arrival, and counting blocks afterwards tells the user that your \"Received\" was provisional. See Transactions.",
      "url": "https://www.bitcoinsv.design/guide/rule/61405a5d46/",
      "page": {
        "title": "Receiving",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/requesting/receiving/"
      }
    },
    {
      "id": "558676b58c",
      "kind": "do",
      "severity": "standard",
      "text": "Collect anything waiting on launch, verify it, and show what arrived while the user was away as a group rather than a burst of separate notifications.",
      "url": "https://www.bitcoinsv.design/guide/rule/558676b58c/",
      "page": {
        "title": "Receiving",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/requesting/receiving/"
      }
    },
    {
      "id": "211458699f",
      "kind": "do",
      "severity": "standard",
      "text": "Say on the receive screen's help, or in Settings › Services, that payments wait in a message box when the wallet is closed. It is the one real cost of the peer-to-peer model. See Payments.",
      "url": "https://www.bitcoinsv.design/guide/rule/211458699f/",
      "page": {
        "title": "Receiving",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/requesting/receiving/"
      }
    },
    {
      "id": "b3cb42f772",
      "kind": "do",
      "severity": "standard",
      "text": "Reject it, and tell the user in plain words that a payment arrived and could not be verified, so it was not accepted. Do not add it to the balance.",
      "url": "https://www.bitcoinsv.design/guide/rule/b3cb42f772/",
      "page": {
        "title": "Receiving",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/requesting/receiving/"
      }
    },
    {
      "id": "437025ee4f",
      "kind": "dont",
      "severity": "standard",
      "text": "Show a cryptographic error. \"Merkle proof invalid\" tells the user nothing they can act on.",
      "url": "https://www.bitcoinsv.design/guide/rule/437025ee4f/",
      "page": {
        "title": "Receiving",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/requesting/receiving/"
      }
    },
    {
      "id": "de0ddb24e3",
      "kind": "do",
      "severity": "standard",
      "text": "Use a different state for these: \"Incoming\" until it is mined, then \"Received\". It is genuinely less certain than a peer-to-peer payment and the interface should not pretend otherwise. See Legacy compatibility.",
      "url": "https://www.bitcoinsv.design/guide/rule/de0ddb24e3/",
      "page": {
        "title": "Receiving",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/requesting/receiving/"
      }
    },
    {
      "id": "b6a67378a2",
      "kind": "do",
      "severity": "standard",
      "text": "Show it with whatever the sender provided, and let the user add their own note. An unexplained entry is the one they will be puzzling over in six months.",
      "url": "https://www.bitcoinsv.design/guide/rule/b6a67378a2/",
      "page": {
        "title": "Receiving",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/requesting/receiving/"
      }
    },
    {
      "id": "8953c080ff",
      "kind": "dont",
      "severity": "standard",
      "text": "Build a returns flow into a consumer wallet. Sending it back is just a payment, and the sender's handle is already there to pay.",
      "url": "https://www.bitcoinsv.design/guide/rule/8953c080ff/",
      "page": {
        "title": "Receiving",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/requesting/receiving/"
      }
    },
    {
      "id": "67b4d0f5d2",
      "kind": "do",
      "severity": "standard",
      "text": "Because step 4 happens, the payer can be shown \"Paid\" at the same moment the recipient is shown \"Received\". Design both ends of that: the two people are often standing next to each other.",
      "url": "https://www.bitcoinsv.design/guide/rule/67b4d0f5d2/",
      "page": {
        "title": "Receiving",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/requesting/receiving/"
      }
    },
    {
      "id": "5d73135962",
      "kind": "do",
      "severity": "standard",
      "text": "Autocomplete from contacts before accepting free text, and make saving a new recipient the obvious next step after a first payment. The second payment to someone should never involve typing.",
      "url": "https://www.bitcoinsv.design/guide/rule/5d73135962/",
      "page": {
        "title": "Sending",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/"
      }
    },
    {
      "id": "62549b7884",
      "kind": "do",
      "severity": "standard",
      "text": "Default to the unit the user set, and let them switch between it and their local currency in one tap. See Amounts and units.",
      "url": "https://www.bitcoinsv.design/guide/rule/62549b7884/",
      "page": {
        "title": "Sending",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/"
      }
    },
    {
      "id": "de88c18a7f",
      "kind": "do",
      "severity": "standard",
      "text": "Allow very small amounts without complaint. A payment of 50 satoshis is ordinary, and a minimum blocks it for no reason.",
      "url": "https://www.bitcoinsv.design/guide/rule/de88c18a7f/",
      "page": {
        "title": "Sending",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/"
      }
    },
    {
      "id": "a830c06ea1",
      "kind": "dont",
      "severity": "standard",
      "text": "Show a \"max\" button that empties the wallet without saying so. Label it with the resulting amount.",
      "url": "https://www.bitcoinsv.design/guide/rule/a830c06ea1/",
      "page": {
        "title": "Sending",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/"
      }
    },
    {
      "id": "e178ad1ce4",
      "kind": "dont",
      "severity": "standard",
      "text": "Prompt for every per-use payment. An article that costs 20 satoshis cannot carry a confirmation dialog, and a wallet that insists makes the whole category unusable.",
      "url": "https://www.bitcoinsv.design/guide/rule/e178ad1ce4/",
      "page": {
        "title": "Sending",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/"
      }
    },
    {
      "id": "e51521a9a8",
      "kind": "do",
      "severity": "standard",
      "text": "Make the recipient the largest thing on the screen. The amount is usually right; the recipient is what gets checked too quickly.",
      "url": "https://www.bitcoinsv.design/guide/rule/e51521a9a8/",
      "page": {
        "title": "Sending",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/"
      }
    },
    {
      "id": "209f596f5d",
      "kind": "dont",
      "severity": "standard",
      "text": "Put an \"advanced\" disclosure on the review screen. If something matters enough to show, show it; if it does not, it belongs in the transaction's details afterwards.",
      "url": "https://www.bitcoinsv.design/guide/rule/209f596f5d/",
      "page": {
        "title": "Sending",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/"
      }
    },
    {
      "id": "eff0757699",
      "kind": "do",
      "severity": "standard",
      "text": "Label every wait with the step and, where there is one, the person. \"Handing payment to Anna's wallet…\" tells the user what is happening and to whom.",
      "url": "https://www.bitcoinsv.design/guide/rule/eff0757699/",
      "page": {
        "title": "Sending",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/"
      }
    },
    {
      "id": "0ae64e9f7c",
      "kind": "dont",
      "severity": "standard",
      "text": "Show a spinner with no words, or a full-screen loader for a step that takes a second. Both make an ordinary pause look like a fault.",
      "url": "https://www.bitcoinsv.design/guide/rule/0ae64e9f7c/",
      "page": {
        "title": "Sending",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/"
      }
    },
    {
      "id": "76e25ae879",
      "kind": "dont",
      "severity": "standard",
      "text": "Show an error code as the headline. Put it in the details for support, with plain words on top.",
      "url": "https://www.bitcoinsv.design/guide/rule/76e25ae879/",
      "page": {
        "title": "Sending",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/"
      }
    },
    {
      "id": "56bb292103",
      "kind": "do",
      "severity": "standard",
      "text": "Show \"Paid\" on acceptance and stop there for everyday amounts. A spinner that waits for a block makes the user wait for nothing. See Transactions.",
      "url": "https://www.bitcoinsv.design/guide/rule/56bb292103/",
      "page": {
        "title": "Sending",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/"
      }
    },
    {
      "id": "38e0a0da8b",
      "kind": "do",
      "severity": "standard",
      "text": "In the payment's details, show the fee in local currency as one small line: \"Fee: less than 1p\". A figure in satoshis invites arithmetic nobody wanted to do.",
      "url": "https://www.bitcoinsv.design/guide/rule/38e0a0da8b/",
      "page": {
        "title": "Send fees",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/send-fees/"
      }
    },
    {
      "id": "022b63ad54",
      "kind": "dont",
      "severity": "standard",
      "text": "Explain the fee model. A user who wanted to know about satoshis per byte will find it in the transaction details.",
      "url": "https://www.bitcoinsv.design/guide/rule/022b63ad54/",
      "page": {
        "title": "Send fees",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/send-fees/"
      }
    },
    {
      "id": "67836d2509",
      "kind": "do",
      "severity": "standard",
      "text": "Pay the fee on the user's behalf where the product can, and do not mention it. We suggest a shop absorb it as a cost of sale and an app fold it into its price. It is a real option because the fee is smaller than any price the user will see.",
      "url": "https://www.bitcoinsv.design/guide/rule/67836d2509/",
      "page": {
        "title": "Send fees",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/sending/send-fees/"
      }
    },
    {
      "id": "4029686f48",
      "kind": "do",
      "severity": "standard",
      "text": "Lead with the person or the app. A user scanning for \"that payment to the café\" is looking for the café, not for an amount.",
      "url": "https://www.bitcoinsv.design/guide/rule/4029686f48/",
      "page": {
        "title": "Activity",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/activity/"
      }
    },
    {
      "id": "64290699ff",
      "kind": "dont",
      "severity": "standard",
      "text": "Show a transaction id in the list. It identifies nothing a person recognises. Keep it in the details, for support, as in the example below.",
      "url": "https://www.bitcoinsv.design/guide/rule/64290699ff/",
      "page": {
        "title": "Activity",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/activity/"
      }
    },
    {
      "id": "55606940cb",
      "kind": "dont",
      "severity": "standard",
      "text": "Show change returned to the wallet as a separate entry. One payment is one row.",
      "url": "https://www.bitcoinsv.design/guide/rule/55606940cb/",
      "page": {
        "title": "Activity",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/activity/"
      }
    },
    {
      "id": "c0d3b2d827",
      "kind": "do",
      "severity": "standard",
      "text": "Group by source and period: \"The Satoshi Vision, 47 articles, 940 sats today\" as one row that expands.",
      "url": "https://www.bitcoinsv.design/guide/rule/c0d3b2d827/",
      "page": {
        "title": "Activity",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/activity/"
      }
    },
    {
      "id": "5cd10fefb2",
      "kind": "do",
      "severity": "standard",
      "text": "Make the expanded view genuinely useful: what each payment bought, not just a list of identical amounts.",
      "url": "https://www.bitcoinsv.design/guide/rule/5cd10fefb2/",
      "page": {
        "title": "Activity",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/activity/"
      }
    },
    {
      "id": "ba8797f501",
      "kind": "dont",
      "severity": "standard",
      "text": "Hide small payments behind a filter that is off by default. The user agreed an allowance and is entitled to see where it went without hunting. See Permissions and allowances.",
      "url": "https://www.bitcoinsv.design/guide/rule/ba8797f501/",
      "page": {
        "title": "Activity",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/activity/"
      }
    },
    {
      "id": "2ef405333c",
      "kind": "dont",
      "severity": "standard",
      "text": "Group payments from different apps together. The grouping is per relationship; merging them loses the only thing that made it readable.",
      "url": "https://www.bitcoinsv.design/guide/rule/2ef405333c/",
      "page": {
        "title": "Activity",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/activity/"
      }
    },
    {
      "id": "5d246c0d1b",
      "kind": "do",
      "severity": "standard",
      "text": "Show them, visibly distinct from payments: an app connected, a permission granted or revoked, a Pass presented, an allowance exhausted.",
      "url": "https://www.bitcoinsv.design/guide/rule/5d246c0d1b/",
      "page": {
        "title": "Activity",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/activity/"
      }
    },
    {
      "id": "72b7049356",
      "kind": "do",
      "severity": "standard",
      "text": "Make a permission grant findable later. \"When did I let that app spend?\" is a question users ask after something goes wrong, and it needs an answer.",
      "url": "https://www.bitcoinsv.design/guide/rule/72b7049356/",
      "page": {
        "title": "Activity",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/activity/"
      }
    },
    {
      "id": "b0f8c7f663",
      "kind": "do",
      "severity": "standard",
      "text": "Search across names, handles, notes and amounts. People remember the café or the word \"lunch\", never a date range.",
      "url": "https://www.bitcoinsv.design/guide/rule/b0f8c7f663/",
      "page": {
        "title": "Activity",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/activity/"
      }
    },
    {
      "id": "50026dfdb8",
      "kind": "do",
      "severity": "standard",
      "text": "Offer filters for direction, source and period, and show which are active. A filtered list that looks like an empty wallet is alarming.",
      "url": "https://www.bitcoinsv.design/guide/rule/50026dfdb8/",
      "page": {
        "title": "Activity",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/activity/"
      }
    },
    {
      "id": "6d7b53f723",
      "kind": "do",
      "severity": "standard",
      "text": "When a search finds nothing, name the term and offer to clear the filters.",
      "url": "https://www.bitcoinsv.design/guide/rule/6d7b53f723/",
      "page": {
        "title": "Activity",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/activity/"
      }
    },
    {
      "id": "1cc5b29c77",
      "kind": "do",
      "severity": "standard",
      "text": "Provide a CSV or JSON export with the fields an accountant needs: date, counterparty, amount, local-currency value at the time, note, and the transaction id. Small payments should export individually even where they are grouped in the interface.",
      "url": "https://www.bitcoinsv.design/guide/rule/1cc5b29c77/",
      "page": {
        "title": "Activity",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/activity/"
      }
    },
    {
      "id": "ff342fc34f",
      "kind": "do",
      "severity": "standard",
      "text": "Put the technical facts one tap down: transaction id, the state, the fee, and a link to an explorer. Someone chasing a problem needs them and nobody else does.",
      "url": "https://www.bitcoinsv.design/guide/rule/ff342fc34f/",
      "page": {
        "title": "Activity",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/activity/"
      }
    },
    {
      "id": "b2cb3f1325",
      "kind": "do",
      "severity": "standard",
      "text": "Let the user rename a contact to whatever they call that person. \"Mum\" beats the profile name the handle returned, and it is what they will search for.",
      "url": "https://www.bitcoinsv.design/guide/rule/b2cb3f1325/",
      "page": {
        "title": "Contacts",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/contacts/"
      }
    },
    {
      "id": "ca9c316d14",
      "kind": "do",
      "severity": "standard",
      "text": "Offer \"save as contact\" in the success state of a first payment. One tap at the moment the information is in front of the user beats a form they have to go and find.",
      "url": "https://www.bitcoinsv.design/guide/rule/ca9c316d14/",
      "page": {
        "title": "Contacts",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/contacts/"
      }
    },
    {
      "id": "0481aea407",
      "kind": "dont",
      "severity": "standard",
      "text": "Ask for a name before resolving the handle. The resolution usually supplies one, and asking first makes the user invent a label for someone the wallet is about to identify.",
      "url": "https://www.bitcoinsv.design/guide/rule/0481aea407/",
      "page": {
        "title": "Contacts",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/contacts/"
      }
    },
    {
      "id": "7fc52e7840",
      "kind": "do",
      "severity": "standard",
      "text": "Record when the key last changed on the contact, so a user who is unsure can see whether this is the third change this month.",
      "url": "https://www.bitcoinsv.design/guide/rule/7fc52e7840/",
      "page": {
        "title": "Contacts",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/contacts/"
      }
    },
    {
      "id": "0a4277400c",
      "kind": "do",
      "severity": "standard",
      "text": "Show a Pass as what it proves and who vouched for it, not as a generic tick. \"Business name verified by Example Registry\" is checkable; a blue badge is not.",
      "url": "https://www.bitcoinsv.design/guide/rule/0a4277400c/",
      "page": {
        "title": "Contacts",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/contacts/"
      }
    },
    {
      "id": "8dbefecf1c",
      "kind": "dont",
      "severity": "standard",
      "text": "Imply a Pass means the person is trustworthy. It means an issuer attested to one attribute, which is a much smaller claim.",
      "url": "https://www.bitcoinsv.design/guide/rule/8dbefecf1c/",
      "page": {
        "title": "Contacts",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/contacts/"
      }
    },
    {
      "id": "0859248932",
      "kind": "do",
      "severity": "standard",
      "text": "Search across the name, the handle and the note. Users search for how they think of someone, which is rarely the exact stored name.",
      "url": "https://www.bitcoinsv.design/guide/rule/0859248932/",
      "page": {
        "title": "Contacts",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/contacts/"
      }
    },
    {
      "id": "33c5d40912",
      "kind": "do",
      "severity": "standard",
      "text": "Order by recently paid rather than alphabetically. A wallet's contact list is short and heavily weighted to a handful of people.",
      "url": "https://www.bitcoinsv.design/guide/rule/33c5d40912/",
      "page": {
        "title": "Contacts",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/contacts/"
      }
    },
    {
      "id": "de9eb761c1",
      "kind": "dont",
      "severity": "standard",
      "text": "Import the phone's address book by default. It is a large privacy ask for a feature most users do not need on day one, and it takes names out of the wallet's control.",
      "url": "https://www.bitcoinsv.design/guide/rule/de9eb761c1/",
      "page": {
        "title": "Contacts",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/contacts/"
      }
    },
    {
      "id": "f9a7cab9cd",
      "kind": "dont",
      "severity": "standard",
      "text": "Remove payment history when a contact is deleted. The money moved; that is a fact about the user's finances, not about the contact.",
      "url": "https://www.bitcoinsv.design/guide/rule/f9a7cab9cd/",
      "page": {
        "title": "Contacts",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/contacts/"
      }
    },
    {
      "id": "88e7256ce9",
      "kind": "do",
      "severity": "standard",
      "text": "Keep them in separate lists but make them feel related. What a user does with a person is pay them; what they do with an app is review and revoke what it may do. Those are different enough that one combined list serves neither. See Security.",
      "url": "https://www.bitcoinsv.design/guide/rule/88e7256ce9/",
      "page": {
        "title": "Contacts",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/contacts/"
      }
    },
    {
      "id": "e0bba9e06b",
      "kind": "do",
      "severity": "standard",
      "text": "Use the platform's authentication rather than inventing a second one. It is what people already use, already trust, and already have recovery for.",
      "url": "https://www.bitcoinsv.design/guide/rule/e0bba9e06b/",
      "page": {
        "title": "Security",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/security/"
      }
    },
    {
      "id": "87e60befc0",
      "kind": "dont",
      "severity": "standard",
      "text": "Require authentication to open the app and again for every payment under a pound. People turn off what gets in their way, including the parts that were protecting them.",
      "url": "https://www.bitcoinsv.design/guide/rule/87e60befc0/",
      "page": {
        "title": "Security",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/security/"
      }
    },
    {
      "id": "20e72605ea",
      "kind": "do",
      "severity": "standard",
      "text": "Show spending against the allowance as a number and a proportion, per app. \"The Satoshi Vision: 1,240 of 5,000 sats this month\" is what a user needs to judge whether to keep it.",
      "url": "https://www.bitcoinsv.design/guide/rule/20e72605ea/",
      "page": {
        "title": "Security",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/security/"
      }
    },
    {
      "id": "bb9e1ed5ee",
      "kind": "dont",
      "severity": "standard",
      "text": "Show a modal on launch. It is the most ignored component in software, and it trains people to dismiss your warnings as a reflex.",
      "url": "https://www.bitcoinsv.design/guide/rule/bb9e1ed5ee/",
      "page": {
        "title": "Security",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/security/"
      }
    },
    {
      "id": "df76937f30",
      "kind": "dont",
      "severity": "standard",
      "text": "Build an address-reuse warning or a \"generate fresh address\" control. Both solve a problem BSV already solved, and their presence implies the default is unsafe.",
      "url": "https://www.bitcoinsv.design/guide/rule/df76937f30/",
      "page": {
        "title": "Privacy",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/privacy/"
      }
    },
    {
      "id": "7af41ed2ab",
      "kind": "do",
      "severity": "standard",
      "text": "Prefer selections that keep outputs from unrelated counterparties apart. The saving from combining them is a fraction of a penny; the cost is linking two relationships.",
      "url": "https://www.bitcoinsv.design/guide/rule/7af41ed2ab/",
      "page": {
        "title": "Privacy",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/privacy/"
      }
    },
    {
      "id": "339beb8c47",
      "kind": "dont",
      "severity": "standard",
      "text": "Expose coin control to ordinary users as the answer. On BSV the fee argument for it is gone, and the privacy argument is better served by selecting well than by asking somebody to.",
      "url": "https://www.bitcoinsv.design/guide/rule/339beb8c47/",
      "page": {
        "title": "Privacy",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/privacy/"
      }
    },
    {
      "id": "8c1d24f223",
      "kind": "do",
      "severity": "standard",
      "text": "Make hiding reachable in one gesture from the home screen, and make it stick until deliberately reversed.",
      "url": "https://www.bitcoinsv.design/guide/rule/8c1d24f223/",
      "page": {
        "title": "Privacy",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/privacy/"
      }
    },
    {
      "id": "9f4da51699",
      "kind": "do",
      "severity": "standard",
      "text": "Hide amounts in activity too, not just the headline balance. A hidden total above a visible list of payments is not hiding anything.",
      "url": "https://www.bitcoinsv.design/guide/rule/9f4da51699/",
      "page": {
        "title": "Privacy",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/privacy/"
      }
    },
    {
      "id": "44d0d74d97",
      "kind": "do",
      "severity": "standard",
      "text": "Let users change them, or run their own. See Nodes and verification.",
      "url": "https://www.bitcoinsv.design/guide/rule/44d0d74d97/",
      "page": {
        "title": "Privacy",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/privacy/"
      }
    },
    {
      "id": "e83c059a3a",
      "kind": "do",
      "severity": "standard",
      "text": "Show, per app, what it has been granted. See Security.",
      "url": "https://www.bitcoinsv.design/guide/rule/e83c059a3a/",
      "page": {
        "title": "Privacy",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/privacy/"
      }
    },
    {
      "id": "04fe1355c6",
      "kind": "dont",
      "severity": "standard",
      "text": "Write personal data on chain in the clear. There is no delete. See Wallet privacy.",
      "url": "https://www.bitcoinsv.design/guide/rule/04fe1355c6/",
      "page": {
        "title": "Privacy",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/privacy/"
      }
    },
    {
      "id": "dd5f4738af",
      "kind": "do",
      "severity": "standard",
      "text": "Put that explanation where a user looking for privacy settings would find it, rather than in a help article. The honest answer is more reassuring than a toggle that does nothing.",
      "url": "https://www.bitcoinsv.design/guide/rule/dd5f4738af/",
      "page": {
        "title": "Privacy",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/privacy/"
      }
    },
    {
      "id": "427a9fb9aa",
      "kind": "do",
      "severity": "standard",
      "text": "Put appearance and motion preferences here and nowhere else. A theme toggle in the top bar costs width on every screen for something almost nobody touches.",
      "url": "https://www.bitcoinsv.design/guide/rule/427a9fb9aa/",
      "page": {
        "title": "Settings",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/settings/"
      }
    },
    {
      "id": "83b455e583",
      "kind": "do",
      "severity": "standard",
      "text": "Set the BSV unit to satoshis by default. \"0.00001250 BSV\" is unreadable. See Amounts and units.",
      "url": "https://www.bitcoinsv.design/guide/rule/83b455e583/",
      "page": {
        "title": "Settings",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/settings/"
      }
    },
    {
      "id": "e8cf9f77e8",
      "kind": "do",
      "severity": "standard",
      "text": "Let the local currency be the primary display, with the satoshi amount secondary. Most people think in pounds.",
      "url": "https://www.bitcoinsv.design/guide/rule/e8cf9f77e8/",
      "page": {
        "title": "Settings",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/settings/"
      }
    },
    {
      "id": "a114516cad",
      "kind": "dont",
      "severity": "standard",
      "text": "Offer a choice of satoshi symbol. None is standardised, and the words \"sats\" work everywhere.",
      "url": "https://www.bitcoinsv.design/guide/rule/a114516cad/",
      "page": {
        "title": "Settings",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/settings/"
      }
    },
    {
      "id": "3ab8476390",
      "kind": "do",
      "severity": "standard",
      "text": "Put the connected apps dashboard one tap from the settings root. It governs everything that can spend without asking, and it is the most consequential screen in here. See Security.",
      "url": "https://www.bitcoinsv.design/guide/rule/3ab8476390/",
      "page": {
        "title": "Settings",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/settings/"
      }
    },
    {
      "id": "0d10414c5f",
      "kind": "do",
      "severity": "standard",
      "text": "Show both halves of the backup with their own state: when the records were last backed up, and whether the recovery words have been written down. See Backup and recovery.",
      "url": "https://www.bitcoinsv.design/guide/rule/0d10414c5f/",
      "page": {
        "title": "Settings",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/settings/"
      }
    },
    {
      "id": "f13995f734",
      "kind": "do",
      "severity": "standard",
      "text": "Offer the recovery check here. It is where a worried user will look.",
      "url": "https://www.bitcoinsv.design/guide/rule/f13995f734/",
      "page": {
        "title": "Settings",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/settings/"
      }
    },
    {
      "id": "cb6e7f9a81",
      "kind": "do",
      "severity": "standard",
      "text": "Offer an encrypted export the user keeps themselves, so recovery never depends on your company existing.",
      "url": "https://www.bitcoinsv.design/guide/rule/cb6e7f9a81/",
      "page": {
        "title": "Settings",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/settings/"
      }
    },
    {
      "id": "ca7ab79fe0",
      "kind": "do",
      "severity": "standard",
      "text": "List the services the wallet uses, each with one line on what it does and what it learns, and let them be changed. See Privacy.",
      "url": "https://www.bitcoinsv.design/guide/rule/ca7ab79fe0/",
      "page": {
        "title": "Settings",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/settings/"
      }
    },
    {
      "id": "c41432d37a",
      "kind": "do",
      "severity": "standard",
      "text": "Put the app version and a copyable diagnostic summary here. It is the first thing support will ask for.",
      "url": "https://www.bitcoinsv.design/guide/rule/c41432d37a/",
      "page": {
        "title": "Settings",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/settings/"
      }
    },
    {
      "id": "422b8bc810",
      "kind": "dont",
      "severity": "standard",
      "text": "Add a settings section only because wallets usually have one. Each of these asks the user a question with no useful answer.",
      "url": "https://www.bitcoinsv.design/guide/rule/422b8bc810/",
      "page": {
        "title": "Settings",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/settings/"
      }
    },
    {
      "id": "4aa08e24f3",
      "kind": "do",
      "severity": "standard",
      "text": "Run it continuously in the background, and show when it last succeeded somewhere the user passes regularly.",
      "url": "https://www.bitcoinsv.design/guide/rule/4aa08e24f3/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/cloud-backup/"
      }
    },
    {
      "id": "7bbbb3d91f",
      "kind": "do",
      "severity": "standard",
      "text": "Let the user decline, and say what declining means in a sentence rather than a warning dialog.",
      "url": "https://www.bitcoinsv.design/guide/rule/7bbbb3d91f/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/cloud-backup/"
      }
    },
    {
      "id": "070ec8c365",
      "kind": "do",
      "severity": "standard",
      "text": "Let the user choose a provider, or run their own. A backup tied to one company has that company's lifespan.",
      "url": "https://www.bitcoinsv.design/guide/rule/070ec8c365/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/cloud-backup/"
      }
    },
    {
      "id": "5d6888cf98",
      "kind": "do",
      "severity": "standard",
      "text": "Support more than one destination at once. Two independent copies is the point of the exercise.",
      "url": "https://www.bitcoinsv.design/guide/rule/5d6888cf98/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/cloud-backup/"
      }
    },
    {
      "id": "6f6ccf0656",
      "kind": "do",
      "severity": "standard",
      "text": "Show the last successful backup as a time, not a tick. \"Backed up 2 minutes ago\" is information; a green check is decoration.",
      "url": "https://www.bitcoinsv.design/guide/rule/6f6ccf0656/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/cloud-backup/"
      }
    },
    {
      "id": "48beb0f300",
      "kind": "do",
      "severity": "standard",
      "text": "Say something when it has not run for a while, and say why where you can: no network, the service rejected it, or the user needs to sign in to the service again.",
      "url": "https://www.bitcoinsv.design/guide/rule/48beb0f300/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/cloud-backup/"
      }
    },
    {
      "id": "ef829f99e9",
      "kind": "do",
      "severity": "standard",
      "text": "Put both items on one screen, each with its own state, so the user can see at a glance that one is done and the other is not.",
      "url": "https://www.bitcoinsv.design/guide/rule/ef829f99e9/",
      "page": {
        "title": "Backup and recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/landing-page/"
      }
    },
    {
      "id": "a332028d19",
      "kind": "dont",
      "severity": "standard",
      "text": "Lead with a warning screen full of prohibitions. \"Never screenshot, never email, never store in the cloud\" is three nos before a person knows what the thing is.",
      "url": "https://www.bitcoinsv.design/guide/rule/a332028d19/",
      "page": {
        "title": "Manual backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/manual-backup/"
      }
    },
    {
      "id": "0499178954",
      "kind": "do",
      "severity": "standard",
      "text": "Number every word and show them in a fixed grid. Order matters and a reflowing list makes it ambiguous.",
      "url": "https://www.bitcoinsv.design/guide/rule/0499178954/",
      "page": {
        "title": "Manual backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/manual-backup/"
      }
    },
    {
      "id": "67bef33541",
      "kind": "do",
      "severity": "standard",
      "text": "Confirm a few words at positions the user must read, then follow it with the question that matters: where is this going to live?",
      "url": "https://www.bitcoinsv.design/guide/rule/67bef33541/",
      "page": {
        "title": "Manual backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/manual-backup/"
      }
    },
    {
      "id": "7cced96089",
      "kind": "dont",
      "severity": "standard",
      "text": "Require every word back. People copy and paste to get past it, usually from the clipboard you just told them not to use.",
      "url": "https://www.bitcoinsv.design/guide/rule/7cced96089/",
      "page": {
        "title": "Manual backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/manual-backup/"
      }
    },
    {
      "id": "fd0cd00eb7",
      "kind": "do",
      "severity": "standard",
      "text": "Ask, concretely, and offer sensible answers to pick from: a drawer at home, a safe, with a family member, a bank box. A choice is easier to make than a blank.",
      "url": "https://www.bitcoinsv.design/guide/rule/fd0cd00eb7/",
      "page": {
        "title": "Manual backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/manual-backup/"
      }
    },
    {
      "id": "02d29e29bf",
      "kind": "do",
      "severity": "standard",
      "text": "Suggest two locations in different buildings, in plain words: \"one at home, one somewhere else you can reach\".",
      "url": "https://www.bitcoinsv.design/guide/rule/02d29e29bf/",
      "page": {
        "title": "Manual backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/manual-backup/"
      }
    },
    {
      "id": "111cd45f3d",
      "kind": "do",
      "severity": "standard",
      "text": "Record what the user chose, so the recovery screen can remind them where they said they put it. A year later that is genuinely useful. Keep it inside the encrypted wallet backup, never in plain text with a provider.",
      "url": "https://www.bitcoinsv.design/guide/rule/111cd45f3d/",
      "page": {
        "title": "Manual backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/manual-backup/"
      }
    },
    {
      "id": "7daa3d56b3",
      "kind": "dont",
      "severity": "standard",
      "text": "Offer shares to someone who will keep all five in the same drawer. Ask where they would go before offering the option.",
      "url": "https://www.bitcoinsv.design/guide/rule/7daa3d56b3/",
      "page": {
        "title": "Manual backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/manual-backup/"
      }
    },
    {
      "id": "d13aff32cc",
      "kind": "do",
      "severity": "standard",
      "text": "Offer a recovery check at any time, which asks for the words and confirms they match without moving money. Put it where a worried user would look, which is settings and the backup screen, not a help article.",
      "url": "https://www.bitcoinsv.design/guide/rule/d13aff32cc/",
      "page": {
        "title": "Manual backup",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/manual-backup/"
      }
    },
    {
      "id": "06c9f5ef70",
      "kind": "do",
      "severity": "standard",
      "text": "Design for the unplanned case and let the planned one benefit. A flow that assumes the old device is available fails exactly when it is needed.",
      "url": "https://www.bitcoinsv.design/guide/rule/06c9f5ef70/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "00121f71a8",
      "kind": "do",
      "severity": "standard",
      "text": "Restore keys first, then records. The keys prove the wallet is the user's and open the wallet backup; the records tell it where the money is. Do not ask for any other password at the records step.",
      "url": "https://www.bitcoinsv.design/guide/rule/00121f71a8/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "ca0bab7028",
      "kind": "do",
      "severity": "standard",
      "text": "Put \"I already have a wallet\" on the first screen of the app, as prominent as \"create one\". Somebody recovering should never have to go through onboarding to find it.",
      "url": "https://www.bitcoinsv.design/guide/rule/ca0bab7028/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "7de98cb120",
      "kind": "dont",
      "severity": "standard",
      "text": "Call it \"import\". The user is not importing anything, they are getting their own wallet back, and the word matters when they are panicking.",
      "url": "https://www.bitcoinsv.design/guide/rule/7de98cb120/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "1962dd9851",
      "kind": "do",
      "severity": "standard",
      "text": "Autocomplete from the wordlist as they type, and accept a word as soon as it is unambiguous. It is the single biggest reduction in effort available here.",
      "url": "https://www.bitcoinsv.design/guide/rule/1962dd9851/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "37387ca5db",
      "kind": "do",
      "severity": "standard",
      "text": "Validate the whole phrase and say what is wrong: a word not in the list, a word in the wrong position, or a checksum failure meaning one word is wrong somewhere.",
      "url": "https://www.bitcoinsv.design/guide/rule/37387ca5db/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "9d22338e94",
      "kind": "do",
      "severity": "standard",
      "text": "Offer the alternative if the user has shares rather than words, on the same screen rather than behind a separate menu.",
      "url": "https://www.bitcoinsv.design/guide/rule/9d22338e94/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "ce17d99763",
      "kind": "dont",
      "severity": "standard",
      "text": "Clear the field on an error. Retyping twenty-four words because of one mistake is how people give up.",
      "url": "https://www.bitcoinsv.design/guide/rule/ce17d99763/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "95530a1dcf",
      "kind": "do",
      "severity": "standard",
      "text": "Find it automatically where you can, and fall back to letting the user point at a file they kept themselves.",
      "url": "https://www.bitcoinsv.design/guide/rule/95530a1dcf/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "7ffa83aea3",
      "kind": "do",
      "severity": "standard",
      "text": "Say what the backup contains before restoring it: when it was made, and roughly what is in it.",
      "url": "https://www.bitcoinsv.design/guide/rule/7ffa83aea3/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "976472b72d",
      "kind": "do",
      "severity": "standard",
      "text": "Say what is happening in words rather than a bare progress bar: restoring keys, finding your backup, checking payments.",
      "url": "https://www.bitcoinsv.design/guide/rule/976472b72d/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "7e5bf7da40",
      "kind": "do",
      "severity": "standard",
      "text": "Make it interruptible and resumable. Recovery happens on unfamiliar networks and a dropped connection should not mean starting over.",
      "url": "https://www.bitcoinsv.design/guide/rule/7e5bf7da40/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "acf945665b",
      "kind": "do",
      "severity": "standard",
      "text": "Show what came back: the balance, recent activity, contacts, and any tokens.",
      "url": "https://www.bitcoinsv.design/guide/rule/acf945665b/",
      "page": {
        "title": "Recovery",
        "section": "Daily spending wallet",
        "url": "https://www.bitcoinsv.design/guide/daily-spending-wallet/backup-and-recovery/recovery/"
      }
    },
    {
      "id": "1eb2669b31",
      "kind": "do",
      "severity": "standard",
      "text": "Size it by what the everyday wallet should not hold. \"How much would you be uncomfortable keeping on your phone?\" is the question that produces a sensible split.",
      "url": "https://www.bitcoinsv.design/guide/rule/1eb2669b31/",
      "page": {
        "title": "Savings wallet",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/"
      }
    },
    {
      "id": "c9c8e70a29",
      "kind": "do",
      "severity": "standard",
      "text": "Walk setup one key at a time, saying for each where it is going and what losing it would mean.",
      "url": "https://www.bitcoinsv.design/guide/rule/c9c8e70a29/",
      "page": {
        "title": "Savings wallet",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/"
      }
    },
    {
      "id": "3a979d7e2f",
      "kind": "do",
      "severity": "standard",
      "text": "Let setup be saved and resumed. Gathering devices rarely happens in one sitting, and a setup that cannot be resumed tends to be abandoned.",
      "url": "https://www.bitcoinsv.design/guide/rule/3a979d7e2f/",
      "page": {
        "title": "Savings wallet",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/"
      }
    },
    {
      "id": "434b4c253c",
      "kind": "do",
      "severity": "standard",
      "text": "Design on the assumption that the rule is readable. A recovery path that works only because nobody knows it exists is not a security property. See Multi-key.",
      "url": "https://www.bitcoinsv.design/guide/rule/434b4c253c/",
      "page": {
        "title": "Savings wallet",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/"
      }
    },
    {
      "id": "90ba3c11ba",
      "kind": "do",
      "severity": "standard",
      "text": "Say which path a payment is taking before the user starts, not after. \"This is above your limit, so it needs your signing device too.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/90ba3c11ba/",
      "page": {
        "title": "Savings wallet",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/"
      }
    },
    {
      "id": "0b19f18430",
      "kind": "do",
      "severity": "standard",
      "text": "Show progress through a multi-key signature as collected and outstanding, naming the device still needed.",
      "url": "https://www.bitcoinsv.design/guide/rule/0b19f18430/",
      "page": {
        "title": "Savings wallet",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/"
      }
    },
    {
      "id": "8d0a0bb957",
      "kind": "do",
      "severity": "standard",
      "text": "Make the transfer a named action with the destination prefilled, so it is two taps from the savings home screen.",
      "url": "https://www.bitcoinsv.design/guide/rule/8d0a0bb957/",
      "page": {
        "title": "Savings wallet",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/"
      }
    },
    {
      "id": "3353cfee07",
      "kind": "do",
      "severity": "standard",
      "text": "Prompt an occasional recovery check. A wallet opened twice a year is one whose backup has had a long time to go stale.",
      "url": "https://www.bitcoinsv.design/guide/rule/3353cfee07/",
      "page": {
        "title": "Savings wallet",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/"
      }
    },
    {
      "id": "8dfae2ba23",
      "kind": "do",
      "severity": "standard",
      "text": "Explain the arrangement before any key is created, in terms of what happens rather than what it is made of: \"You can always spend this. If you don't use it for a year, the people you choose can.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/8dfae2ba23/",
      "page": {
        "title": "Time-based recovery",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/time-based-recovery/"
      }
    },
    {
      "id": "127a0fb82c",
      "kind": "do",
      "severity": "standard",
      "text": "Name each key by where it is, not by its number. \"This phone\", \"Signing device\", \"Anna's phone\" is what the owner will need to recognise in two years.",
      "url": "https://www.bitcoinsv.design/guide/rule/127a0fb82c/",
      "page": {
        "title": "Time-based recovery",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/time-based-recovery/"
      }
    },
    {
      "id": "af11a6d2c2",
      "kind": "do",
      "severity": "standard",
      "text": "Turn reminders on by default and say why: the path opening is the failure case, and a reminder is what prevents it.",
      "url": "https://www.bitcoinsv.design/guide/rule/af11a6d2c2/",
      "page": {
        "title": "Time-based recovery",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/time-based-recovery/"
      }
    },
    {
      "id": "c0b4b90826",
      "kind": "do",
      "severity": "standard",
      "text": "Tell them what they have been given, in a message they can understand without the app: \"Maya has named you on her savings wallet. You can't spend anything. If she doesn't use it for a year, you and one other person can move it on her behalf.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/c0b4b90826/",
      "page": {
        "title": "Time-based recovery",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/time-based-recovery/"
      }
    },
    {
      "id": "4c280b1a8a",
      "kind": "do",
      "severity": "standard",
      "text": "Show the date plainly on the home screen, as a date rather than a countdown. \"Recovery opens 14 March 2027\" is checkable; \"in 237 days\" is anxiety.",
      "url": "https://www.bitcoinsv.design/guide/rule/4c280b1a8a/",
      "page": {
        "title": "Time-based recovery",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/time-based-recovery/"
      }
    },
    {
      "id": "f5dbcff12d",
      "kind": "do",
      "severity": "standard",
      "text": "Remind well in advance, more than once, and through a channel that is not the app. Somebody who has stopped opening the app is exactly the person who needs reminding.",
      "url": "https://www.bitcoinsv.design/guide/rule/f5dbcff12d/",
      "page": {
        "title": "Time-based recovery",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/time-based-recovery/"
      }
    },
    {
      "id": "8040ebc146",
      "kind": "do",
      "severity": "standard",
      "text": "Notify the recovery people when the path is refreshed, so they know the arrangement is alive.",
      "url": "https://www.bitcoinsv.design/guide/rule/8040ebc146/",
      "page": {
        "title": "Time-based recovery",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/time-based-recovery/"
      }
    },
    {
      "id": "eda637f60b",
      "kind": "do",
      "severity": "standard",
      "text": "Fold the path rebuild into device replacement automatically, and show it as a step so the owner knows it happened.",
      "url": "https://www.bitcoinsv.design/guide/rule/eda637f60b/",
      "page": {
        "title": "Time-based recovery",
        "section": "Savings wallet",
        "url": "https://www.bitcoinsv.design/guide/savings-wallet/time-based-recovery/"
      }
    },
    {
      "id": "9f7260e9a2",
      "kind": "dont",
      "severity": "standard",
      "text": "Offer this to somebody setting up their first wallet. It is the most complex arrangement in this guide and the least forgiving of an abandoned setup. See Upgradeable wallet.",
      "url": "https://www.bitcoinsv.design/guide/rule/9f7260e9a2/",
      "page": {
        "title": "Inheritance wallet",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/"
      }
    },
    {
      "id": "e937b6b6b3",
      "kind": "do",
      "severity": "standard",
      "text": "Read Succession before designing any of the others. Every decision in setup should be judged by whether it makes that flow survivable for somebody grieving, unfamiliar with the app, and possibly using it for the first time.",
      "url": "https://www.bitcoinsv.design/guide/rule/e937b6b6b3/",
      "page": {
        "title": "Inheritance wallet",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/"
      }
    },
    {
      "id": "6584beffcd",
      "kind": "do",
      "severity": "standard",
      "text": "Choose the threshold by asking which pairs of people should be able to act together, not by picking a number. \"Any two of these four\" is a sentence the owner can check against their own family.",
      "url": "https://www.bitcoinsv.design/guide/rule/6584beffcd/",
      "page": {
        "title": "Overview",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/overview/"
      }
    },
    {
      "id": "b97dc18fa1",
      "kind": "dont",
      "severity": "standard",
      "text": "Build an arrangement where the owner alone cannot spend. It turns everyday access into a committee and the wallet stops being used, which is how it ends up abandoned and unmaintained.",
      "url": "https://www.bitcoinsv.design/guide/rule/b97dc18fa1/",
      "page": {
        "title": "Overview",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/overview/"
      }
    },
    {
      "id": "a6015f5fc0",
      "kind": "do",
      "severity": "standard",
      "text": "Show this table in the app, filled in with the real names, and let anybody holding a key see it. A participant who does not know what they hold cannot act when it matters.",
      "url": "https://www.bitcoinsv.design/guide/rule/a6015f5fc0/",
      "page": {
        "title": "Overview",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/overview/"
      }
    },
    {
      "id": "947e9c516d",
      "kind": "do",
      "severity": "standard",
      "text": "Judge every setup decision by what it costs to maintain. A four-key arrangement with a six-month period is more secure on paper and will be dead in two years, because nobody keeps up with it.",
      "url": "https://www.bitcoinsv.design/guide/rule/947e9c516d/",
      "page": {
        "title": "Overview",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/overview/"
      }
    },
    {
      "id": "86badbf6b4",
      "kind": "do",
      "severity": "standard",
      "text": "Say how long it takes and what is needed before starting. Somebody who begins without their signing device and without telling their partner will not finish.",
      "url": "https://www.bitcoinsv.design/guide/rule/86badbf6b4/",
      "page": {
        "title": "Wallet creation",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/wallet-creation/"
      }
    },
    {
      "id": "dd14279893",
      "kind": "dont",
      "severity": "standard",
      "text": "Explain multi-key, thresholds or timelocks here. None of it helps somebody decide whether to start.",
      "url": "https://www.bitcoinsv.design/guide/rule/dd14279893/",
      "page": {
        "title": "Wallet creation",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/wallet-creation/"
      }
    },
    {
      "id": "49591262c9",
      "kind": "do",
      "severity": "standard",
      "text": "Offer two or three named arrangements rather than a builder. \"You and your partner, with your daughter inheriting\" is a choice somebody can make; \"2-of-4 with a 365-day recovery path\" is not.",
      "url": "https://www.bitcoinsv.design/guide/rule/49591262c9/",
      "page": {
        "title": "Wallet creation",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/wallet-creation/"
      }
    },
    {
      "id": "65ad819d33",
      "kind": "do",
      "severity": "standard",
      "text": "Name each key by where it lives rather than by number. In two years \"Signing device in the study\" is recognisable and \"Key 2\" is not.",
      "url": "https://www.bitcoinsv.design/guide/rule/65ad819d33/",
      "page": {
        "title": "Wallet creation",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/wallet-creation/"
      }
    },
    {
      "id": "49cf57cfa8",
      "kind": "do",
      "severity": "standard",
      "text": "Send a request the other person can act on without explanation from the owner. It should say who is asking, what it is for, and that they are not being asked for money.",
      "url": "https://www.bitcoinsv.design/guide/rule/49cf57cfa8/",
      "page": {
        "title": "Wallet creation",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/wallet-creation/"
      }
    },
    {
      "id": "70fe8fef57",
      "kind": "do",
      "severity": "standard",
      "text": "Show the owner who has responded and who has not, and let them nudge.",
      "url": "https://www.bitcoinsv.design/guide/rule/70fe8fef57/",
      "page": {
        "title": "Wallet creation",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/wallet-creation/"
      }
    },
    {
      "id": "f3bf47af0a",
      "kind": "dont",
      "severity": "standard",
      "text": "Require everybody to be present at once. Coordinating three people in one sitting is the step most likely to stall.",
      "url": "https://www.bitcoinsv.design/guide/rule/f3bf47af0a/",
      "page": {
        "title": "Wallet creation",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/wallet-creation/"
      }
    },
    {
      "id": "dbdd4752ee",
      "kind": "do",
      "severity": "standard",
      "text": "Show the schedule as dates with names against them: \"From 14 March 2027, Christina can move this on her own.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/dbdd4752ee/",
      "page": {
        "title": "Wallet creation",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/wallet-creation/"
      }
    },
    {
      "id": "59b635f9b8",
      "kind": "do",
      "severity": "standard",
      "text": "Default to a year. Shorter means more maintenance than anybody sustains; much longer means the beneficiaries wait at the worst time.",
      "url": "https://www.bitcoinsv.design/guide/rule/59b635f9b8/",
      "page": {
        "title": "Wallet creation",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/wallet-creation/"
      }
    },
    {
      "id": "63700f9001",
      "kind": "do",
      "severity": "standard",
      "text": "End with the table from Overview, filled in with real names: who can spend alone, who can spend together, and who can act after the period. It is the last chance to catch an arrangement that does not match what the owner meant.",
      "url": "https://www.bitcoinsv.design/guide/rule/63700f9001/",
      "page": {
        "title": "Wallet creation",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/wallet-creation/"
      }
    },
    {
      "id": "cf1790959c",
      "kind": "do",
      "severity": "standard",
      "text": "Save after every step and make the unfinished wallet visible on the home screen with what is still needed. \"Waiting for Christina's key\" is a state the owner can act on a week later.",
      "url": "https://www.bitcoinsv.design/guide/rule/cf1790959c/",
      "page": {
        "title": "Wallet creation",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/wallet-creation/"
      }
    },
    {
      "id": "4799ec7b37",
      "kind": "do",
      "severity": "standard",
      "text": "Remind, gently, about an unfinished setup. It is the one nag worth having.",
      "url": "https://www.bitcoinsv.design/guide/rule/4799ec7b37/",
      "page": {
        "title": "Wallet creation",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/wallet-creation/"
      }
    },
    {
      "id": "718af05cf1",
      "kind": "do",
      "severity": "standard",
      "text": "Track per person whether they have received it, imported it, and confirmed. Three states, because \"sent\" is not \"working\".",
      "url": "https://www.bitcoinsv.design/guide/rule/718af05cf1/",
      "page": {
        "title": "Onboarding cosigners",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/onboarding-cosigners/"
      }
    },
    {
      "id": "c1190fa45f",
      "kind": "do",
      "severity": "standard",
      "text": "Say what they can do, what they cannot, and when that changes, in a sentence each: \"You can't move this money on your own. You and Christina together can. If Bob doesn't use it for a year, Christina can on her own.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/c1190fa45f/",
      "page": {
        "title": "Onboarding cosigners",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/onboarding-cosigners/"
      }
    },
    {
      "id": "661f77a4bb",
      "kind": "do",
      "severity": "standard",
      "text": "Name who asked, and let them decline. Being added to somebody's inheritance arrangement is a real obligation.",
      "url": "https://www.bitcoinsv.design/guide/rule/661f77a4bb/",
      "page": {
        "title": "Onboarding cosigners",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/onboarding-cosigners/"
      }
    },
    {
      "id": "74f0b2d72e",
      "kind": "dont",
      "severity": "standard",
      "text": "Present it as \"a wallet has been shared with you\". They are not getting money, and somebody who thinks they are will be confused twice: now, and much later.",
      "url": "https://www.bitcoinsv.design/guide/rule/74f0b2d72e/",
      "page": {
        "title": "Onboarding cosigners",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/onboarding-cosigners/"
      }
    },
    {
      "id": "26147cf99f",
      "kind": "do",
      "severity": "standard",
      "text": "Have the cosigner sign something harmless as part of setup, so both sides know the key works before it is relied on. A key that has never signed is an assumption.",
      "url": "https://www.bitcoinsv.design/guide/rule/26147cf99f/",
      "page": {
        "title": "Onboarding cosigners",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/onboarding-cosigners/"
      }
    },
    {
      "id": "954045775f",
      "kind": "do",
      "severity": "standard",
      "text": "Give each cosigner an export they hold themselves, containing the configuration, their key's recovery material and, where they are on the succession path, the current pre-signed transaction.",
      "url": "https://www.bitcoinsv.design/guide/rule/954045775f/",
      "page": {
        "title": "Onboarding cosigners",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/onboarding-cosigners/"
      }
    },
    {
      "id": "4d58d75e28",
      "kind": "do",
      "severity": "standard",
      "text": "Send an occasional note to each cosigner confirming the arrangement is alive and their key still works. Once or twice a year is enough, and it doubles as a check that their contact details are current.",
      "url": "https://www.bitcoinsv.design/guide/rule/4d58d75e28/",
      "page": {
        "title": "Onboarding cosigners",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/onboarding-cosigners/"
      }
    },
    {
      "id": "da1e07a7b1",
      "kind": "do",
      "severity": "standard",
      "text": "Let a cosigner see the arrangement at any time without the owner's involvement.",
      "url": "https://www.bitcoinsv.design/guide/rule/da1e07a7b1/",
      "page": {
        "title": "Onboarding cosigners",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/onboarding-cosigners/"
      }
    },
    {
      "id": "5b440985bc",
      "kind": "do",
      "severity": "standard",
      "text": "Write it for somebody who will read it once, under stress, possibly years from now. No jargon, no screenshots of an app version that will not exist.",
      "url": "https://www.bitcoinsv.design/guide/rule/5b440985bc/",
      "page": {
        "title": "Backup",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/backup/"
      }
    },
    {
      "id": "4415bb8e25",
      "kind": "do",
      "severity": "standard",
      "text": "Regenerate it whenever the arrangement changes, and date it clearly so an old copy is recognisable as old.",
      "url": "https://www.bitcoinsv.design/guide/rule/4415bb8e25/",
      "page": {
        "title": "Backup",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/backup/"
      }
    },
    {
      "id": "700c9ab489",
      "kind": "do",
      "severity": "standard",
      "text": "Walk the owner through it as places rather than categories: \"Your words at home. A copy of the document with your solicitor. Christina has her own key and a copy of the document.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/700c9ab489/",
      "page": {
        "title": "Backup",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/backup/"
      }
    },
    {
      "id": "cd94a0ebce",
      "kind": "do",
      "severity": "standard",
      "text": "Repeat the drill when anything changes. An arrangement that worked at setup and has had two key replacements since has not been tested.",
      "url": "https://www.bitcoinsv.design/guide/rule/cd94a0ebce/",
      "page": {
        "title": "Backup",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/backup/"
      }
    },
    {
      "id": "e3ad61b8e4",
      "kind": "do",
      "severity": "standard",
      "text": "If the drill cannot be completed by somebody who was not involved in setup, the arrangement has not achieved what it exists for, however correct the cryptography is.",
      "url": "https://www.bitcoinsv.design/guide/rule/e3ad61b8e4/",
      "page": {
        "title": "Backup",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/backup/"
      }
    },
    {
      "id": "ef2ebd3719",
      "kind": "do",
      "severity": "standard",
      "text": "Distinguish a planned replacement, where the old key still exists, from a lost one. They need different confirmations and the second is a security event.",
      "url": "https://www.bitcoinsv.design/guide/rule/ef2ebd3719/",
      "page": {
        "title": "Making changes",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/making-changes/"
      }
    },
    {
      "id": "2cd6553e52",
      "kind": "do",
      "severity": "standard",
      "text": "Require the remaining quorum to authorise the replacement. One person should not be able to swap another out.",
      "url": "https://www.bitcoinsv.design/guide/rule/2cd6553e52/",
      "page": {
        "title": "Making changes",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/making-changes/"
      }
    },
    {
      "id": "f6c304ca27",
      "kind": "do",
      "severity": "standard",
      "text": "End the flow by confirming three things happened: the new configuration reached everybody, the succession transaction was rebuilt, and the recovery document was regenerated. Each is a separate failure if it is skipped.",
      "url": "https://www.bitcoinsv.design/guide/rule/f6c304ca27/",
      "page": {
        "title": "Making changes",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/making-changes/"
      }
    },
    {
      "id": "b62333bbd8",
      "kind": "do",
      "severity": "standard",
      "text": "Show progress as named people rather than a count: \"Signed by Bob. Waiting for Alice or Christina.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/b62333bbd8/",
      "page": {
        "title": "Making changes",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/making-changes/"
      }
    },
    {
      "id": "731b8ec8fa",
      "kind": "do",
      "severity": "standard",
      "text": "Let the second signer see what they are approving, including the recipient and the amount, on their own device. That screen is the only independent check in the flow.",
      "url": "https://www.bitcoinsv.design/guide/rule/731b8ec8fa/",
      "page": {
        "title": "Making changes",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/making-changes/"
      }
    },
    {
      "id": "056a052e8e",
      "kind": "do",
      "severity": "standard",
      "text": "Let a pending payment be abandoned cleanly, and say so if it leaves outputs reserved.",
      "url": "https://www.bitcoinsv.design/guide/rule/056a052e8e/",
      "page": {
        "title": "Making changes",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/making-changes/"
      }
    },
    {
      "id": "5f64859ebc",
      "kind": "do",
      "severity": "standard",
      "text": "Present it as a migration: a new arrangement is created and the balance moves to it, in a payment the current quorum approves.",
      "url": "https://www.bitcoinsv.design/guide/rule/5f64859ebc/",
      "page": {
        "title": "Making changes",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/making-changes/"
      }
    },
    {
      "id": "556d53748b",
      "kind": "do",
      "severity": "standard",
      "text": "Keep the old wallet's history after the move. The arrangement changed; the record of what was spent did not.",
      "url": "https://www.bitcoinsv.design/guide/rule/556d53748b/",
      "page": {
        "title": "Making changes",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/making-changes/"
      }
    },
    {
      "id": "28b2595019",
      "kind": "dont",
      "severity": "standard",
      "text": "Imply somebody can be removed without the funds moving. They keep their key, and a key that still works on the old outputs is a key that still works.",
      "url": "https://www.bitcoinsv.design/guide/rule/28b2595019/",
      "page": {
        "title": "Making changes",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/making-changes/"
      }
    },
    {
      "id": "88e5761f00",
      "kind": "do",
      "severity": "standard",
      "text": "Let an emptied arrangement be archived rather than deleted, keeping its history and its recovery document.",
      "url": "https://www.bitcoinsv.design/guide/rule/88e5761f00/",
      "page": {
        "title": "Making changes",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/making-changes/"
      }
    },
    {
      "id": "1cf58b2e93",
      "kind": "dont",
      "severity": "standard",
      "text": "Allow an arrangement with a balance to be deleted. Offer to move the funds first and say where they would go.",
      "url": "https://www.bitcoinsv.design/guide/rule/1cf58b2e93/",
      "page": {
        "title": "Making changes",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/making-changes/"
      }
    },
    {
      "id": "1b23be3745",
      "kind": "do",
      "severity": "standard",
      "text": "Say which route is available, and when the other becomes available, on the first screen a beneficiary sees. \"You and Alice can do this together now. On your own, from 14 March 2027.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/1b23be3745/",
      "page": {
        "title": "Succession",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/succession/"
      }
    },
    {
      "id": "0034b395dd",
      "kind": "do",
      "severity": "standard",
      "text": "Accept the configuration from a printed code as readily as from a file. Paper is the medium most likely to survive a decade and an estate.",
      "url": "https://www.bitcoinsv.design/guide/rule/0034b395dd/",
      "page": {
        "title": "Succession",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/succession/"
      }
    },
    {
      "id": "3e14b21645",
      "kind": "do",
      "severity": "standard",
      "text": "Show the balance and what can be done with it immediately after import, before asking for anything else. The first question is \"is it still there\".",
      "url": "https://www.bitcoinsv.design/guide/rule/3e14b21645/",
      "page": {
        "title": "Succession",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/succession/"
      }
    },
    {
      "id": "498b3c927e",
      "kind": "do",
      "severity": "standard",
      "text": "Offer \"move everything to my own wallet\" as the default action, not a generic send screen. It is what more or less everybody is here to do.",
      "url": "https://www.bitcoinsv.design/guide/rule/498b3c927e/",
      "page": {
        "title": "Succession",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/succession/"
      }
    },
    {
      "id": "9b96b732d4",
      "kind": "do",
      "severity": "standard",
      "text": "Let it be done in parts. Somebody may want to move a little first to be sure it works, and that instinct should be supported rather than treated as an error.",
      "url": "https://www.bitcoinsv.design/guide/rule/9b96b732d4/",
      "page": {
        "title": "Succession",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/succession/"
      }
    },
    {
      "id": "a1157ca044",
      "kind": "do",
      "severity": "standard",
      "text": "Make sharing the part-signed transaction work over whatever people already use: a message, email, a code on a screen. Do not require both parties to be in the same place, or to install anything beyond the wallet that holds their key.",
      "url": "https://www.bitcoinsv.design/guide/rule/a1157ca044/",
      "page": {
        "title": "Succession",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/succession/"
      }
    },
    {
      "id": "582c8164b0",
      "kind": "do",
      "severity": "standard",
      "text": "Name the people, not the keys. \"Waiting for David\" is something a grieving person can act on.",
      "url": "https://www.bitcoinsv.design/guide/rule/582c8164b0/",
      "page": {
        "title": "Succession",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/succession/"
      }
    },
    {
      "id": "bf51ef88f8",
      "kind": "do",
      "severity": "standard",
      "text": "Show the lock date plainly and whether it has passed. \"This becomes valid on 14 March 2027\" and, after that, \"This can be sent now.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/bf51ef88f8/",
      "page": {
        "title": "Succession",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/succession/"
      }
    },
    {
      "id": "6a8e1fbdcc",
      "kind": "do",
      "severity": "standard",
      "text": "Check the inputs are still unspent before offering it, and say clearly if they are not: \"This route is out of date because the wallet was used after it was prepared. Use the two-signature route instead.\" That is the single most likely failure and it must not present as a cryptic error.",
      "url": "https://www.bitcoinsv.design/guide/rule/6a8e1fbdcc/",
      "page": {
        "title": "Succession",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/succession/"
      }
    },
    {
      "id": "2512d95f85",
      "kind": "dont",
      "severity": "standard",
      "text": "Let a beneficiary broadcast a transaction whose inputs are gone and watch it fail. Check first and explain.",
      "url": "https://www.bitcoinsv.design/guide/rule/2512d95f85/",
      "page": {
        "title": "Succession",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/succession/"
      }
    },
    {
      "id": "b74ba2104e",
      "kind": "do",
      "severity": "standard",
      "text": "Offer to archive the arrangement once it is empty, keeping its history and its document. There may be an estate to account to.",
      "url": "https://www.bitcoinsv.design/guide/rule/b74ba2104e/",
      "page": {
        "title": "Succession",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/succession/"
      }
    },
    {
      "id": "c0ba8d53c9",
      "kind": "do",
      "severity": "standard",
      "text": "Tell the other participants it was used, and when. Somebody holding a key should learn that the arrangement has been executed from the app rather than from a relative.",
      "url": "https://www.bitcoinsv.design/guide/rule/c0ba8d53c9/",
      "page": {
        "title": "Succession",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/succession/"
      }
    },
    {
      "id": "aceacfe186",
      "kind": "do",
      "severity": "standard",
      "text": "Design this flow first and work backwards. A setup flow that produces an elegant arrangement nobody can execute has failed at the only thing it was for.",
      "url": "https://www.bitcoinsv.design/guide/rule/aceacfe186/",
      "page": {
        "title": "Succession",
        "section": "Inheritance wallet",
        "url": "https://www.bitcoinsv.design/guide/inheritance-wallet/succession/"
      }
    },
    {
      "id": "cbe05d9c75",
      "kind": "do",
      "severity": "standard",
      "text": "Give a savings wallet its own keys and its own recovery material. See Multi-key.",
      "url": "https://www.bitcoinsv.design/guide/rule/cbe05d9c75/",
      "page": {
        "title": "Multiple wallets",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/multiple-wallets/"
      }
    },
    {
      "id": "462750da01",
      "kind": "do",
      "severity": "standard",
      "text": "Offer two or three named arrangements rather than a wallet builder. \"Everyday and savings\" is a choice somebody can make; \"configure a key scheme\" is not.",
      "url": "https://www.bitcoinsv.design/guide/rule/462750da01/",
      "page": {
        "title": "Multiple wallets",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/multiple-wallets/"
      }
    },
    {
      "id": "63d0a910c5",
      "kind": "do",
      "severity": "standard",
      "text": "Recommend a scheme from those answers and explain it in one line. \"Two of three keys, because you said this is most of your savings and you want to be able to lose a phone.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/63d0a910c5/",
      "page": {
        "title": "Multiple wallets",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/multiple-wallets/"
      }
    },
    {
      "id": "e363ce01db",
      "kind": "do",
      "severity": "standard",
      "text": "Show a combined total and the per-wallet breakdown together. People want to know what they have and where it is, in one glance.",
      "url": "https://www.bitcoinsv.design/guide/rule/e363ce01db/",
      "page": {
        "title": "Multiple wallets",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/multiple-wallets/"
      }
    },
    {
      "id": "2fbf992f8c",
      "kind": "do",
      "severity": "standard",
      "text": "Let activity be filtered to one wallet or seen across all of them, and always label which wallet an entry belongs to.",
      "url": "https://www.bitcoinsv.design/guide/rule/2fbf992f8c/",
      "page": {
        "title": "Multiple wallets",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/multiple-wallets/"
      }
    },
    {
      "id": "f7b8642441",
      "kind": "dont",
      "severity": "standard",
      "text": "Make switching wallets a mode the user can forget they are in. A wallet-coloured header and the wallet's name on the send screen are cheap and prevent the worst mistake in this whole design.",
      "url": "https://www.bitcoinsv.design/guide/rule/f7b8642441/",
      "page": {
        "title": "Multiple wallets",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/multiple-wallets/"
      }
    },
    {
      "id": "fe82b7103a",
      "kind": "do",
      "severity": "standard",
      "text": "Default to the everyday wallet for every payment, and make choosing another a deliberate step.",
      "url": "https://www.bitcoinsv.design/guide/rule/fe82b7103a/",
      "page": {
        "title": "Multiple wallets",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/multiple-wallets/"
      }
    },
    {
      "id": "5f911d9760",
      "kind": "do",
      "severity": "standard",
      "text": "Say which wallet is paying on the review screen, in words, not only as a colour.",
      "url": "https://www.bitcoinsv.design/guide/rule/5f911d9760/",
      "page": {
        "title": "Multiple wallets",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/multiple-wallets/"
      }
    },
    {
      "id": "6a17dfe0f2",
      "kind": "do",
      "severity": "standard",
      "text": "Show, per wallet, which apps are connected to it. See Security.",
      "url": "https://www.bitcoinsv.design/guide/rule/6a17dfe0f2/",
      "page": {
        "title": "Multiple wallets",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/multiple-wallets/"
      }
    },
    {
      "id": "a2beea952b",
      "kind": "do",
      "severity": "standard",
      "text": "Show it as a transfer rather than a payment in activity: one entry, not an outgoing and an incoming.",
      "url": "https://www.bitcoinsv.design/guide/rule/a2beea952b/",
      "page": {
        "title": "Multiple wallets",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/multiple-wallets/"
      }
    },
    {
      "id": "8a2d17fdc1",
      "kind": "do",
      "severity": "standard",
      "text": "Require the savings wallet's own authorisation for anything leaving it, on its own device where that applies. Topping up should always be a deliberate human action.",
      "url": "https://www.bitcoinsv.design/guide/rule/8a2d17fdc1/",
      "page": {
        "title": "Multiple wallets",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/multiple-wallets/"
      }
    },
    {
      "id": "96fdf16455",
      "kind": "dont",
      "severity": "standard",
      "text": "Offer an automatic sweep from everyday into savings without the user setting it up explicitly, and never the other direction.",
      "url": "https://www.bitcoinsv.design/guide/rule/96fdf16455/",
      "page": {
        "title": "Multiple wallets",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/multiple-wallets/"
      }
    },
    {
      "id": "93708254d8",
      "kind": "do",
      "severity": "standard",
      "text": "When the user creates a payment request, ask which wallet should receive it, defaulting to everyday, and remember the choice per counterparty.",
      "url": "https://www.bitcoinsv.design/guide/rule/93708254d8/",
      "page": {
        "title": "Multiple wallets",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/multiple-wallets/"
      }
    },
    {
      "id": "a883c205ef",
      "kind": "dont",
      "severity": "standard",
      "text": "Publish both handles in the same place. Doing so links the two wallets for anyone reading. See Wallet privacy.",
      "url": "https://www.bitcoinsv.design/guide/rule/a883c205ef/",
      "page": {
        "title": "Multiple wallets",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/multiple-wallets/"
      }
    },
    {
      "id": "03d5db7f15",
      "kind": "do",
      "severity": "standard",
      "text": "Let a wallet be archived rather than deleted: hidden from the main view, still able to receive, still restorable.",
      "url": "https://www.bitcoinsv.design/guide/rule/03d5db7f15/",
      "page": {
        "title": "Multiple wallets",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/multiple-wallets/"
      }
    },
    {
      "id": "1ca5fd2aa4",
      "kind": "dont",
      "severity": "standard",
      "text": "Offer to delete a wallet with a balance. Offer to empty it first, and say where the money would go.",
      "url": "https://www.bitcoinsv.design/guide/rule/1ca5fd2aa4/",
      "page": {
        "title": "Multiple wallets",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/multiple-wallets/"
      }
    },
    {
      "id": "d6d18ef03e",
      "kind": "do",
      "severity": "standard",
      "text": "Let users name and colour their wallets. \"Rent\" and \"Holiday\" are how people think, and a distinct colour is the fastest check that they are about to pay from the right one.",
      "url": "https://www.bitcoinsv.design/guide/rule/d6d18ef03e/",
      "page": {
        "title": "Multiple wallets",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/multiple-wallets/"
      }
    },
    {
      "id": "540681d6c4",
      "kind": "dont",
      "severity": "standard",
      "text": "Rely on colour alone to distinguish wallets. Always pair it with the name.",
      "url": "https://www.bitcoinsv.design/guide/rule/540681d6c4/",
      "page": {
        "title": "Multiple wallets",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/multiple-wallets/"
      }
    },
    {
      "id": "8b3f7ded40",
      "kind": "do",
      "severity": "standard",
      "text": "Ask what the group is protecting against before offering a rule. \"One of us loses a phone\" and \"one of us might take the money\" need different answers, and only the second needs a threshold above one.",
      "url": "https://www.bitcoinsv.design/guide/rule/8b3f7ded40/",
      "page": {
        "title": "Shared wallet",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/shared-wallet/"
      }
    },
    {
      "id": "160bd1f2cb",
      "kind": "do",
      "severity": "standard",
      "text": "Let an unfinished setup be saved and resumed. Getting three people to be available at once is the step most likely to stall.",
      "url": "https://www.bitcoinsv.design/guide/rule/160bd1f2cb/",
      "page": {
        "title": "Shared wallet",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/shared-wallet/"
      }
    },
    {
      "id": "cd2a190854",
      "kind": "do",
      "severity": "standard",
      "text": "Show whose key is set up and whose is outstanding, and give a way to nudge the people who are missing.",
      "url": "https://www.bitcoinsv.design/guide/rule/cd2a190854/",
      "page": {
        "title": "Shared wallet",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/shared-wallet/"
      }
    },
    {
      "id": "58c3a73490",
      "kind": "do",
      "severity": "standard",
      "text": "Include a recovery key held outside the group, or by the group's least active member, and say plainly what it can and cannot do on its own.",
      "url": "https://www.bitcoinsv.design/guide/rule/58c3a73490/",
      "page": {
        "title": "Shared wallet",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/shared-wallet/"
      }
    },
    {
      "id": "2a50c27a6c",
      "kind": "do",
      "severity": "standard",
      "text": "Show who has signed, who has not, and how long it has been waiting. Most of the time a shared payment is blocked on a person, not on the network.",
      "url": "https://www.bitcoinsv.design/guide/rule/2a50c27a6c/",
      "page": {
        "title": "Shared wallet",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/shared-wallet/"
      }
    },
    {
      "id": "c4ec2f3b90",
      "kind": "do",
      "severity": "standard",
      "text": "Notify the people whose signature is outstanding, and let anyone in the group nudge them without leaving the app.",
      "url": "https://www.bitcoinsv.design/guide/rule/c4ec2f3b90/",
      "page": {
        "title": "Shared wallet",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/shared-wallet/"
      }
    },
    {
      "id": "4583f478db",
      "kind": "do",
      "severity": "standard",
      "text": "Let a proposer cancel their own pending payment cleanly, without leaving funds reserved.",
      "url": "https://www.bitcoinsv.design/guide/rule/4583f478db/",
      "page": {
        "title": "Shared wallet",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/shared-wallet/"
      }
    },
    {
      "id": "74d1570f9f",
      "kind": "do",
      "severity": "standard",
      "text": "Attribute every payment to the member who proposed it and the members who approved it, and keep the note field prominent. \"Who bought this and why\" is the question a shared account gets asked most.",
      "url": "https://www.bitcoinsv.design/guide/rule/74d1570f9f/",
      "page": {
        "title": "Shared wallet",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/shared-wallet/"
      }
    },
    {
      "id": "d8ea6b8acd",
      "kind": "do",
      "severity": "standard",
      "text": "Design it as a migration with a clear explanation: a new wallet is created with the new members, and the balance is moved to it in a payment the current quorum approves.",
      "url": "https://www.bitcoinsv.design/guide/rule/d8ea6b8acd/",
      "page": {
        "title": "Shared wallet",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/shared-wallet/"
      }
    },
    {
      "id": "3665d5bbfa",
      "kind": "do",
      "severity": "standard",
      "text": "Keep the old wallet's history visible after the move. The money changed arrangement; the record of what the group spent did not.",
      "url": "https://www.bitcoinsv.design/guide/rule/3665d5bbfa/",
      "page": {
        "title": "Shared wallet",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/shared-wallet/"
      }
    },
    {
      "id": "3bac68810b",
      "kind": "dont",
      "severity": "standard",
      "text": "Imply a member can be removed without the remaining members acting. Anybody holding a key keeps it, and the only remedy is to move the funds somewhere their key does not work.",
      "url": "https://www.bitcoinsv.design/guide/rule/3bac68810b/",
      "page": {
        "title": "Shared wallet",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/shared-wallet/"
      }
    },
    {
      "id": "bde6fcaaf1",
      "kind": "do",
      "severity": "standard",
      "text": "Name the trigger in terms of the user's own money: \"You're holding more than you said you wanted to keep on this phone. Want to add a second key?\"",
      "url": "https://www.bitcoinsv.design/guide/rule/bde6fcaaf1/",
      "page": {
        "title": "Upgradeable wallet",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/upgradeable-wallet/"
      }
    },
    {
      "id": "3857860fe6",
      "kind": "dont",
      "severity": "standard",
      "text": "Offer the upgrade as an abstract security improvement. \"Increase your security level\" is a prompt nobody acts on, because nobody knows what level they are at.",
      "url": "https://www.bitcoinsv.design/guide/rule/3857860fe6/",
      "page": {
        "title": "Upgradeable wallet",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/upgradeable-wallet/"
      }
    },
    {
      "id": "79f63eabec",
      "kind": "do",
      "severity": "standard",
      "text": "Keep small payments one-tap at every stage. A multi-key wallet that asks for a second device to buy a coffee has become a savings wallet by accident. See Wallet setups.",
      "url": "https://www.bitcoinsv.design/guide/rule/79f63eabec/",
      "page": {
        "title": "Upgradeable wallet",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/upgradeable-wallet/"
      }
    },
    {
      "id": "be335ddb52",
      "kind": "do",
      "severity": "standard",
      "text": "Show the current arrangement in plain words, and what each option would protect against. \"One key on this phone. If you lose it and have your recovery words, you're fine. If somebody unlocks it, they can spend.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/be335ddb52/",
      "page": {
        "title": "Upgradeable wallet",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/upgradeable-wallet/"
      }
    },
    {
      "id": "e978eca3c7",
      "kind": "do",
      "severity": "standard",
      "text": "Let a user rehearse the new arrangement with a small amount before moving everything.",
      "url": "https://www.bitcoinsv.design/guide/rule/e978eca3c7/",
      "page": {
        "title": "Upgradeable wallet",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/upgradeable-wallet/"
      }
    },
    {
      "id": "b11f484fc8",
      "kind": "do",
      "severity": "standard",
      "text": "This is a path, not a feature. The upgrade should be prompted by the balance crossing something the user would mind losing, not discovered in settings by the people who least need it.",
      "url": "https://www.bitcoinsv.design/guide/rule/b11f484fc8/",
      "page": {
        "title": "Upgradeable wallet",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/upgradeable-wallet/"
      }
    },
    {
      "id": "d09cae6771",
      "kind": "do",
      "severity": "standard",
      "text": "Offer the upgrade path for people who want one wallet, and the two-wallet arrangement for people holding enough to care. The second is the one this guide recommends once there is real money involved. See Multiple wallets.",
      "url": "https://www.bitcoinsv.design/guide/rule/d09cae6771/",
      "page": {
        "title": "Upgradeable wallet",
        "section": "Wallet patterns",
        "url": "https://www.bitcoinsv.design/guide/wallet-patterns/upgradeable-wallet/"
      }
    },
    {
      "id": "0939ceecc0",
      "kind": "do",
      "severity": "standard",
      "text": "Read each screen's reasoning before borrowing it. The prices and limits fit a news site charging about 1p an article and will be wrong for a product charging a hundred times that.",
      "url": "https://www.bitcoinsv.design/guide/rule/0939ceecc0/",
      "page": {
        "title": "Pay-per-use reader",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/"
      }
    },
    {
      "id": "6021bc871a",
      "kind": "do",
      "severity": "standard",
      "text": "Mark free articles as plainly as paid ones on the front page, so the absence of a price is never mistaken for a missing label.",
      "url": "https://www.bitcoinsv.design/guide/rule/6021bc871a/",
      "page": {
        "title": "First visit and connecting",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/first-visit/"
      }
    },
    {
      "id": "d271628011",
      "kind": "dont",
      "severity": "standard",
      "text": "Put a connect prompt, a sign-in button or a wallet logo on the front page. Nothing there costs money, so nothing there needs a wallet.",
      "url": "https://www.bitcoinsv.design/guide/rule/d271628011/",
      "page": {
        "title": "First visit and connecting",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/first-visit/"
      }
    },
    {
      "id": "bfc87fd11b",
      "kind": "do",
      "severity": "standard",
      "text": "Show enough of a paid article before the price for the reader to judge it: at least the headline, the standfirst and the opening paragraphs.",
      "url": "https://www.bitcoinsv.design/guide/rule/bfc87fd11b/",
      "page": {
        "title": "First visit and connecting",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/first-visit/"
      }
    },
    {
      "id": "4addaa532c",
      "kind": "dont",
      "severity": "standard",
      "text": "Treat \"Not now\" as an error. Keep the reader on the article they chose, with the free paragraphs still showing.",
      "url": "https://www.bitcoinsv.design/guide/rule/4addaa532c/",
      "page": {
        "title": "First visit and connecting",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/first-visit/"
      }
    },
    {
      "id": "b1c3558127",
      "kind": "do",
      "severity": "standard",
      "text": "Open the rest of the article in place the moment the wallet reports the payment accepted, at the paragraph where the free part ended.",
      "url": "https://www.bitcoinsv.design/guide/rule/b1c3558127/",
      "page": {
        "title": "First visit and connecting",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/first-visit/"
      }
    },
    {
      "id": "a6aa7562f5",
      "kind": "dont",
      "severity": "standard",
      "text": "Show the allowance offer before the reader has finished her first paid article, or on any free article.",
      "url": "https://www.bitcoinsv.design/guide/rule/a6aa7562f5/",
      "page": {
        "title": "First visit and connecting",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/first-visit/"
      }
    },
    {
      "id": "a65df43c2e",
      "kind": "do",
      "severity": "standard",
      "text": "Treat \"No thanks\" as final for the visit. The reader goes on paying per article with a wallet prompt each time, and the card does not return until her next visit.",
      "url": "https://www.bitcoinsv.design/guide/rule/a65df43c2e/",
      "page": {
        "title": "First visit and connecting",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/first-visit/"
      }
    },
    {
      "id": "ab4b564bd6",
      "kind": "do",
      "severity": "standard",
      "text": "Show what the article just cost and what is left of today's allowance on the article itself, above the headline, every time the allowance pays for one.",
      "url": "https://www.bitcoinsv.design/guide/rule/ab4b564bd6/",
      "page": {
        "title": "Reading and the meter",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/reading/"
      }
    },
    {
      "id": "3d6603a269",
      "kind": "do",
      "severity": "standard",
      "text": "Mark articles the reader has already bought as read, without a price, so she never wonders whether opening one again will charge her.",
      "url": "https://www.bitcoinsv.design/guide/rule/3d6603a269/",
      "page": {
        "title": "Reading and the meter",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/reading/"
      }
    },
    {
      "id": "152e39fc89",
      "kind": "do",
      "severity": "standard",
      "text": "List what today's spending bought by article title, with the total first in local currency and the remaining allowance beneath it.",
      "url": "https://www.bitcoinsv.design/guide/rule/152e39fc89/",
      "page": {
        "title": "Reading and the meter",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/reading/"
      }
    },
    {
      "id": "56fe52035b",
      "kind": "do",
      "severity": "standard",
      "text": "Explain a used-up allowance on the article the reader was trying to open, with the free paragraphs still showing, and offer a one-time payment for that article.",
      "url": "https://www.bitcoinsv.design/guide/rule/56fe52035b/",
      "page": {
        "title": "Reading and the meter",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/reading/"
      }
    },
    {
      "id": "f4449e6daa",
      "kind": "dont",
      "severity": "standard",
      "text": "Raise the limit for the reader, or suggest a larger figure as the default. A new limit is a new request that she types or chooses.",
      "url": "https://www.bitcoinsv.design/guide/rule/f4449e6daa/",
      "page": {
        "title": "Reading and the meter",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/reading/"
      }
    },
    {
      "id": "214f7fdb04",
      "kind": "do",
      "severity": "standard",
      "text": "Describe each payment request with the article's title, short enough to read in one line of a wallet's activity list.",
      "url": "https://www.bitcoinsv.design/guide/rule/214f7fdb04/",
      "page": {
        "title": "Receipts, refunds and leaving",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/receipts-and-leaving/"
      }
    },
    {
      "id": "c2d019f36d",
      "kind": "do",
      "severity": "standard",
      "text": "Let the reader reach every article she has paid for from its receipt, so a receipt doubles as her reading history.",
      "url": "https://www.bitcoinsv.design/guide/rule/c2d019f36d/",
      "page": {
        "title": "Receipts, refunds and leaving",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/receipts-and-leaving/"
      }
    },
    {
      "id": "1e0ace6556",
      "kind": "do",
      "severity": "standard",
      "text": "Put a way to report a faulty article next to each receipt line, not on a separate support page.",
      "url": "https://www.bitcoinsv.design/guide/rule/1e0ace6556/",
      "page": {
        "title": "Receipts, refunds and leaving",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/receipts-and-leaving/"
      }
    },
    {
      "id": "9b7facd737",
      "kind": "do",
      "severity": "standard",
      "text": "Name the article in the refund's note, so the incoming payment in the reader's wallet explains itself without a visit to the app.",
      "url": "https://www.bitcoinsv.design/guide/rule/9b7facd737/",
      "page": {
        "title": "Receipts, refunds and leaving",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/receipts-and-leaving/"
      }
    },
    {
      "id": "2e3dc44697",
      "kind": "do",
      "severity": "standard",
      "text": "Show the price-change notice to every reader with an active allowance before the new price applies, with the date it takes effect.",
      "url": "https://www.bitcoinsv.design/guide/rule/2e3dc44697/",
      "page": {
        "title": "Receipts, refunds and leaving",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/receipts-and-leaving/"
      }
    },
    {
      "id": "c9932e2e3f",
      "kind": "dont",
      "severity": "standard",
      "text": "Ask for the allowance again in the same panel that tells the reader she is no longer connected. Reconnecting and granting an allowance are two decisions, made at two moments.",
      "url": "https://www.bitcoinsv.design/guide/rule/c9932e2e3f/",
      "page": {
        "title": "Receipts, refunds and leaving",
        "section": "Pay-per-use reader",
        "url": "https://www.bitcoinsv.design/guide/pay-per-use-reader/receipts-and-leaving/"
      }
    },
    {
      "id": "1f58a1e7e8",
      "kind": "do",
      "severity": "standard",
      "text": "Write down, before drawing any screen, the three things a ticketing site needs from the wallet (a key for this site, one Pass field for age-restricted gigs, one basket for tickets) and treat any request beyond them as a design change that needs a reason.",
      "url": "https://www.bitcoinsv.design/guide/rule/1f58a1e7e8/",
      "page": {
        "title": "Connected web app",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/"
      }
    },
    {
      "id": "b59e8d08df",
      "kind": "dont",
      "severity": "standard",
      "text": "Add an account system \"for later\" alongside the wallet sign-in. Two ways to be the same person on one site is how people end up with two half-accounts and a support ticket.",
      "url": "https://www.bitcoinsv.design/guide/rule/b59e8d08df/",
      "page": {
        "title": "Connected web app",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/"
      }
    },
    {
      "id": "d3d5f245c6",
      "kind": "do",
      "severity": "standard",
      "text": "Publish the site's exposure statement where the sign-in button is, as a link, so somebody like Ilse can read what the site asks for before she connects. See Disclose what you use.",
      "url": "https://www.bitcoinsv.design/guide/rule/d3d5f245c6/",
      "page": {
        "title": "Connected web app",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/"
      }
    },
    {
      "id": "501ad97435",
      "kind": "do",
      "severity": "standard",
      "text": "Let people browse every gig, date and price without connecting. Connecting is for buying and for seeing tickets already bought, not for looking.",
      "url": "https://www.bitcoinsv.design/guide/rule/501ad97435/",
      "page": {
        "title": "Signing in",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/signing-in/"
      }
    },
    {
      "id": "fdd2325a75",
      "kind": "dont",
      "severity": "standard",
      "text": "Name a wallet brand on the site's connect button or its explanation. The site works with any compatible wallet, and naming one tells everyone else they are in the wrong place.",
      "url": "https://www.bitcoinsv.design/guide/rule/fdd2325a75/",
      "page": {
        "title": "Signing in",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/signing-in/"
      }
    },
    {
      "id": "0b0087e7a0",
      "kind": "dont",
      "severity": "standard",
      "text": "Treat \"Not now\" at this prompt as a failure. Put the Connect wallet button back, keep the gig page as it was, and say nothing louder than the button.",
      "url": "https://www.bitcoinsv.design/guide/rule/0b0087e7a0/",
      "page": {
        "title": "Signing in",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/signing-in/"
      }
    },
    {
      "id": "847135ad94",
      "kind": "do",
      "severity": "standard",
      "text": "Show the \"what we can and can't see\" line once, after the first sign-in only, on the page Anna was already on rather than a separate welcome screen.",
      "url": "https://www.bitcoinsv.design/guide/rule/847135ad94/",
      "page": {
        "title": "Signing in",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/signing-in/"
      }
    },
    {
      "id": "00403c452b",
      "kind": "do",
      "severity": "standard",
      "text": "Try a silent sign-in on load when the site has seen this browser before, and fall back to the Connect wallet button only if the wallet does not answer without a prompt.",
      "url": "https://www.bitcoinsv.design/guide/rule/00403c452b/",
      "page": {
        "title": "Signing in",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/signing-in/"
      }
    },
    {
      "id": "064c521df1",
      "kind": "do",
      "severity": "standard",
      "text": "Under the connect button, say in one line that the account follows the wallet, not the device: \"Use the same wallet on any device to see your tickets. A different wallet starts a new account.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/064c521df1/",
      "page": {
        "title": "Signing in",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/signing-in/"
      }
    },
    {
      "id": "7a94fafeb1",
      "kind": "do",
      "severity": "standard",
      "text": "Show the age step only for gigs that have an age limit, and name the venue's rule as the reason: \"The Corner Room is over 18 only\", not \"Verification required\".",
      "url": "https://www.bitcoinsv.design/guide/rule/7a94fafeb1/",
      "page": {
        "title": "Proving an age",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/proving-an-age/"
      }
    },
    {
      "id": "669d27169b",
      "kind": "do",
      "severity": "standard",
      "text": "Request the field with Example Tickets named as the verifier, and if the venue itself will receive the answer, name the venue in the request too, so the wallet's \"Sent to\" line is true.",
      "url": "https://www.bitcoinsv.design/guide/rule/669d27169b/",
      "page": {
        "title": "Proving an age",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/proving-an-age/"
      }
    },
    {
      "id": "dc48748723",
      "kind": "do",
      "severity": "standard",
      "text": "Name the issuers the site accepts, and who chose them, on the screen that tells somebody they have no suitable Pass.",
      "url": "https://www.bitcoinsv.design/guide/rule/dc48748723/",
      "page": {
        "title": "Proving an age",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/proving-an-age/"
      }
    },
    {
      "id": "4e5ed02371",
      "kind": "do",
      "severity": "standard",
      "text": "Offer a way to buy that does not depend on a Pass where the venue allows one, so missing a Pass costs Anna a step at the door rather than the ticket.",
      "url": "https://www.bitcoinsv.design/guide/rule/4e5ed02371/",
      "page": {
        "title": "Proving an age",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/proving-an-age/"
      }
    },
    {
      "id": "3efdf45a21",
      "kind": "dont",
      "severity": "standard",
      "text": "Send Anna to an issuer and empty her basket behind her. Keep the gig and the ticket she chose waiting for when she comes back.",
      "url": "https://www.bitcoinsv.design/guide/rule/3efdf45a21/",
      "page": {
        "title": "Proving an age",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/proving-an-age/"
      }
    },
    {
      "id": "655554b800",
      "kind": "do",
      "severity": "standard",
      "text": "Word a refusal as Anna's decision and its one consequence for this gig, and leave every other part of the site, including other gigs, working as before.",
      "url": "https://www.bitcoinsv.design/guide/rule/655554b800/",
      "page": {
        "title": "Proving an age",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/proving-an-age/"
      }
    },
    {
      "id": "5f77011557",
      "kind": "dont",
      "severity": "standard",
      "text": "Reopen the wallet's Pass prompt automatically after a refusal, or on the next page load. The next request waits for Anna to press Ask my wallet again.",
      "url": "https://www.bitcoinsv.design/guide/rule/5f77011557/",
      "page": {
        "title": "Proving an age",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/proving-an-age/"
      }
    },
    {
      "id": "28f49068d4",
      "kind": "do",
      "severity": "standard",
      "text": "Name who receives the money and who the ticket is for in one line. Anna is paying the ticket site, for a venue, and both names belong on the screen.",
      "url": "https://www.bitcoinsv.design/guide/rule/28f49068d4/",
      "page": {
        "title": "Buying a ticket",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/buying-a-ticket/"
      }
    },
    {
      "id": "239b48c214",
      "kind": "do",
      "severity": "standard",
      "text": "Say on the review screen what Anna can do with the ticket afterwards, give it away or not, refund it or not, before she pays rather than in the terms.",
      "url": "https://www.bitcoinsv.design/guide/rule/239b48c214/",
      "page": {
        "title": "Buying a ticket",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/buying-a-ticket/"
      }
    },
    {
      "id": "b0b03659e4",
      "kind": "do",
      "severity": "standard",
      "text": "Ask for the tickets basket in the first purchase's prompt, as a separate item Anna can decline, and never at sign-in.",
      "url": "https://www.bitcoinsv.design/guide/rule/b0b03659e4/",
      "page": {
        "title": "Buying a ticket",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/buying-a-ticket/"
      }
    },
    {
      "id": "c47043659b",
      "kind": "do",
      "severity": "standard",
      "text": "Tell Anna where the ticket is, in her wallet, on the confirmation, so she does not wait for an email that is not coming.",
      "url": "https://www.bitcoinsv.design/guide/rule/c47043659b/",
      "page": {
        "title": "Buying a ticket",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/buying-a-ticket/"
      }
    },
    {
      "id": "7d58d12ea1",
      "kind": "do",
      "severity": "standard",
      "text": "Write the gig name, venue, date and what the holder may do with the ticket into the token when it is issued, so any wallet can show it without asking the site.",
      "url": "https://www.bitcoinsv.design/guide/rule/7d58d12ea1/",
      "page": {
        "title": "Buying a ticket",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/buying-a-ticket/"
      }
    },
    {
      "id": "ef68ada499",
      "kind": "dont",
      "severity": "standard",
      "text": "Let a picture of the ticket be enough to get in. The picture is the part anybody can copy; the door has to check that the person in front of it holds the ticket now.",
      "url": "https://www.bitcoinsv.design/guide/rule/ef68ada499/",
      "page": {
        "title": "Buying a ticket",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/buying-a-ticket/"
      }
    },
    {
      "id": "46eee4d8f2",
      "kind": "do",
      "severity": "standard",
      "text": "Label the site's own control Sign out, and put the one-line pointer to the wallet directly beneath it, so the two actions are read together.",
      "url": "https://www.bitcoinsv.design/guide/rule/46eee4d8f2/",
      "page": {
        "title": "Coming back and leaving",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/coming-back-and-leaving/"
      }
    },
    {
      "id": "bb801914c7",
      "kind": "do",
      "severity": "standard",
      "text": "Say on sign-out that it applies to this device only, and that the ticket is unaffected, in one line on the page she lands on.",
      "url": "https://www.bitcoinsv.design/guide/rule/bb801914c7/",
      "page": {
        "title": "Coming back and leaving",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/coming-back-and-leaving/"
      }
    },
    {
      "id": "29a3bc70a8",
      "kind": "dont",
      "severity": "standard",
      "text": "Sign Anna straight back in on the next page load after she pressed Sign out. Wait until she presses Connect wallet again on this device.",
      "url": "https://www.bitcoinsv.design/guide/rule/29a3bc70a8/",
      "page": {
        "title": "Coming back and leaving",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/coming-back-and-leaving/"
      }
    },
    {
      "id": "e5fa26e020",
      "kind": "do",
      "severity": "standard",
      "text": "Treat a sign-in that suddenly prompts again as a returning user whose wallet was cleared or who removed the site, and show the ordinary connect flow without asking why.",
      "url": "https://www.bitcoinsv.design/guide/rule/e5fa26e020/",
      "page": {
        "title": "Coming back and leaving",
        "section": "Connected web app",
        "url": "https://www.bitcoinsv.design/guide/connected-web-app/coming-back-and-leaving/"
      }
    },
    {
      "id": "7261906de0",
      "kind": "do",
      "severity": "standard",
      "text": "Take the split between the assistant and the wallet that holds its keys before you take any screen. Every rule in this section assumes the limits sit in the wallet and not in the assistant's instructions.",
      "url": "https://www.bitcoinsv.design/guide/rule/7261906de0/",
      "page": {
        "title": "Agent with a budget",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/"
      }
    },
    {
      "id": "fb104d46be",
      "kind": "dont",
      "severity": "standard",
      "text": "Copy the example numbers as defaults. The budget, rate and expiry here suit one research task, and your product's tasks will need their own.",
      "url": "https://www.bitcoinsv.design/guide/rule/fb104d46be/",
      "page": {
        "title": "Agent with a budget",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/"
      }
    },
    {
      "id": "b17d517e89",
      "kind": "do",
      "severity": "standard",
      "text": "Say on Scout's first screen, in one line, that the worst case is the amount Anna sends it. \"Scout can't spend more than you give it\" is the reassurance the whole design rests on.",
      "url": "https://www.bitcoinsv.design/guide/rule/b17d517e89/",
      "page": {
        "title": "Setting it up",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/setting-it-up/"
      }
    },
    {
      "id": "600ee0cdee",
      "kind": "do",
      "severity": "standard",
      "text": "Show the services row as named services with their prices, never as a field where Anna types an address or a domain.",
      "url": "https://www.bitcoinsv.design/guide/rule/600ee0cdee/",
      "page": {
        "title": "Setting it up",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/setting-it-up/"
      }
    },
    {
      "id": "b46e69a9e3",
      "kind": "do",
      "severity": "standard",
      "text": "Translate the budget into what it buys for this task: \"10,000 sats is about 2,000 data requests, or 500 articles.\" The number only means something beside its use.",
      "url": "https://www.bitcoinsv.design/guide/rule/b46e69a9e3/",
      "page": {
        "title": "Setting it up",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/setting-it-up/"
      }
    },
    {
      "id": "aca3d05001",
      "kind": "dont",
      "severity": "standard",
      "text": "Offer \"no end date\" as an option on this screen. A delegation with no end is the one nobody comes back to review.",
      "url": "https://www.bitcoinsv.design/guide/rule/aca3d05001/",
      "page": {
        "title": "Setting it up",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/setting-it-up/"
      }
    },
    {
      "id": "645df8240b",
      "kind": "do",
      "severity": "standard",
      "text": "Request exactly the budget Anna set. If she changes the amount in Bitcoin SV Wallet, show the new figure as Scout's budget on the next screen rather than holding on to the old one.",
      "url": "https://www.bitcoinsv.design/guide/rule/645df8240b/",
      "page": {
        "title": "Setting it up",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/setting-it-up/"
      }
    },
    {
      "id": "1ef33c2502",
      "kind": "do",
      "severity": "standard",
      "text": "List on the review what will come to Anna for approval: \"a new service\", \"anything over 100 sats\", \"going over 3,000 sats in a day\". The approvals are part of the deal, not a surprise later.",
      "url": "https://www.bitcoinsv.design/guide/rule/1ef33c2502/",
      "page": {
        "title": "Setting it up",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/setting-it-up/"
      }
    },
    {
      "id": "0a318cffc3",
      "kind": "do",
      "severity": "standard",
      "text": "Name on the review the one device where approvals will arrive, and accept approvals only there.",
      "url": "https://www.bitcoinsv.design/guide/rule/0a318cffc3/",
      "page": {
        "title": "Setting it up",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/setting-it-up/"
      }
    },
    {
      "id": "850d2dd497",
      "kind": "do",
      "severity": "standard",
      "text": "Say when and where the daily summary will arrive, and let Anna change the time on this screen.",
      "url": "https://www.bitcoinsv.design/guide/rule/850d2dd497/",
      "page": {
        "title": "Setting it up",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/setting-it-up/"
      }
    },
    {
      "id": "3b3d4d7f93",
      "kind": "do",
      "severity": "standard",
      "text": "Disable Start Scout until the top-up has arrived, and say so beside the button: \"Waiting for 10,000 sats from Bitcoin SV Wallet\".",
      "url": "https://www.bitcoinsv.design/guide/rule/3b3d4d7f93/",
      "page": {
        "title": "Setting it up",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/setting-it-up/"
      }
    },
    {
      "id": "d2d9f88b88",
      "kind": "dont",
      "severity": "standard",
      "text": "Move the status strip into a settings page once setup is done. Anna checks on Scout from where its work is, and that is where the total and the pause belong.",
      "url": "https://www.bitcoinsv.design/guide/rule/d2d9f88b88/",
      "page": {
        "title": "Setting it up",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/setting-it-up/"
      }
    },
    {
      "id": "9e1c785b81",
      "kind": "do",
      "severity": "standard",
      "text": "Show each purchase in the task view beside the step of the task it served, so \"4 articles\" reads as part of the research rather than a separate bill.",
      "url": "https://www.bitcoinsv.design/guide/rule/9e1c785b81/",
      "page": {
        "title": "While it works",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/while-it-works/"
      }
    },
    {
      "id": "ec2a6e2139",
      "kind": "dont",
      "severity": "standard",
      "text": "Notify Anna's phone for payments inside the limits. She is not watching on purpose, and a buzz per article would teach her to silence Scout entirely.",
      "url": "https://www.bitcoinsv.design/guide/rule/ec2a6e2139/",
      "page": {
        "title": "While it works",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/while-it-works/"
      }
    },
    {
      "id": "1c366db638",
      "kind": "do",
      "severity": "standard",
      "text": "Name every limit the request breaks: \"New service\" and \"Over 100 sats a payment\". Anna is deciding whether the limits were wrong or the request is.",
      "url": "https://www.bitcoinsv.design/guide/rule/1c366db638/",
      "page": {
        "title": "While it works",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/while-it-works/"
      }
    },
    {
      "id": "e1780d0bae",
      "kind": "do",
      "severity": "standard",
      "text": "Show what the budget bought on the same screen that says it is spent. Anna decides whether to top up by judging the last budget, not by looking at a zero.",
      "url": "https://www.bitcoinsv.design/guide/rule/e1780d0bae/",
      "page": {
        "title": "While it works",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/while-it-works/"
      }
    },
    {
      "id": "ce0f51aa97",
      "kind": "do",
      "severity": "standard",
      "text": "Offer to finish the task with what Scout has already bought, as an equal choice beside topping up.",
      "url": "https://www.bitcoinsv.design/guide/rule/ce0f51aa97/",
      "page": {
        "title": "While it works",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/while-it-works/"
      }
    },
    {
      "id": "ab3f4fb4d8",
      "kind": "do",
      "severity": "standard",
      "text": "Put refused payments, approvals Anna gave, and any service that kept money without delivering at the top of the daily summary, above the total.",
      "url": "https://www.bitcoinsv.design/guide/rule/ab3f4fb4d8/",
      "page": {
        "title": "Reviewing what it did",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/reviewing-what-it-did/"
      }
    },
    {
      "id": "5c690eddfa",
      "kind": "do",
      "severity": "standard",
      "text": "Say \"Nothing unusual today\" when that is true. A summary that only ever lists problems leaves Anna unsure whether a quiet one means no problems or a missing section.",
      "url": "https://www.bitcoinsv.design/guide/rule/5c690eddfa/",
      "page": {
        "title": "Reviewing what it did",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/reviewing-what-it-did/"
      }
    },
    {
      "id": "e5e2608c48",
      "kind": "dont",
      "severity": "standard",
      "text": "Send a summary on a day Scout spent nothing and nothing changed. A daily message with no news is the fastest way to have the useful ones ignored.",
      "url": "https://www.bitcoinsv.design/guide/rule/e5e2608c48/",
      "page": {
        "title": "Reviewing what it did",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/reviewing-what-it-did/"
      }
    },
    {
      "id": "8bcab9ebae",
      "kind": "do",
      "severity": "standard",
      "text": "Mark every payment in the trail with the task it served. A payment that belongs to no task is itself something to flag.",
      "url": "https://www.bitcoinsv.design/guide/rule/8bcab9ebae/",
      "page": {
        "title": "Reviewing what it did",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/reviewing-what-it-did/"
      }
    },
    {
      "id": "4615a804a2",
      "kind": "do",
      "severity": "standard",
      "text": "Show refused payments in the trail beside the ones that went through, marked \"Refused, nothing sent\". What Scout tried to buy is part of what it did.",
      "url": "https://www.bitcoinsv.design/guide/rule/4615a804a2/",
      "page": {
        "title": "Reviewing what it did",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/reviewing-what-it-did/"
      }
    },
    {
      "id": "1bdb8b66ac",
      "kind": "do",
      "severity": "standard",
      "text": "Put Pause Scout on any payment Anna has flagged, so she can stop it from the place she noticed the problem.",
      "url": "https://www.bitcoinsv.design/guide/rule/1bdb8b66ac/",
      "page": {
        "title": "Reviewing what it did",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/reviewing-what-it-did/"
      }
    },
    {
      "id": "9a51765140",
      "kind": "dont",
      "severity": "standard",
      "text": "Ask \"Are you sure?\" before pausing. Pausing costs nothing and can be undone; a question in front of it only slows down the person who is worried.",
      "url": "https://www.bitcoinsv.design/guide/rule/9a51765140/",
      "page": {
        "title": "Stopping it",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/stopping-it/"
      }
    },
    {
      "id": "3b20dc3c25",
      "kind": "do",
      "severity": "standard",
      "text": "Say how far the task got and what was already bought, so Anna can decide between resuming, finishing with what there is, and ending.",
      "url": "https://www.bitcoinsv.design/guide/rule/3b20dc3c25/",
      "page": {
        "title": "Stopping it",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/stopping-it/"
      }
    },
    {
      "id": "724639a2fc",
      "kind": "do",
      "severity": "standard",
      "text": "Say what happened to any approval that was waiting: still waiting while paused, cancelled when revoked.",
      "url": "https://www.bitcoinsv.design/guide/rule/724639a2fc/",
      "page": {
        "title": "Stopping it",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/stopping-it/"
      }
    },
    {
      "id": "6ab983417a",
      "kind": "dont",
      "severity": "standard",
      "text": "Bundle revoking with deleting Scout's activity. Anna may end the job precisely because she wants to look at what happened.",
      "url": "https://www.bitcoinsv.design/guide/rule/6ab983417a/",
      "page": {
        "title": "Stopping it",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/stopping-it/"
      }
    },
    {
      "id": "65cc5a0d71",
      "kind": "do",
      "severity": "standard",
      "text": "Close the job with the three numbers Anna will want to reconcile: what she sent, what Scout spent, and what came back.",
      "url": "https://www.bitcoinsv.design/guide/rule/65cc5a0d71/",
      "page": {
        "title": "Stopping it",
        "section": "Agent with a budget",
        "url": "https://www.bitcoinsv.design/guide/agent-with-a-budget/stopping-it/"
      }
    },
    {
      "id": "06f3417bc8",
      "kind": "do",
      "severity": "standard",
      "text": "Script the failure paths into every study. \"Your phone is gone and you have this piece of paper. Get your money back\" is the task most likely to show you where your product loses people's money.",
      "url": "https://www.bitcoinsv.design/guide/rule/06f3417bc8/",
      "page": {
        "title": "Conducting research",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/conducting-research/"
      }
    },
    {
      "id": "53e0a8e589",
      "kind": "dont",
      "severity": "standard",
      "text": "Ask whether somebody would use bitcoin. The answer is about identity rather than behaviour, and it predicts nothing.",
      "url": "https://www.bitcoinsv.design/guide/rule/53e0a8e589/",
      "page": {
        "title": "Conducting research",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/conducting-research/"
      }
    },
    {
      "id": "01480f330c",
      "kind": "do",
      "severity": "standard",
      "text": "Ask participants to say what they think just happened, after each step. The gap between what the interface did and what they believe it did is the finding.",
      "url": "https://www.bitcoinsv.design/guide/rule/01480f330c/",
      "page": {
        "title": "Conducting research",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/conducting-research/"
      }
    },
    {
      "id": "be7b0bb20e",
      "kind": "do",
      "severity": "standard",
      "text": "Use test funds, test identities and a test network, or a small amount of your own that the participant keeps. Never ask somebody to connect a wallet holding their own money.",
      "url": "https://www.bitcoinsv.design/guide/rule/be7b0bb20e/",
      "page": {
        "title": "Conducting research",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/conducting-research/"
      }
    },
    {
      "id": "361805aff5",
      "kind": "dont",
      "severity": "standard",
      "text": "Keep more than you need. A research archive containing people's real financial behaviour is a liability.",
      "url": "https://www.bitcoinsv.design/guide/rule/361805aff5/",
      "page": {
        "title": "Conducting research",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/conducting-research/"
      }
    },
    {
      "id": "128b1fc7fd",
      "kind": "do",
      "severity": "standard",
      "text": "Publish what you find. The ecosystem is small and most of the useful research in it does not exist yet. See Open design.",
      "url": "https://www.bitcoinsv.design/guide/rule/128b1fc7fd/",
      "page": {
        "title": "Conducting research",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/conducting-research/"
      }
    },
    {
      "id": "a33b6f12d1",
      "kind": "do",
      "severity": "standard",
      "text": "Write recruiting criteria about what people do and what they have, never about what they think of bitcoin.",
      "url": "https://www.bitcoinsv.design/guide/rule/a33b6f12d1/",
      "page": {
        "title": "Recruiting participants",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/recruiting-participants/"
      }
    },
    {
      "id": "1b5661bd68",
      "kind": "do",
      "severity": "standard",
      "text": "Set a quota for newcomers in every study of a flow a newcomer will meet, and fill it before you fill the others.",
      "url": "https://www.bitcoinsv.design/guide/rule/1b5661bd68/",
      "page": {
        "title": "Recruiting participants",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/recruiting-participants/"
      }
    },
    {
      "id": "b46894b7c7",
      "kind": "dont",
      "severity": "standard",
      "text": "Recruit only through the ecosystem's own forums, groups and channels. Use a general recruiting panel, local community groups, or the customers of the business you are designing for.",
      "url": "https://www.bitcoinsv.design/guide/rule/b46894b7c7/",
      "page": {
        "title": "Recruiting participants",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/recruiting-participants/"
      }
    },
    {
      "id": "96445ba4b5",
      "kind": "do",
      "severity": "standard",
      "text": "Screen on behaviour within a recent, stated period (\"in the last three months\"), not on habits (\"do you usually\").",
      "url": "https://www.bitcoinsv.design/guide/rule/96445ba4b5/",
      "page": {
        "title": "Recruiting participants",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/recruiting-participants/"
      }
    },
    {
      "id": "9dc0540ac6",
      "kind": "do",
      "severity": "standard",
      "text": "Offer the incentive in local currency, and in satoshis only if the participant asks for it or agrees to it after you have explained what receiving it involves.",
      "url": "https://www.bitcoinsv.design/guide/rule/9dc0540ac6/",
      "page": {
        "title": "Recruiting participants",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/recruiting-participants/"
      }
    },
    {
      "id": "96b346eeac",
      "kind": "do",
      "severity": "standard",
      "text": "Pay the full incentive to anybody who turns up, including somebody who stops halfway or cannot complete a task.",
      "url": "https://www.bitcoinsv.design/guide/rule/96b346eeac/",
      "page": {
        "title": "Recruiting participants",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/recruiting-participants/"
      }
    },
    {
      "id": "11e349b6e9",
      "kind": "dont",
      "severity": "standard",
      "text": "Make any part of the incentive depend on completing a task, finishing a flow, or keeping the test money. A participant paid for success will find a way to succeed.",
      "url": "https://www.bitcoinsv.design/guide/rule/11e349b6e9/",
      "page": {
        "title": "Recruiting participants",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/recruiting-participants/"
      }
    },
    {
      "id": "f91e40ba0d",
      "kind": "do",
      "severity": "standard",
      "text": "Store screener answers separately from session notes, linked by a participant code, and delete the screener data when the study is written up.",
      "url": "https://www.bitcoinsv.design/guide/rule/f91e40ba0d/",
      "page": {
        "title": "Recruiting participants",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/recruiting-participants/"
      }
    },
    {
      "id": "d07920a8eb",
      "kind": "do",
      "severity": "standard",
      "text": "Read the consent script aloud and get a yes to recording before you press record, then ask again on the recording.",
      "url": "https://www.bitcoinsv.design/guide/rule/d07920a8eb/",
      "page": {
        "title": "Interview guides",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/interview-guides/"
      }
    },
    {
      "id": "15120ac195",
      "kind": "do",
      "severity": "standard",
      "text": "Ask about the last time something happened, not about what usually happens. \"Tell me about the last time you paid for something inside an app\" gets a story; \"how do you usually pay\" gets an opinion.",
      "url": "https://www.bitcoinsv.design/guide/rule/15120ac195/",
      "page": {
        "title": "Interview guides",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/interview-guides/"
      }
    },
    {
      "id": "cfa0deac85",
      "kind": "dont",
      "severity": "standard",
      "text": "Ask a leading question. \"Wasn't that confusing?\" tells the participant the answer; \"what happened next?\" does not.",
      "url": "https://www.bitcoinsv.design/guide/rule/cfa0deac85/",
      "page": {
        "title": "Interview guides",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/interview-guides/"
      }
    },
    {
      "id": "69385db7f9",
      "kind": "dont",
      "severity": "standard",
      "text": "Ask \"would you use this?\" or \"would you pay for this?\". The answer describes who the participant wants to be, and predicts little about what they will do.",
      "url": "https://www.bitcoinsv.design/guide/rule/69385db7f9/",
      "page": {
        "title": "Interview guides",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/interview-guides/"
      }
    },
    {
      "id": "3e3a079ad0",
      "kind": "dont",
      "severity": "standard",
      "text": "Ask people to predict their own behaviour (\"how much would you set as a limit?\"). Ask what they did the last time a similar choice came up, or put the choice in a usability test and watch.",
      "url": "https://www.bitcoinsv.design/guide/rule/3e3a079ad0/",
      "page": {
        "title": "Interview guides",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/interview-guides/"
      }
    },
    {
      "id": "0d80e1ddab",
      "kind": "dont",
      "severity": "standard",
      "text": "Introduce the guide's own vocabulary in an interview. If the participant has not said \"allowance\" or \"recovery words\", neither should you; note the words they use instead.",
      "url": "https://www.bitcoinsv.design/guide/rule/0d80e1ddab/",
      "page": {
        "title": "Interview guides",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/interview-guides/"
      }
    },
    {
      "id": "3dbcd4a2bf",
      "kind": "do",
      "severity": "standard",
      "text": "Follow a vague answer with a request for a specific example: \"Can you think of a particular time?\"",
      "url": "https://www.bitcoinsv.design/guide/rule/3dbcd4a2bf/",
      "page": {
        "title": "Interview guides",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/interview-guides/"
      }
    },
    {
      "id": "999dd7462d",
      "kind": "do",
      "severity": "standard",
      "text": "Ask about money in relative terms (more or less than expected, noticeable or not) and write down the participant's own words for it.",
      "url": "https://www.bitcoinsv.design/guide/rule/999dd7462d/",
      "page": {
        "title": "Interview guides",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/interview-guides/"
      }
    },
    {
      "id": "edb87ed522",
      "kind": "do",
      "severity": "standard",
      "text": "Tell the participant, before the first task, that the money is not real and that nothing they do can cost them anything.",
      "url": "https://www.bitcoinsv.design/guide/rule/edb87ed522/",
      "page": {
        "title": "Usability test plans",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/usability-test-plans/"
      }
    },
    {
      "id": "fae0cce900",
      "kind": "do",
      "severity": "standard",
      "text": "Reset the test device and wallet between participants, so nobody inherits the last person's permissions, contacts or history.",
      "url": "https://www.bitcoinsv.design/guide/rule/fae0cce900/",
      "page": {
        "title": "Usability test plans",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/usability-test-plans/"
      }
    },
    {
      "id": "25b6660c21",
      "kind": "do",
      "severity": "standard",
      "text": "Write the tasks as goals in the participant's words, and read them out exactly as written in every session.",
      "url": "https://www.bitcoinsv.design/guide/rule/25b6660c21/",
      "page": {
        "title": "Usability test plans",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/usability-test-plans/"
      }
    },
    {
      "id": "011fffcf1e",
      "kind": "dont",
      "severity": "standard",
      "text": "Name the button, the menu or the term in a task. \"Connect your wallet\" tests whether they can find the word you just said.",
      "url": "https://www.bitcoinsv.design/guide/rule/011fffcf1e/",
      "page": {
        "title": "Usability test plans",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/usability-test-plans/"
      }
    },
    {
      "id": "e68b94a6ed",
      "kind": "do",
      "severity": "standard",
      "text": "After each task, ask \"what do you think just happened?\" before asking anything else, and write down the answer word for word.",
      "url": "https://www.bitcoinsv.design/guide/rule/e68b94a6ed/",
      "page": {
        "title": "Usability test plans",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/usability-test-plans/"
      }
    },
    {
      "id": "643e1935df",
      "kind": "do",
      "severity": "standard",
      "text": "Collect and destroy every printed recovery card at the end of each session, and retire the test wallet it belonged to.",
      "url": "https://www.bitcoinsv.design/guide/rule/643e1935df/",
      "page": {
        "title": "Usability test plans",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/usability-test-plans/"
      }
    },
    {
      "id": "7adff2cafd",
      "kind": "dont",
      "severity": "standard",
      "text": "Step in during the recovery drill until the participant has clearly given up.",
      "url": "https://www.bitcoinsv.design/guide/rule/7adff2cafd/",
      "page": {
        "title": "Usability test plans",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/usability-test-plans/"
      }
    },
    {
      "id": "964a120543",
      "kind": "do",
      "severity": "standard",
      "text": "Note when and why you helped, and count the task as assisted.",
      "url": "https://www.bitcoinsv.design/guide/rule/964a120543/",
      "page": {
        "title": "Usability test plans",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/usability-test-plans/"
      }
    },
    {
      "id": "fa45b82c15",
      "kind": "do",
      "severity": "standard",
      "text": "Write card text as a description of what the thing does, never using the term you are testing.",
      "url": "https://www.bitcoinsv.design/guide/rule/fa45b82c15/",
      "page": {
        "title": "What people call things",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/what-people-call-things/"
      }
    },
    {
      "id": "7dfa771cca",
      "kind": "do",
      "severity": "standard",
      "text": "Record the exact names participants give their groups, including spelling, before tidying them into themes.",
      "url": "https://www.bitcoinsv.design/guide/rule/7dfa771cca/",
      "page": {
        "title": "What people call things",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/what-people-call-things/"
      }
    },
    {
      "id": "fcd151af87",
      "kind": "do",
      "severity": "standard",
      "text": "Test the menu labels as plain text before they are designed, so a failure points at the word and not the visual.",
      "url": "https://www.bitcoinsv.design/guide/rule/fcd151af87/",
      "page": {
        "title": "What people call things",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/what-people-call-things/"
      }
    },
    {
      "id": "cee6e38131",
      "kind": "do",
      "severity": "standard",
      "text": "Run a first-click test on the real screen size the product ships at; a label that works on a desktop mock can fail on a phone.",
      "url": "https://www.bitcoinsv.design/guide/rule/cee6e38131/",
      "page": {
        "title": "What people call things",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/what-people-call-things/"
      }
    },
    {
      "id": "76b666cdc6",
      "kind": "do",
      "severity": "standard",
      "text": "Ask what a control will do before the participant uses it, and record the prediction word for word.",
      "url": "https://www.bitcoinsv.design/guide/rule/76b666cdc6/",
      "page": {
        "title": "What people call things",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/what-people-call-things/"
      }
    },
    {
      "id": "02a91cc604",
      "kind": "dont",
      "severity": "standard",
      "text": "Explain a term and then ask whether it is clear. Every explained term is clear to the person who has just had it explained.",
      "url": "https://www.bitcoinsv.design/guide/rule/02a91cc604/",
      "page": {
        "title": "What people call things",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/what-people-call-things/"
      }
    },
    {
      "id": "01deaa0b36",
      "kind": "dont",
      "severity": "standard",
      "text": "Offer a choice of meanings (\"does this mean A or B?\"). It hands the participant an answer they would not have reached.",
      "url": "https://www.bitcoinsv.design/guide/rule/01deaa0b36/",
      "page": {
        "title": "What people call things",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/what-people-call-things/"
      }
    },
    {
      "id": "73cbd3d365",
      "kind": "do",
      "severity": "standard",
      "text": "Test each word in the context where it appears in the product, not as an isolated vocabulary list.",
      "url": "https://www.bitcoinsv.design/guide/rule/73cbd3d365/",
      "page": {
        "title": "What people call things",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/what-people-call-things/"
      }
    },
    {
      "id": "2f0c13160e",
      "kind": "do",
      "severity": "standard",
      "text": "Test a candidate replacement alongside the current word with different participants, so nobody sees both and compares.",
      "url": "https://www.bitcoinsv.design/guide/rule/2f0c13160e/",
      "page": {
        "title": "What people call things",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/what-people-call-things/"
      }
    },
    {
      "id": "046cd3fa83",
      "kind": "do",
      "severity": "standard",
      "text": "Design the paid state for a glance across a counter. See Hardware categories.",
      "url": "https://www.bitcoinsv.design/guide/rule/046cd3fa83/",
      "page": {
        "title": "User personas",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/personas/"
      }
    },
    {
      "id": "318a276ac4",
      "kind": "do",
      "severity": "standard",
      "text": "Show where the user's money goes after your product, including the exchange step and its cost, even when another company runs it.",
      "url": "https://www.bitcoinsv.design/guide/rule/318a276ac4/",
      "page": {
        "title": "User personas",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/personas/"
      }
    },
    {
      "id": "a291b06c1a",
      "kind": "do",
      "severity": "standard",
      "text": "Say what each service your wallet uses learns, in one line. See Privacy.",
      "url": "https://www.bitcoinsv.design/guide/rule/a291b06c1a/",
      "page": {
        "title": "User personas",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/personas/"
      }
    },
    {
      "id": "cbdbf2e5bd",
      "kind": "do",
      "severity": "standard",
      "text": "Let an unfinished setup be resumed. See Inheritance wallet.",
      "url": "https://www.bitcoinsv.design/guide/rule/cbdbf2e5bd/",
      "page": {
        "title": "User personas",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/personas/"
      }
    },
    {
      "id": "dbe6e92b65",
      "kind": "do",
      "severity": "standard",
      "text": "Make the permission request read as part of the app it comes from, in the app's words, with the wallet's prompt as confirmation. See Connecting a wallet.",
      "url": "https://www.bitcoinsv.design/guide/rule/dbe6e92b65/",
      "page": {
        "title": "User personas",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/personas/"
      }
    },
    {
      "id": "fb69f8021a",
      "kind": "do",
      "severity": "standard",
      "text": "Pick one as primary and say so. A product for Musa and a product for Ilse are different products, and trying to be both produces one for neither.",
      "url": "https://www.bitcoinsv.design/guide/rule/fb69f8021a/",
      "page": {
        "title": "User personas",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/personas/"
      }
    },
    {
      "id": "8f7e6d7614",
      "kind": "do",
      "severity": "standard",
      "text": "Test against the one you are not designing for, to find where you have assumed too much.",
      "url": "https://www.bitcoinsv.design/guide/rule/8f7e6d7614/",
      "page": {
        "title": "User personas",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/personas/"
      }
    },
    {
      "id": "ed83692e57",
      "kind": "dont",
      "severity": "standard",
      "text": "Add a persona who already understands bitcoin and use them to justify a decision. That person exists, but they will not show you where a newcomer stops.",
      "url": "https://www.bitcoinsv.design/guide/rule/ed83692e57/",
      "page": {
        "title": "User personas",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/personas/"
      }
    },
    {
      "id": "26001be6ce",
      "kind": "do",
      "severity": "standard",
      "text": "State each finding as what was observed, with a count, before stating what you think it means.",
      "url": "https://www.bitcoinsv.design/guide/rule/26001be6ce/",
      "page": {
        "title": "Writing up findings",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/writing-up-findings/"
      }
    },
    {
      "id": "45c39b9195",
      "kind": "do",
      "severity": "standard",
      "text": "Report the number of participants and how they were recruited beside every finding, however small the study.",
      "url": "https://www.bitcoinsv.design/guide/rule/45c39b9195/",
      "page": {
        "title": "Writing up findings",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/writing-up-findings/"
      }
    },
    {
      "id": "e2b85cf021",
      "kind": "do",
      "severity": "standard",
      "text": "Say how confident you are and why, including what result would change your mind.",
      "url": "https://www.bitcoinsv.design/guide/rule/e2b85cf021/",
      "page": {
        "title": "Writing up findings",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/writing-up-findings/"
      }
    },
    {
      "id": "94259e2bb8",
      "kind": "dont",
      "severity": "standard",
      "text": "Report a percentage from a small study without the counts behind it. \"4 of 7\" is honest; \"57%\" suggests a precision you do not have.",
      "url": "https://www.bitcoinsv.design/guide/rule/94259e2bb8/",
      "page": {
        "title": "Writing up findings",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/writing-up-findings/"
      }
    },
    {
      "id": "11028aaa5d",
      "kind": "dont",
      "severity": "standard",
      "text": "Leave out a result because it contradicts the guide or your design. A contradicted rule is the most useful thing a study can report.",
      "url": "https://www.bitcoinsv.design/guide/rule/11028aaa5d/",
      "page": {
        "title": "Writing up findings",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/writing-up-findings/"
      }
    },
    {
      "id": "9c556965e5",
      "kind": "do",
      "severity": "standard",
      "text": "Cite the rule a finding tests by its permanent link, copied from the checklist, rather than by page title or a paraphrase.",
      "url": "https://www.bitcoinsv.design/guide/rule/9c556965e5/",
      "page": {
        "title": "Writing up findings",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/writing-up-findings/"
      }
    },
    {
      "id": "23975b1a51",
      "kind": "do",
      "severity": "standard",
      "text": "Replace every participant's name with a code, and keep the key that links codes to people separately from the write-up, then delete it when the study closes.",
      "url": "https://www.bitcoinsv.design/guide/rule/23975b1a51/",
      "page": {
        "title": "Writing up findings",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/writing-up-findings/"
      }
    },
    {
      "id": "311075135b",
      "kind": "do",
      "severity": "standard",
      "text": "Generalise details that could identify somebody in combination: \"a shop owner in a small town\", not the town and the trade.",
      "url": "https://www.bitcoinsv.design/guide/rule/311075135b/",
      "page": {
        "title": "Writing up findings",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/writing-up-findings/"
      }
    },
    {
      "id": "646244f06a",
      "kind": "dont",
      "severity": "standard",
      "text": "Publish a screenshot or recording frame without checking it for real names, notifications, and other apps' content in the background.",
      "url": "https://www.bitcoinsv.design/guide/rule/646244f06a/",
      "page": {
        "title": "Writing up findings",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/writing-up-findings/"
      }
    },
    {
      "id": "e20889afd5",
      "kind": "do",
      "severity": "standard",
      "text": "Submit a finding from a small study rather than waiting for a large one. Say how small it was; the template already asks you to.",
      "url": "https://www.bitcoinsv.design/guide/rule/e20889afd5/",
      "page": {
        "title": "Writing up findings",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/writing-up-findings/"
      }
    },
    {
      "id": "a8d8a1ece7",
      "kind": "do",
      "severity": "standard",
      "text": "If you run a study on any of these, write it up using the template on Writing up findings. A small study, reported with its numbers, is worth more than none.",
      "url": "https://www.bitcoinsv.design/guide/rule/a8d8a1ece7/",
      "page": {
        "title": "Published research",
        "section": "Research",
        "url": "https://www.bitcoinsv.design/guide/research/published-research/"
      }
    },
    {
      "id": "5288e2d93e",
      "kind": "do",
      "severity": "standard",
      "text": "Charge for the unit the user already thinks in: an article, a song, a search. A price per kilobyte or per token is a price nobody can predict.",
      "url": "https://www.bitcoinsv.design/guide/rule/5288e2d93e/",
      "page": {
        "title": "Business models",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/business-models/"
      }
    },
    {
      "id": "e21497106f",
      "kind": "do",
      "severity": "standard",
      "text": "Choose metering only when the value genuinely accrues over time. If the user would describe what they bought as one thing, charge for one thing.",
      "url": "https://www.bitcoinsv.design/guide/rule/e21497106f/",
      "page": {
        "title": "Business models",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/business-models/"
      }
    },
    {
      "id": "ae8d7e4289",
      "kind": "do",
      "severity": "standard",
      "text": "Put the tip where the value was felt, at the end of the article or the stream, and send it to the creator's handle, saying if the platform keeps any of it.",
      "url": "https://www.bitcoinsv.design/guide/rule/ae8d7e4289/",
      "page": {
        "title": "Business models",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/business-models/"
      }
    },
    {
      "id": "48ae13d754",
      "kind": "do",
      "severity": "standard",
      "text": "Offer a cap that matches what the subscription used to cost, so a heavy user never pays more than they would have. \"Never more than the monthly price\" is a promise people understand.",
      "url": "https://www.bitcoinsv.design/guide/rule/48ae13d754/",
      "page": {
        "title": "Business models",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/business-models/"
      }
    },
    {
      "id": "68d63e33bc",
      "kind": "dont",
      "severity": "standard",
      "text": "Remove the flat price and leave only per-use pricing for a product people use daily. The ones who used it most are the ones the change punishes.",
      "url": "https://www.bitcoinsv.design/guide/rule/68d63e33bc/",
      "page": {
        "title": "Business models",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/business-models/"
      }
    },
    {
      "id": "a7f2ac7164",
      "kind": "do",
      "severity": "standard",
      "text": "Say on the paid page what the payment replaces: \"No ads on this article, you paid about 1p (20 sats) for it.\" The connection between paying and the absence of ads is the product.",
      "url": "https://www.bitcoinsv.design/guide/rule/a7f2ac7164/",
      "page": {
        "title": "Business models",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/business-models/"
      }
    },
    {
      "id": "9bef00399b",
      "kind": "dont",
      "severity": "standard",
      "text": "Charge per use and show advertising on the same page. The user paid to remove the thing you are still showing them.",
      "url": "https://www.bitcoinsv.design/guide/rule/9bef00399b/",
      "page": {
        "title": "Business models",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/business-models/"
      }
    },
    {
      "id": "33bcdc5853",
      "kind": "do",
      "severity": "standard",
      "text": "Pick one model as the default and add others as options. A product offering per-use, metered and tipping on the same screen has asked the user to choose a business model.",
      "url": "https://www.bitcoinsv.design/guide/rule/33bcdc5853/",
      "page": {
        "title": "Business models",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/business-models/"
      }
    },
    {
      "id": "169dcf1e24",
      "kind": "do",
      "severity": "standard",
      "text": "Decide which currency each price is set in, and write it down. A price set in local currency moves in satoshis as the rate moves; a price set in satoshis moves in local currency. Both are fine, and mixing them by accident is not.",
      "url": "https://www.bitcoinsv.design/guide/rule/169dcf1e24/",
      "page": {
        "title": "Pricing",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/pricing/"
      }
    },
    {
      "id": "fbcc4bb179",
      "kind": "do",
      "severity": "standard",
      "text": "Put the price on the button or link that spends it: \"Read for about 1p (20 sats)\". The user should never need to open a pricing page to know what one tap costs.",
      "url": "https://www.bitcoinsv.design/guide/rule/fbcc4bb179/",
      "page": {
        "title": "Pricing",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/pricing/"
      }
    },
    {
      "id": "834035f683",
      "kind": "do",
      "severity": "standard",
      "text": "Tell the user what their allowance buys in your units: \"500 sats a day is about 25 articles.\" An allowance in satoshis alone leaves them to do the division.",
      "url": "https://www.bitcoinsv.design/guide/rule/834035f683/",
      "page": {
        "title": "Pricing",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/pricing/"
      }
    },
    {
      "id": "b1433b8ff7",
      "kind": "do",
      "severity": "standard",
      "text": "Round totals, not each item. Twenty articles at \"about 1p\" each should add up to the true total, not to twenty rounded pennies.",
      "url": "https://www.bitcoinsv.design/guide/rule/b1433b8ff7/",
      "page": {
        "title": "Pricing",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/pricing/"
      }
    },
    {
      "id": "743e826d42",
      "kind": "do",
      "severity": "standard",
      "text": "Announce a price rise before it applies, in the product, to people with an active allowance, and say what their allowance now buys.",
      "url": "https://www.bitcoinsv.design/guide/rule/743e826d42/",
      "page": {
        "title": "Pricing",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/pricing/"
      }
    },
    {
      "id": "7ee8e85de6",
      "kind": "do",
      "severity": "standard",
      "text": "Make the step from free to paid one small payment, not a plan. \"This article is about 1p (20 sats)\" converts a reader; \"Upgrade to Pro\" asks them to commit before they know.",
      "url": "https://www.bitcoinsv.design/guide/rule/7ee8e85de6/",
      "page": {
        "title": "Pricing",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/pricing/"
      }
    },
    {
      "id": "c5d8382c35",
      "kind": "dont",
      "severity": "standard",
      "text": "Ask for a wallet connection to use the free tier. Ask when the user first reaches something that costs money, as the permission advice says for every capability.",
      "url": "https://www.bitcoinsv.design/guide/rule/c5d8382c35/",
      "page": {
        "title": "Pricing",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/pricing/"
      }
    },
    {
      "id": "a1b4e52e1f",
      "kind": "do",
      "severity": "standard",
      "text": "Leave the network fee out of your price list. The payer's wallet adds it; when you pay out, for a refund or a reward, pay it yourself and do not deduct it from the amount.",
      "url": "https://www.bitcoinsv.design/guide/rule/a1b4e52e1f/",
      "page": {
        "title": "Pricing",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/pricing/"
      }
    },
    {
      "id": "253290df9e",
      "kind": "do",
      "severity": "standard",
      "text": "Show a refund in the user's activity as a payment from you that names the original purchase: \"Refund for 3 articles, 60 sats\".",
      "url": "https://www.bitcoinsv.design/guide/rule/253290df9e/",
      "page": {
        "title": "Pricing",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/pricing/"
      }
    },
    {
      "id": "5b901edf48",
      "kind": "do",
      "severity": "standard",
      "text": "Define activation as a first payment made or received, and measure the time from first opening the product to it.",
      "url": "https://www.bitcoinsv.design/guide/rule/5b901edf48/",
      "page": {
        "title": "Measuring a product",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/measuring-a-product/"
      }
    },
    {
      "id": "3e684584b3",
      "kind": "dont",
      "severity": "standard",
      "text": "Count a created wallet as an activated user. Creating a wallet takes no input and no time, so the number grows whether or not anybody uses the product.",
      "url": "https://www.bitcoinsv.design/guide/rule/3e684584b3/",
      "page": {
        "title": "Measuring a product",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/measuring-a-product/"
      }
    },
    {
      "id": "22bcb22b82",
      "kind": "do",
      "severity": "standard",
      "text": "Measure grants and refusals per permission, not per prompt. A prompt that asks for three things and is refused does not tell you which of the three caused it.",
      "url": "https://www.bitcoinsv.design/guide/rule/22bcb22b82/",
      "page": {
        "title": "Measuring a product",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/measuring-a-product/"
      }
    },
    {
      "id": "55fe28c97b",
      "kind": "do",
      "severity": "standard",
      "text": "Treat a rising refusal rate after adding a permission as a finding about that permission, and test asking for it later, at the feature that needs it.",
      "url": "https://www.bitcoinsv.design/guide/rule/55fe28c97b/",
      "page": {
        "title": "Measuring a product",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/measuring-a-product/"
      }
    },
    {
      "id": "db204e70b5",
      "kind": "do",
      "severity": "standard",
      "text": "Track what happens when an allowance is used up: topped up, left empty, or revoked. Those are your renewal, your dormant users and your churn.",
      "url": "https://www.bitcoinsv.design/guide/rule/db204e70b5/",
      "page": {
        "title": "Measuring a product",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/measuring-a-product/"
      }
    },
    {
      "id": "206b8d6114",
      "kind": "do",
      "severity": "standard",
      "text": "Measure repeat payments per user over a period you choose in advance, such as a second payment within a week of the first. A single payment is curiosity; a second is a habit starting.",
      "url": "https://www.bitcoinsv.design/guide/rule/206b8d6114/",
      "page": {
        "title": "Measuring a product",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/measuring-a-product/"
      }
    },
    {
      "id": "bb0a148992",
      "kind": "do",
      "severity": "standard",
      "text": "If you make a wallet, measure the share of users holding money who have both parts of a backup in place, and report it next to active users. Every user without both is one lost phone away from losing money.",
      "url": "https://www.bitcoinsv.design/guide/rule/bb0a148992/",
      "page": {
        "title": "Measuring a product",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/measuring-a-product/"
      }
    },
    {
      "id": "539c136125",
      "kind": "do",
      "severity": "standard",
      "text": "Count a backup as in place only once the user has finished it. We suggest treating a wallet backup as missing if it has not run since the user's last payment.",
      "url": "https://www.bitcoinsv.design/guide/rule/539c136125/",
      "page": {
        "title": "Measuring a product",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/measuring-a-product/"
      }
    },
    {
      "id": "7beb553386",
      "kind": "do",
      "severity": "standard",
      "text": "Measure how much of each agent budget is used, how often the agent asks a person to approve something outside its scope, and how often the stop control is pressed.",
      "url": "https://www.bitcoinsv.design/guide/rule/7beb553386/",
      "page": {
        "title": "Measuring a product",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/measuring-a-product/"
      }
    },
    {
      "id": "8ec083a3a2",
      "kind": "dont",
      "severity": "standard",
      "text": "Report payment counts as growth for a per-use product. Count people who paid, and how often they came back.",
      "url": "https://www.bitcoinsv.design/guide/rule/8ec083a3a2/",
      "page": {
        "title": "Measuring a product",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/measuring-a-product/"
      }
    },
    {
      "id": "beadf00cae",
      "kind": "do",
      "severity": "standard",
      "text": "Measure inside your own product, against your own events, and keep identities out of the analytics. What a user paid for in your app is yours to count; what else they did on chain is not.",
      "url": "https://www.bitcoinsv.design/guide/rule/beadf00cae/",
      "page": {
        "title": "Measuring a product",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/measuring-a-product/"
      }
    },
    {
      "id": "524f882abf",
      "kind": "do",
      "severity": "standard",
      "text": "Pay the referral when the new user does the thing you value, such as their first payment, and pay it at once. A reward that arrives days later has lost most of its point.",
      "url": "https://www.bitcoinsv.design/guide/rule/524f882abf/",
      "page": {
        "title": "Growth that pays",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/growth-that-pays/"
      }
    },
    {
      "id": "50ea2b87b8",
      "kind": "do",
      "severity": "standard",
      "text": "Say in the payment who it is for: \"Referral reward: Anna joined using your link.\" A payment with no memo looks like a mistake; a memo that reports what a friend bought tells the referrer too much.",
      "url": "https://www.bitcoinsv.design/guide/rule/50ea2b87b8/",
      "page": {
        "title": "Growth that pays",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/growth-that-pays/"
      }
    },
    {
      "id": "c4fb547f79",
      "kind": "do",
      "severity": "standard",
      "text": "Pay for a contribution after you have judged it, and say what was accepted. Paying on submission rewards volume, and volume is what fake accounts produce.",
      "url": "https://www.bitcoinsv.design/guide/rule/c4fb547f79/",
      "page": {
        "title": "Growth that pays",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/growth-that-pays/"
      }
    },
    {
      "id": "4f5a86407a",
      "kind": "do",
      "severity": "standard",
      "text": "Publish the rate before people contribute: \"50 sats for each accepted translation.\" A reward people can predict is one they can decide to work for.",
      "url": "https://www.bitcoinsv.design/guide/rule/4f5a86407a/",
      "page": {
        "title": "Growth that pays",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/growth-that-pays/"
      }
    },
    {
      "id": "8bc8cdc44e",
      "kind": "do",
      "severity": "standard",
      "text": "Send credit to try as a real payment to the user's wallet, not as a balance inside your app. A real payment teaches them how the wallet works; an in-app balance teaches them how your app works and leaves you holding the money.",
      "url": "https://www.bitcoinsv.design/guide/rule/8bc8cdc44e/",
      "page": {
        "title": "Growth that pays",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/growth-that-pays/"
      }
    },
    {
      "id": "b480f14d19",
      "kind": "dont",
      "severity": "standard",
      "text": "Restrict credit to try so it can only be spent with you, then call it a gift. Either give money, or give a free trial, and name it accurately.",
      "url": "https://www.bitcoinsv.design/guide/rule/b480f14d19/",
      "page": {
        "title": "Growth that pays",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/growth-that-pays/"
      }
    },
    {
      "id": "af471c42fb",
      "kind": "do",
      "severity": "standard",
      "text": "Make the user's handle and a payment request one tap away from wherever they would want to share them, with your product's name on the landing page the recipient sees.",
      "url": "https://www.bitcoinsv.design/guide/rule/af471c42fb/",
      "page": {
        "title": "Growth that pays",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/growth-that-pays/"
      }
    },
    {
      "id": "d2b40b4b51",
      "kind": "do",
      "severity": "standard",
      "text": "Design the page a payment link opens for somebody without a wallet: what it is, who sent it, and the shortest route to receiving. The sender has already done your marketing.",
      "url": "https://www.bitcoinsv.design/guide/rule/d2b40b4b51/",
      "page": {
        "title": "Growth that pays",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/growth-that-pays/"
      }
    },
    {
      "id": "67e357233c",
      "kind": "do",
      "severity": "standard",
      "text": "Tie every reward to something that costs a fake account real effort or real money: a purchase, an accepted contribution, a payment received from somebody else.",
      "url": "https://www.bitcoinsv.design/guide/rule/67e357233c/",
      "page": {
        "title": "Growth that pays",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/growth-that-pays/"
      }
    },
    {
      "id": "11889dd8fd",
      "kind": "do",
      "severity": "standard",
      "text": "Cap rewards per referrer and per period, and watch for clusters: many new users paid by the same referrer, or rewards forwarded straight to one wallet.",
      "url": "https://www.bitcoinsv.design/guide/rule/11889dd8fd/",
      "page": {
        "title": "Growth that pays",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/growth-that-pays/"
      }
    },
    {
      "id": "e38fc58526",
      "kind": "dont",
      "severity": "standard",
      "text": "Pay a reward for creating a wallet or connecting one. Both are free to repeat, so the reward pays for the repetition.",
      "url": "https://www.bitcoinsv.design/guide/rule/e38fc58526/",
      "page": {
        "title": "Growth that pays",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/growth-that-pays/"
      }
    },
    {
      "id": "7596f98831",
      "kind": "do",
      "severity": "standard",
      "text": "Write down which arrangement your product uses, in one sentence a user could understand, and put that sentence in the product before the user holds money with you.",
      "url": "https://www.bitcoinsv.design/guide/rule/7596f98831/",
      "page": {
        "title": "Custody as a product decision",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/custody/"
      }
    },
    {
      "id": "ac3c5a8d36",
      "kind": "do",
      "severity": "standard",
      "text": "Start from the user's own wallet and move along the scale only for a reason you can name, such as a user group that will not keep a backup. Each step towards holding funds buys easier onboarding with a responsibility you cannot hand back.",
      "url": "https://www.bitcoinsv.design/guide/rule/ac3c5a8d36/",
      "page": {
        "title": "Custody as a product decision",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/custody/"
      }
    },
    {
      "id": "96334adb13",
      "kind": "do",
      "severity": "standard",
      "text": "Choose your product's point on the expression scale before writing the store listing, the landing page or the onboarding, and check all three against that point before release.",
      "url": "https://www.bitcoinsv.design/guide/rule/96334adb13/",
      "page": {
        "title": "Talking about BSV",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/talking-about-bsv/"
      }
    },
    {
      "id": "bebebe9463",
      "kind": "do",
      "severity": "standard",
      "text": "Place the product by who it is for. If your primary user would describe the product without the word bitcoin, keep the network in the background.",
      "url": "https://www.bitcoinsv.design/guide/rule/bebebe9463/",
      "page": {
        "title": "Talking about BSV",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/talking-about-bsv/"
      }
    },
    {
      "id": "d31dbb8934",
      "kind": "dont",
      "severity": "standard",
      "text": "Name the network on screens where it changes nothing the user does. On a \"Read for about 1p (20 sats)\" button, the network is plumbing.",
      "url": "https://www.bitcoinsv.design/guide/rule/d31dbb8934/",
      "page": {
        "title": "Talking about BSV",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/talking-about-bsv/"
      }
    },
    {
      "id": "102d7706f9",
      "kind": "do",
      "severity": "standard",
      "text": "Open the landing page with what the user gets, in one sentence they could repeat: \"Read any article for about a penny, without an account.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/102d7706f9/",
      "page": {
        "title": "Talking about BSV",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/talking-about-bsv/"
      }
    },
    {
      "id": "187f8bd7f4",
      "kind": "do",
      "severity": "standard",
      "text": "Include an honest line about what the product is not good for, such as holding savings in a connected wallet. It answers the catch the reader is looking for.",
      "url": "https://www.bitcoinsv.design/guide/rule/187f8bd7f4/",
      "page": {
        "title": "Talking about BSV",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/talking-about-bsv/"
      }
    },
    {
      "id": "4d3b90a517",
      "kind": "do",
      "severity": "standard",
      "text": "Put the network name and how payment works in a short section below the fold, for the readers who want it, rather than in the headline.",
      "url": "https://www.bitcoinsv.design/guide/rule/4d3b90a517/",
      "page": {
        "title": "Talking about BSV",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/talking-about-bsv/"
      }
    },
    {
      "id": "f9ebe16647",
      "kind": "do",
      "severity": "standard",
      "text": "Write each value statement as an outcome with a number or a concrete detail: \"Paid while the customer is still at the till\", \"No account, no card, no email address\".",
      "url": "https://www.bitcoinsv.design/guide/rule/f9ebe16647/",
      "page": {
        "title": "Talking about BSV",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/talking-about-bsv/"
      }
    },
    {
      "id": "aa27fc2351",
      "kind": "dont",
      "severity": "standard",
      "text": "Describe the product with words the user has to look up: on-chain, non-custodial, peer-to-peer, the Metanet. If a term needs the glossary, it does not belong in a headline.",
      "url": "https://www.bitcoinsv.design/guide/rule/aa27fc2351/",
      "page": {
        "title": "Talking about BSV",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/talking-about-bsv/"
      }
    },
    {
      "id": "4deb75e726",
      "kind": "dont",
      "severity": "standard",
      "text": "Campaign for the network in product copy. Users came for the product, and advocacy beside their balance makes their money feel political.",
      "url": "https://www.bitcoinsv.design/guide/rule/4deb75e726/",
      "page": {
        "title": "Talking about BSV",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/talking-about-bsv/"
      }
    },
    {
      "id": "f1c4dcf02c",
      "kind": "dont",
      "severity": "standard",
      "text": "Sell the product by comparing it with another network. Say what yours does and let it be judged on that.",
      "url": "https://www.bitcoinsv.design/guide/rule/f1c4dcf02c/",
      "page": {
        "title": "Talking about BSV",
        "section": "Product and business",
        "url": "https://www.bitcoinsv.design/guide/product/talking-about-bsv/"
      }
    },
    {
      "id": "f3dee889c3",
      "kind": "do",
      "severity": "standard",
      "text": "Read Connecting a wallet and Payments first, whatever you are building. Most surprises in a BSV product trace back to one of them.",
      "url": "https://www.bitcoinsv.design/guide/rule/f3dee889c3/",
      "page": {
        "title": "How it works",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/"
      }
    },
    {
      "id": "c9bd01e85a",
      "kind": "do",
      "severity": "standard",
      "text": "Keep wallet records on the device by default, and make remote storage a separate, explained opt-in.",
      "url": "https://www.bitcoinsv.design/guide/rule/c9bd01e85a/",
      "page": {
        "title": "Backups",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/backups/"
      }
    },
    {
      "id": "2f53032efb",
      "kind": "do",
      "severity": "standard",
      "text": "Encrypt records on the device before they are sent anywhere.",
      "url": "https://www.bitcoinsv.design/guide/rule/2f53032efb/",
      "page": {
        "title": "Backups",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/backups/"
      }
    },
    {
      "id": "f8a0f3fbe9",
      "kind": "do",
      "severity": "standard",
      "text": "Back up records automatically and show when the last backup ran.",
      "url": "https://www.bitcoinsv.design/guide/rule/f8a0f3fbe9/",
      "page": {
        "title": "Backups",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/backups/"
      }
    },
    {
      "id": "c8bbcdfe72",
      "kind": "do",
      "severity": "standard",
      "text": "Absorb the fee into your price where you can. If you show the network fee, put it in the payment's details as \"less than 1p\", not on the review screen.",
      "url": "https://www.bitcoinsv.design/guide/rule/c8bbcdfe72/",
      "page": {
        "title": "Transactions",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/transactions/"
      }
    },
    {
      "id": "d009fba46d",
      "kind": "do",
      "severity": "standard",
      "text": "Select within a basket, and treat an output reserved by an app or a token as unavailable rather than as a cheap input.",
      "url": "https://www.bitcoinsv.design/guide/rule/d009fba46d/",
      "page": {
        "title": "Coin selection",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/coin-selection/"
      }
    },
    {
      "id": "d753615bad",
      "kind": "dont",
      "severity": "standard",
      "text": "Merge outputs from unrelated counterparties just because it makes a neater transaction. The saving is less than 1p, and the cost is linking two relationships that were separate.",
      "url": "https://www.bitcoinsv.design/guide/rule/d753615bad/",
      "page": {
        "title": "Coin selection",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/coin-selection/"
      }
    },
    {
      "id": "a330506cc7",
      "kind": "dont",
      "severity": "standard",
      "text": "Build a manual coin-choice screen into a consumer wallet. Choosing well automatically protects privacy better than asking the user to.",
      "url": "https://www.bitcoinsv.design/guide/rule/a330506cc7/",
      "page": {
        "title": "Coin selection",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/coin-selection/"
      }
    },
    {
      "id": "237dfd7079",
      "kind": "dont",
      "severity": "standard",
      "text": "Use the words \"dust\", \"UTXO\" or \"coin selection\" anywhere a normal user can see them.",
      "url": "https://www.bitcoinsv.design/guide/rule/237dfd7079/",
      "page": {
        "title": "Coin selection",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/coin-selection/"
      }
    },
    {
      "id": "fc599ef58d",
      "kind": "do",
      "severity": "standard",
      "text": "Never show change in activity. Paying 500 sats from a 2,000-sat output is one payment of 500 sats, not a payment of 2,000 sats and a receipt of 1,500.",
      "url": "https://www.bitcoinsv.design/guide/rule/fc599ef58d/",
      "page": {
        "title": "Coin selection",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/coin-selection/"
      }
    },
    {
      "id": "e3a51dbe82",
      "kind": "do",
      "severity": "standard",
      "text": "Show \"Paid\" or \"Received\" as soon as the recipient's wallet replies \"accepted\". Do not wait for the payment to be mined.",
      "url": "https://www.bitcoinsv.design/guide/rule/e3a51dbe82/",
      "page": {
        "title": "Payments",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/payments/"
      }
    },
    {
      "id": "b81a18d899",
      "kind": "do",
      "severity": "standard",
      "text": "Don't show derived payment addresses in the main interface. Show the person, handle or app the payment relates to. Keep raw transaction details in an advanced view.",
      "url": "https://www.bitcoinsv.design/guide/rule/b81a18d899/",
      "page": {
        "title": "Payments",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/payments/"
      }
    },
    {
      "id": "b3eca8ab1e",
      "kind": "do",
      "severity": "standard",
      "text": "Say \"Pass\" in the interface. Keep \"certificate\" for developer documentation.",
      "url": "https://www.bitcoinsv.design/guide/rule/b3eca8ab1e/",
      "page": {
        "title": "Identity",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/identity/"
      }
    },
    {
      "id": "1b5d8125c9",
      "kind": "do",
      "severity": "standard",
      "text": "Use identity discovery only when being found is central to your product, and say so where the user agrees to it.",
      "url": "https://www.bitcoinsv.design/guide/rule/1b5d8125c9/",
      "page": {
        "title": "Identity",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/identity/"
      }
    },
    {
      "id": "02544971ff",
      "kind": "do",
      "severity": "standard",
      "text": "Show a wallet message beside the contact or payment it belongs to, not in a separate technical inbox.",
      "url": "https://www.bitcoinsv.design/guide/rule/02544971ff/",
      "page": {
        "title": "Identity",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/identity/"
      }
    },
    {
      "id": "afdd155583",
      "kind": "do",
      "severity": "standard",
      "text": "After the first money arrives, suggest a maximum balance, and offer to move anything above it to savings.",
      "url": "https://www.bitcoinsv.design/guide/rule/afdd155583/",
      "page": {
        "title": "Wallet setups",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/wallet-setups/"
      }
    },
    {
      "id": "827ff57c2f",
      "kind": "do",
      "severity": "standard",
      "text": "Ask \"How much would you be comfortable losing if this phone were stolen?\" when suggesting a limit, instead of offering a fixed amount.",
      "url": "https://www.bitcoinsv.design/guide/rule/827ff57c2f/",
      "page": {
        "title": "Wallet setups",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/wallet-setups/"
      }
    },
    {
      "id": "52e3b3918c",
      "kind": "do",
      "severity": "standard",
      "text": "Let a wallet point at a different service provider, and ideally more than one at a time. A wallet welded to one company's endpoint has that company's lifespan.",
      "url": "https://www.bitcoinsv.design/guide/rule/52e3b3918c/",
      "page": {
        "title": "Nodes and verification",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/nodes/"
      }
    },
    {
      "id": "ff8678503a",
      "kind": "do",
      "severity": "standard",
      "text": "Put the services a wallet uses in an advanced settings screen, with what each one is for in one line. Users who care should be able to see and change them.",
      "url": "https://www.bitcoinsv.design/guide/rule/ff8678503a/",
      "page": {
        "title": "Nodes and verification",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/nodes/"
      }
    },
    {
      "id": "1b4fab8a30",
      "kind": "dont",
      "severity": "standard",
      "text": "Put verification in front of ordinary users. Nobody should have to understand merkle proofs to be paid.",
      "url": "https://www.bitcoinsv.design/guide/rule/1b4fab8a30/",
      "page": {
        "title": "Nodes and verification",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/nodes/"
      }
    },
    {
      "id": "77fd527bde",
      "kind": "do",
      "severity": "standard",
      "text": "Keep headers synced quietly in the background and never make it a user-facing task. If headers are stale, say what that means for the user (\"can't confirm payments from the last 3 days\") rather than showing a sync percentage they can do nothing about.",
      "url": "https://www.bitcoinsv.design/guide/rule/77fd527bde/",
      "page": {
        "title": "Nodes and verification",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/nodes/"
      }
    },
    {
      "id": "8dec0ccd6a",
      "kind": "do",
      "severity": "standard",
      "text": "Prefer selections that keep outputs from unrelated counterparties apart, even though combining them would be marginally cheaper.",
      "url": "https://www.bitcoinsv.design/guide/rule/8dec0ccd6a/",
      "page": {
        "title": "Wallet privacy",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/wallet-privacy/"
      }
    },
    {
      "id": "87c12f47ff",
      "kind": "do",
      "severity": "standard",
      "text": "Let users choose or self-host their services, and say in one line what each one learns. See Nodes and verification.",
      "url": "https://www.bitcoinsv.design/guide/rule/87c12f47ff/",
      "page": {
        "title": "Wallet privacy",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/wallet-privacy/"
      }
    },
    {
      "id": "83e6f3646c",
      "kind": "dont",
      "severity": "standard",
      "text": "Query a service once per output or once per balance refresh in a way that maps the user's whole wallet to that provider. Batch, and prefer services that do not need to know which outputs are yours.",
      "url": "https://www.bitcoinsv.design/guide/rule/83e6f3646c/",
      "page": {
        "title": "Wallet privacy",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/wallet-privacy/"
      }
    },
    {
      "id": "c9da233290",
      "kind": "do",
      "severity": "standard",
      "text": "Name what is being revealed, to whom, and for how long it keeps working. \"This lets Example Audit see every payment between you and Example Shop, including future ones\" is the honest version.",
      "url": "https://www.bitcoinsv.design/guide/rule/c9da233290/",
      "page": {
        "title": "Wallet privacy",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/wallet-privacy/"
      }
    },
    {
      "id": "b68b5c94be",
      "kind": "dont",
      "severity": "standard",
      "text": "Offer counterparty-wide revelation where a specific one would answer the question. Never bundle either into a general permission grant at connect time.",
      "url": "https://www.bitcoinsv.design/guide/rule/b68b5c94be/",
      "page": {
        "title": "Wallet privacy",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/wallet-privacy/"
      }
    },
    {
      "id": "124abbc973",
      "kind": "dont",
      "severity": "standard",
      "text": "Let an agent wallet reveal key linkage at all. See Wallet setups.",
      "url": "https://www.bitcoinsv.design/guide/rule/124abbc973/",
      "page": {
        "title": "Wallet privacy",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/wallet-privacy/"
      }
    },
    {
      "id": "34c45e46fd",
      "kind": "do",
      "severity": "standard",
      "text": "Encrypt anything personal before it is written, and say plainly that what goes on chain cannot be deleted.",
      "url": "https://www.bitcoinsv.design/guide/rule/34c45e46fd/",
      "page": {
        "title": "Wallet privacy",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/wallet-privacy/"
      }
    },
    {
      "id": "9e7df22507",
      "kind": "dont",
      "severity": "standard",
      "text": "Write personal data on chain in the clear, even where it looks harmless. There is no delete, and context changes over decades.",
      "url": "https://www.bitcoinsv.design/guide/rule/9e7df22507/",
      "page": {
        "title": "Wallet privacy",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/wallet-privacy/"
      }
    },
    {
      "id": "dbec310886",
      "kind": "do",
      "severity": "standard",
      "text": "Pick the payment method automatically, in this order: peer-to-peer, then address-only Paymail, then a plain address.",
      "url": "https://www.bitcoinsv.design/guide/rule/dbec310886/",
      "page": {
        "title": "Legacy compatibility",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/legacy-compatibility/"
      }
    },
    {
      "id": "dd37e63209",
      "kind": "dont",
      "severity": "standard",
      "text": "Ask the user to choose a payment protocol.",
      "url": "https://www.bitcoinsv.design/guide/rule/dd37e63209/",
      "page": {
        "title": "Legacy compatibility",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/legacy-compatibility/"
      }
    },
    {
      "id": "b10c1953ad",
      "kind": "do",
      "severity": "standard",
      "text": "Have apps sign through the Wallet Application Interface, which uses a key derived for that purpose and never hands the app a private key.",
      "url": "https://www.bitcoinsv.design/guide/rule/b10c1953ad/",
      "page": {
        "title": "Overview",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/overview/"
      }
    },
    {
      "id": "d8ba56d867",
      "kind": "do",
      "severity": "standard",
      "text": "Start people on the simplest scheme that suits the amount they hold, and offer a clear upgrade when the balance grows past it. See Wallet setups.",
      "url": "https://www.bitcoinsv.design/guide/rule/d8ba56d867/",
      "page": {
        "title": "Overview",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/overview/"
      }
    },
    {
      "id": "4268e213cf",
      "kind": "do",
      "severity": "standard",
      "text": "Name what each scheme protects against, in the user's terms: a lost phone, a stolen phone, a dishonest person, a forgotten password.",
      "url": "https://www.bitcoinsv.design/guide/rule/4268e213cf/",
      "page": {
        "title": "Overview",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/overview/"
      }
    },
    {
      "id": "353e154e6e",
      "kind": "dont",
      "severity": "standard",
      "text": "Describe a scheme as \"secure\" without saying against what. Every scheme here is secure against something and useless against something else.",
      "url": "https://www.bitcoinsv.design/guide/rule/353e154e6e/",
      "page": {
        "title": "Overview",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/overview/"
      }
    },
    {
      "id": "589ffaa0a0",
      "kind": "do",
      "severity": "standard",
      "text": "Let users choose their provider, or run their own. A backup tied to one company is a backup with that company's lifespan.",
      "url": "https://www.bitcoinsv.design/guide/rule/589ffaa0a0/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/cloud-backup/"
      }
    },
    {
      "id": "d9fc409813",
      "kind": "do",
      "severity": "standard",
      "text": "Support more than one location at once. Two independent copies is the point.",
      "url": "https://www.bitcoinsv.design/guide/rule/d9fc409813/",
      "page": {
        "title": "Automatic cloud backup",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/cloud-backup/"
      }
    },
    {
      "id": "15efe0ff89",
      "kind": "do",
      "severity": "standard",
      "text": "Say which kind of words these are on the screen that shows them, and again on the screen that asks for them.",
      "url": "https://www.bitcoinsv.design/guide/rule/15efe0ff89/",
      "page": {
        "title": "Manual backup",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/manual-backup/"
      }
    },
    {
      "id": "505afb0055",
      "kind": "do",
      "severity": "standard",
      "text": "Offer one method at setup, and let the user change it later.",
      "url": "https://www.bitcoinsv.design/guide/rule/505afb0055/",
      "page": {
        "title": "Manual backup",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/manual-backup/"
      }
    },
    {
      "id": "60535151ec",
      "kind": "do",
      "severity": "standard",
      "text": "Explain what the words are and where to keep them before showing them.",
      "url": "https://www.bitcoinsv.design/guide/rule/60535151ec/",
      "page": {
        "title": "Manual backup",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/manual-backup/"
      }
    },
    {
      "id": "5783e7ffbd",
      "kind": "do",
      "severity": "standard",
      "text": "Confirm a few words at a position the user must read, and follow it with a plain prompt about where the paper will live.",
      "url": "https://www.bitcoinsv.design/guide/rule/5783e7ffbd/",
      "page": {
        "title": "Manual backup",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/manual-backup/"
      }
    },
    {
      "id": "f260f13de8",
      "kind": "dont",
      "severity": "standard",
      "text": "Block the wallet behind a full twenty-four-word re-entry. People copy and paste to get past it, usually from the clipboard, which is the least safe place for them.",
      "url": "https://www.bitcoinsv.design/guide/rule/f260f13de8/",
      "page": {
        "title": "Manual backup",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/manual-backup/"
      }
    },
    {
      "id": "085357cf4e",
      "kind": "do",
      "severity": "standard",
      "text": "Offer a recovery check the user can run at any time, which confirms the words match without moving money.",
      "url": "https://www.bitcoinsv.design/guide/rule/085357cf4e/",
      "page": {
        "title": "Manual backup",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/manual-backup/"
      }
    },
    {
      "id": "e418176567",
      "kind": "do",
      "severity": "standard",
      "text": "Suggest two locations in different buildings, in plain terms: \"one at home, one somewhere else you can reach\".",
      "url": "https://www.bitcoinsv.design/guide/rule/e418176567/",
      "page": {
        "title": "Manual backup",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/manual-backup/"
      }
    },
    {
      "id": "fc8c81e131",
      "kind": "do",
      "severity": "standard",
      "text": "Show progress while an animated code is being scanned, as a proportion collected rather than a frame count. Users point a camera at a flickering screen for several seconds and need to know it is working.",
      "url": "https://www.bitcoinsv.design/guide/rule/fc8c81e131/",
      "page": {
        "title": "External signers",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/external-signers/"
      }
    },
    {
      "id": "dfd37ed6a6",
      "kind": "do",
      "severity": "standard",
      "text": "Prompt the user to compare the signer's screen with the computer's before approving, and say which one to believe if they differ.",
      "url": "https://www.bitcoinsv.design/guide/rule/dfd37ed6a6/",
      "page": {
        "title": "External signers",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/external-signers/"
      }
    },
    {
      "id": "8e497f735d",
      "kind": "do",
      "severity": "standard",
      "text": "Design the capability, and be honest in the product about what exists. \"Use a signing device\" is a promise; \"works with devices that support air-gapped BEEF signing\" is a fact the user can check.",
      "url": "https://www.bitcoinsv.design/guide/rule/8e497f735d/",
      "page": {
        "title": "External signers",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/external-signers/"
      }
    },
    {
      "id": "64efa91057",
      "kind": "dont",
      "severity": "standard",
      "text": "Build a savings or inheritance flow whose only safe path needs a device your users cannot obtain. Multi-key across phones and people is available today and is the better default until that changes.",
      "url": "https://www.bitcoinsv.design/guide/rule/64efa91057/",
      "page": {
        "title": "External signers",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/external-signers/"
      }
    },
    {
      "id": "663890b2a7",
      "kind": "do",
      "severity": "standard",
      "text": "Let the wallet work read-only while the signer is away. Balances, history and receiving should all function without it, so the device is only needed to spend.",
      "url": "https://www.bitcoinsv.design/guide/rule/663890b2a7/",
      "page": {
        "title": "External signers",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/external-signers/"
      }
    },
    {
      "id": "f915501fd0",
      "kind": "dont",
      "severity": "standard",
      "text": "Require the signer for receiving. Nothing needs signing to receive, and a wallet that asks for it has made the device a daily chore for no gain.",
      "url": "https://www.bitcoinsv.design/guide/rule/f915501fd0/",
      "page": {
        "title": "External signers",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/external-signers/"
      }
    },
    {
      "id": "1a6af3cd89",
      "kind": "do",
      "severity": "standard",
      "text": "Show whose signature is still outstanding, and give a way to nudge them. Most of the time a shared payment is waiting on a person, not on the network.",
      "url": "https://www.bitcoinsv.design/guide/rule/1a6af3cd89/",
      "page": {
        "title": "Multi-key",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/multi-key/"
      }
    },
    {
      "id": "aa6d776a46",
      "kind": "do",
      "severity": "standard",
      "text": "Walk the setup one key at a time, and say for each one where it is going and what losing it would mean.",
      "url": "https://www.bitcoinsv.design/guide/rule/aa6d776a46/",
      "page": {
        "title": "Multi-key",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/multi-key/"
      }
    },
    {
      "id": "9dbd190984",
      "kind": "do",
      "severity": "standard",
      "text": "Let an unfinished setup be saved and resumed. Gathering three devices or three people rarely happens in one sitting.",
      "url": "https://www.bitcoinsv.design/guide/rule/9dbd190984/",
      "page": {
        "title": "Multi-key",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/multi-key/"
      }
    },
    {
      "id": "973cc5b477",
      "kind": "dont",
      "severity": "standard",
      "text": "Finish setup without the user having restored from it once. An untested multi-key wallet is a wallet with more ways to fail than a single-key one.",
      "url": "https://www.bitcoinsv.design/guide/rule/973cc5b477/",
      "page": {
        "title": "Multi-key",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/multi-key/"
      }
    },
    {
      "id": "a4c57c41cd",
      "kind": "do",
      "severity": "standard",
      "text": "Show what is being signed in plain terms on every device that signs, and how many signatures are collected.",
      "url": "https://www.bitcoinsv.design/guide/rule/a4c57c41cd/",
      "page": {
        "title": "Multi-key",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/multi-key/"
      }
    },
    {
      "id": "47ec5ed38b",
      "kind": "dont",
      "severity": "standard",
      "text": "Say \"2-of-3 multisig\". Say \"Two of your three keys are needed to spend\", and name the keys the way the user named them.",
      "url": "https://www.bitcoinsv.design/guide/rule/47ec5ed38b/",
      "page": {
        "title": "Multi-key",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/multi-key/"
      }
    },
    {
      "id": "314d72ca3c",
      "kind": "do",
      "severity": "standard",
      "text": "Pick on the trust question, not the privacy one. If the parties need to be sure no one of them can ever reconstruct the whole key, that is bare multisig. If the goal is one person's key surviving a fire, shares are simpler and cheaper.",
      "url": "https://www.bitcoinsv.design/guide/rule/314d72ca3c/",
      "page": {
        "title": "Multi-key",
        "section": "How it works",
        "url": "https://www.bitcoinsv.design/guide/how-it-works/private-key-management/multi-key/"
      }
    },
    {
      "id": "306b5c235f",
      "kind": "do",
      "severity": "standard",
      "text": "Make the handle the thing a user shares. Put the address behind a \"Show address\" control for the cases that need one.",
      "url": "https://www.bitcoinsv.design/guide/rule/306b5c235f/",
      "page": {
        "title": "Address",
        "section": "Glossary",
        "url": "https://www.bitcoinsv.design/guide/glossary/address/"
      }
    },
    {
      "id": "34757909ec",
      "kind": "dont",
      "severity": "standard",
      "text": "Lead a receive screen with an address. It is the least usable identifier you have and it is almost never the one the payer needs.",
      "url": "https://www.bitcoinsv.design/guide/rule/34757909ec/",
      "page": {
        "title": "Address",
        "section": "Glossary",
        "url": "https://www.bitcoinsv.design/guide/glossary/address/"
      }
    },
    {
      "id": "a3c45dffa5",
      "kind": "dont",
      "severity": "standard",
      "text": "Show change as a transaction, a second recipient, or a separate line in a balance. It is the most common way to make a wallet look wrong when it is right.",
      "url": "https://www.bitcoinsv.design/guide/rule/a3c45dffa5/",
      "page": {
        "title": "Address",
        "section": "Glossary",
        "url": "https://www.bitcoinsv.design/guide/glossary/address/"
      }
    },
    {
      "id": "9239b8f3c7",
      "kind": "do",
      "severity": "standard",
      "text": "Use a monospace face whose characters are clearly distinguishable, such as Source Code Pro or Fira Mono. Base58 excludes 0, O, I and l for this reason, so do not fight it with an ambiguous font.",
      "url": "https://www.bitcoinsv.design/guide/rule/9239b8f3c7/",
      "page": {
        "title": "Address",
        "section": "Glossary",
        "url": "https://www.bitcoinsv.design/guide/glossary/address/"
      }
    },
    {
      "id": "1047e774e6",
      "kind": "do",
      "severity": "standard",
      "text": "Group it into chunks of four characters, and offer a large, expanded view. People compare in chunks and cannot compare a 34-character run.",
      "url": "https://www.bitcoinsv.design/guide/rule/1047e774e6/",
      "page": {
        "title": "Address",
        "section": "Glossary",
        "url": "https://www.bitcoinsv.design/guide/glossary/address/"
      }
    },
    {
      "id": "74a675d05c",
      "kind": "do",
      "severity": "standard",
      "text": "Derive a fresh output for every payment. The peer-to-peer flow does this without the user knowing, which is the right amount of knowing.",
      "url": "https://www.bitcoinsv.design/guide/rule/74a675d05c/",
      "page": {
        "title": "Address",
        "section": "Glossary",
        "url": "https://www.bitcoinsv.design/guide/glossary/address/"
      }
    },
    {
      "id": "94f346f87a",
      "kind": "do",
      "severity": "standard",
      "text": "Where a user deliberately publishes a fixed address, such as a donation page, say what it costs them in a sentence rather than preventing it.",
      "url": "https://www.bitcoinsv.design/guide/rule/94f346f87a/",
      "page": {
        "title": "Address",
        "section": "Glossary",
        "url": "https://www.bitcoinsv.design/guide/glossary/address/"
      }
    },
    {
      "id": "727998da79",
      "kind": "do",
      "severity": "standard",
      "text": "Decide which sense you mean before writing the screen. \"Create a wallet\" and \"Connect your wallet\" are different enough that a user who confuses them will do the wrong thing.",
      "url": "https://www.bitcoinsv.design/guide/rule/727998da79/",
      "page": {
        "title": "Wallet",
        "section": "Glossary",
        "url": "https://www.bitcoinsv.design/guide/glossary/wallet/"
      }
    },
    {
      "id": "7a04d94956",
      "kind": "do",
      "severity": "standard",
      "text": "Leave key derivation out of the interface. A user never needs the word \"derivation\"; they need to know that one backup covers everything.",
      "url": "https://www.bitcoinsv.design/guide/rule/7a04d94956/",
      "page": {
        "title": "Wallet",
        "section": "Glossary",
        "url": "https://www.bitcoinsv.design/guide/glossary/wallet/"
      }
    },
    {
      "id": "17ff8e86dc",
      "kind": "dont",
      "severity": "standard",
      "text": "Call this \"a BRC-100 wallet\". The number names a document, not a product. In an interface the string is Connect wallet.",
      "url": "https://www.bitcoinsv.design/guide/rule/17ff8e86dc/",
      "page": {
        "title": "Wallet",
        "section": "Glossary",
        "url": "https://www.bitcoinsv.design/guide/glossary/wallet/"
      }
    },
    {
      "id": "cb0ed92d71",
      "kind": "do",
      "severity": "standard",
      "text": "Say which one you are, in plain words, before the user has anything to lose. \"We cannot reset this for you\" is the sentence that matters, not the word \"non-custodial\".",
      "url": "https://www.bitcoinsv.design/guide/rule/cb0ed92d71/",
      "page": {
        "title": "Wallet",
        "section": "Glossary",
        "url": "https://www.bitcoinsv.design/guide/glossary/wallet/"
      }
    },
    {
      "id": "c010a8c23f",
      "kind": "dont",
      "severity": "standard",
      "text": "Use \"account\" for the thing a user signs into. If your product has both, one of them needs a different word.",
      "url": "https://www.bitcoinsv.design/guide/rule/c010a8c23f/",
      "page": {
        "title": "Wallet",
        "section": "Glossary",
        "url": "https://www.bitcoinsv.design/guide/glossary/wallet/"
      }
    },
    {
      "id": "614b81bf1b",
      "kind": "do",
      "severity": "standard",
      "text": "Read the proposal before you design against it. This guide tells you what a standard means for the screen; the proposal tells you what it actually requires, and the two are not the same document.",
      "url": "https://www.bitcoinsv.design/guide/rule/614b81bf1b/",
      "page": {
        "title": "Resources",
        "section": "Resources",
        "url": "https://www.bitcoinsv.design/guide/resources/"
      }
    },
    {
      "id": "68ea0645f2",
      "kind": "dont",
      "severity": "standard",
      "text": "Adopt a send or receive flow from another network's kit wholesale. Those flows assume a fee picker and an invoice, which a BSV flow does not need.",
      "url": "https://www.bitcoinsv.design/guide/rule/68ea0645f2/",
      "page": {
        "title": "Design files",
        "section": "Resources",
        "url": "https://www.bitcoinsv.design/guide/resources/design-files/"
      }
    },
    {
      "id": "bbcaf9fb64",
      "kind": "do",
      "severity": "standard",
      "text": "Publish the source, not only the export. A file somebody can duplicate is a contribution; a PNG is an illustration.",
      "url": "https://www.bitcoinsv.design/guide/rule/bbcaf9fb64/",
      "page": {
        "title": "Design files",
        "section": "Resources",
        "url": "https://www.bitcoinsv.design/guide/resources/design-files/"
      }
    },
    {
      "id": "7f04435f6d",
      "kind": "do",
      "severity": "standard",
      "text": "Say what the file assumes. A kit built for one product saves everyone time when its assumptions are written down rather than discovered.",
      "url": "https://www.bitcoinsv.design/guide/rule/7f04435f6d/",
      "page": {
        "title": "Design files",
        "section": "Resources",
        "url": "https://www.bitcoinsv.design/guide/resources/design-files/"
      }
    },
    {
      "id": "471386df9c",
      "kind": "do",
      "severity": "standard",
      "text": "Write the user's goal in a sentence before drawing anything. Most of these have a hidden second goal, and finding it is most of the work.",
      "url": "https://www.bitcoinsv.design/guide/rule/471386df9c/",
      "page": {
        "title": "Design challenges",
        "section": "Resources",
        "url": "https://www.bitcoinsv.design/guide/resources/design-challenges/"
      }
    },
    {
      "id": "1216118ee0",
      "kind": "do",
      "severity": "standard",
      "text": "Draw the failure path. In this field it is half the design, and in a four-hour exercise it is where the learning is.",
      "url": "https://www.bitcoinsv.design/guide/rule/1216118ee0/",
      "page": {
        "title": "Design challenges",
        "section": "Resources",
        "url": "https://www.bitcoinsv.design/guide/resources/design-challenges/"
      }
    },
    {
      "id": "0f0ee588b0",
      "kind": "do",
      "severity": "standard",
      "text": "Write down your assumptions and the trade-offs you took. The reasoning is more interesting than the screens and easier to argue with.",
      "url": "https://www.bitcoinsv.design/guide/rule/0f0ee588b0/",
      "page": {
        "title": "Design challenges",
        "section": "Resources",
        "url": "https://www.bitcoinsv.design/guide/resources/design-challenges/"
      }
    },
    {
      "id": "eac10116c1",
      "kind": "dont",
      "severity": "standard",
      "text": "Carry over a fee picker, a confirmation count or an expiring invoice without checking it applies to BSV.",
      "url": "https://www.bitcoinsv.design/guide/rule/eac10116c1/",
      "page": {
        "title": "Design challenges",
        "section": "Resources",
        "url": "https://www.bitcoinsv.design/guide/resources/design-challenges/"
      }
    },
    {
      "id": "4875bab85b",
      "kind": "do",
      "severity": "standard",
      "text": "Do them in low fidelity. The interesting decisions are about what to show and in what order, and a polished screen hides them.",
      "url": "https://www.bitcoinsv.design/guide/rule/4875bab85b/",
      "page": {
        "title": "Design challenges",
        "section": "Resources",
        "url": "https://www.bitcoinsv.design/guide/resources/design-challenges/"
      }
    },
    {
      "id": "0612225da4",
      "kind": "do",
      "severity": "standard",
      "text": "Write up what you made, including what did not work. See Case studies.",
      "url": "https://www.bitcoinsv.design/guide/rule/0612225da4/",
      "page": {
        "title": "Learning bootcamp",
        "section": "Resources",
        "url": "https://www.bitcoinsv.design/guide/resources/learning-bootcamp/"
      }
    },
    {
      "id": "e6f75be772",
      "kind": "do",
      "severity": "standard",
      "text": "Take one page of this guide that you now know is wrong or thin, and fix it. See Propose a change.",
      "url": "https://www.bitcoinsv.design/guide/rule/e6f75be772/",
      "page": {
        "title": "Learning bootcamp",
        "section": "Resources",
        "url": "https://www.bitcoinsv.design/guide/resources/learning-bootcamp/"
      }
    },
    {
      "id": "2fbb079000",
      "kind": "do",
      "severity": "standard",
      "text": "Do the challenge each week, even badly. Reading the guide teaches you what the rules are. The challenge is what teaches you why they exist.",
      "url": "https://www.bitcoinsv.design/guide/rule/2fbb079000/",
      "page": {
        "title": "Learning bootcamp",
        "section": "Resources",
        "url": "https://www.bitcoinsv.design/guide/resources/learning-bootcamp/"
      }
    },
    {
      "id": "6ba26d4599",
      "kind": "do",
      "severity": "standard",
      "text": "Building the app-side kit, even a small one, would be one of the more useful things anybody reading this could do. See Contribute.",
      "url": "https://www.bitcoinsv.design/guide/rule/6ba26d4599/",
      "page": {
        "title": "Code resources",
        "section": "Resources",
        "url": "https://www.bitcoinsv.design/guide/resources/code-resources/"
      }
    },
    {
      "id": "b66a93ac68",
      "kind": "do",
      "severity": "standard",
      "text": "Write about the thing that only half worked. A case study about a success is marketing; a case study about a correction is useful, and far rarer.",
      "url": "https://www.bitcoinsv.design/guide/rule/b66a93ac68/",
      "page": {
        "title": "Case studies",
        "section": "Case studies",
        "url": "https://www.bitcoinsv.design/guide/case-studies/"
      }
    },
    {
      "id": "de4d70e0b6",
      "kind": "do",
      "severity": "standard",
      "text": "Say what you are starting, in an issue or a draft pull request, before you write three thousand words. Two people editing the same page waste each other's work.",
      "url": "https://www.bitcoinsv.design/guide/rule/de4d70e0b6/",
      "page": {
        "title": "Propose a change",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/propose-a-change/"
      }
    },
    {
      "id": "5d9ad15379",
      "kind": "do",
      "severity": "standard",
      "text": "Update sources in the front matter with what you worked from. If the page carried a rewritenote, delete it and set status to rewritten.",
      "url": "https://www.bitcoinsv.design/guide/rule/5d9ad15379/",
      "page": {
        "title": "Propose a change",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/propose-a-change/"
      }
    },
    {
      "id": "0d40bbc0c6",
      "kind": "dont",
      "severity": "standard",
      "text": "Bundle a text change with a redesign of the page structure and a new set of images. Three separate pull requests get reviewed; one large one waits.",
      "url": "https://www.bitcoinsv.design/guide/rule/0d40bbc0c6/",
      "page": {
        "title": "Propose a change",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/propose-a-change/"
      }
    },
    {
      "id": "940b009484",
      "kind": "do",
      "severity": "standard",
      "text": "If this is your first time, fix a typo or review somebody else's change. The point of a first contribution is to walk the process once while the stakes are nothing.",
      "url": "https://www.bitcoinsv.design/guide/rule/940b009484/",
      "page": {
        "title": "Propose a change",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/propose-a-change/"
      }
    },
    {
      "id": "74f190d486",
      "kind": "do",
      "severity": "standard",
      "text": "Check a cited proposal number against the proposal. A sentence that names a standard reads as verified, which is exactly why a wrong one survives.",
      "url": "https://www.bitcoinsv.design/guide/rule/74f190d486/",
      "page": {
        "title": "Review",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/review/"
      }
    },
    {
      "id": "dc78a9b067",
      "kind": "do",
      "severity": "standard",
      "text": "Ask for a rule to be reworded only when the new wording is clearly better. Rewording gives the rule a new permanent link.",
      "url": "https://www.bitcoinsv.design/guide/rule/dc78a9b067/",
      "page": {
        "title": "Review",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/review/"
      }
    },
    {
      "id": "1a67f742f2",
      "kind": "do",
      "severity": "standard",
      "text": "Suggest the exact wording for a typo or a grammar fix. It costs you a keystroke and saves the author a round trip.",
      "url": "https://www.bitcoinsv.design/guide/rule/1a67f742f2/",
      "page": {
        "title": "Review",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/review/"
      }
    },
    {
      "id": "7dc0bf45ed",
      "kind": "do",
      "severity": "standard",
      "text": "Say which claim you checked and where you checked it. \"Verified against the proposal\" is worth more than \"looks good\".",
      "url": "https://www.bitcoinsv.design/guide/rule/7dc0bf45ed/",
      "page": {
        "title": "Review",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/review/"
      }
    },
    {
      "id": "38c795c74e",
      "kind": "dont",
      "severity": "standard",
      "text": "Request a change without saying why. A reason can be argued with, which is the point.",
      "url": "https://www.bitcoinsv.design/guide/rule/38c795c74e/",
      "page": {
        "title": "Review",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/review/"
      }
    },
    {
      "id": "e5fb06c94b",
      "kind": "dont",
      "severity": "standard",
      "text": "Hold a change for a style preference. If the page is accurate and clear, approve it and open an issue for the preference.",
      "url": "https://www.bitcoinsv.design/guide/rule/e5fb06c94b/",
      "page": {
        "title": "Review",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/review/"
      }
    },
    {
      "id": "b2e1f964dc",
      "kind": "do",
      "severity": "standard",
      "text": "Answer the page's question in its first two sentences, and link every term the page relies on rather than assuming the reader came from the page before.",
      "url": "https://www.bitcoinsv.design/guide/rule/b2e1f964dc/",
      "page": {
        "title": "Content guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/content-guidelines/"
      }
    },
    {
      "id": "e70bb16e1a",
      "kind": "dont",
      "severity": "standard",
      "text": "Open with a paragraph about how bitcoin is changing the world. Nobody reading a page about send screens needs it.",
      "url": "https://www.bitcoinsv.design/guide/rule/e70bb16e1a/",
      "page": {
        "title": "Content guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/content-guidelines/"
      }
    },
    {
      "id": "6ba1b27c69",
      "kind": "do",
      "severity": "standard",
      "text": "Start a section with the conclusion, in one sentence, and let the rest support it.",
      "url": "https://www.bitcoinsv.design/guide/rule/6ba1b27c69/",
      "page": {
        "title": "Content guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/content-guidelines/"
      }
    },
    {
      "id": "ff7e508b77",
      "kind": "do",
      "severity": "standard",
      "text": "Cut the sentence that restates the previous sentence.",
      "url": "https://www.bitcoinsv.design/guide/rule/ff7e508b77/",
      "page": {
        "title": "Content guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/content-guidelines/"
      }
    },
    {
      "id": "02205131eb",
      "kind": "do",
      "severity": "standard",
      "text": "Use ordinary words. \"Use\", not \"utilise\". \"About\", not \"approximately\".",
      "url": "https://www.bitcoinsv.design/guide/rule/02205131eb/",
      "page": {
        "title": "Content guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/content-guidelines/"
      }
    },
    {
      "id": "bb17939ba1",
      "kind": "dont",
      "severity": "standard",
      "text": "Pad a thin page to look thorough. A four-hundred-word page that answers the question beats two thousand that circle it.",
      "url": "https://www.bitcoinsv.design/guide/rule/bb17939ba1/",
      "page": {
        "title": "Content guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/content-guidelines/"
      }
    },
    {
      "id": "077f2198b5",
      "kind": "do",
      "severity": "standard",
      "text": "Write a rule that can be followed or broken: \"Show the recipient larger than the amount on a review screen.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/077f2198b5/",
      "page": {
        "title": "Content guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/content-guidelines/"
      }
    },
    {
      "id": "7627889ca9",
      "kind": "dont",
      "severity": "standard",
      "text": "Write a rule that cannot be checked: \"Consider the user's needs when designing.\"",
      "url": "https://www.bitcoinsv.design/guide/rule/7627889ca9/",
      "page": {
        "title": "Content guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/content-guidelines/"
      }
    },
    {
      "id": "31b5dfe4d2",
      "kind": "do",
      "severity": "standard",
      "text": "Say which. \"The standard requires\", \"most wallets do\", and \"we suggest\" are three different claims and the reader can tell them apart.",
      "url": "https://www.bitcoinsv.design/guide/rule/31b5dfe4d2/",
      "page": {
        "title": "Content guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/content-guidelines/"
      }
    },
    {
      "id": "e14547e7bd",
      "kind": "do",
      "severity": "standard",
      "text": "List what you worked from in the page's sources: front matter.",
      "url": "https://www.bitcoinsv.design/guide/rule/e14547e7bd/",
      "page": {
        "title": "Content guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/content-guidelines/"
      }
    },
    {
      "id": "af031e7fa6",
      "kind": "do",
      "severity": "standard",
      "text": "Write satoshi amounts with grouped digits and the unit: \"12,500 sats\", not \"12500 sats\" or \"0.000125 BSV\".",
      "url": "https://www.bitcoinsv.design/guide/rule/af031e7fa6/",
      "page": {
        "title": "Content guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/content-guidelines/"
      }
    },
    {
      "id": "2022ef7f3e",
      "kind": "do",
      "severity": "standard",
      "text": "In interface copy, name the network \"Bitcoin SV\" or \"BSV\". In prose, \"bitcoin\" alone means BSV.",
      "url": "https://www.bitcoinsv.design/guide/rule/2022ef7f3e/",
      "page": {
        "title": "Content guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/content-guidelines/"
      }
    },
    {
      "id": "8f73ac21f8",
      "kind": "do",
      "severity": "standard",
      "text": "Reuse the guide's cast and handle format. Do not invent new names for a single example.",
      "url": "https://www.bitcoinsv.design/guide/rule/8f73ac21f8/",
      "page": {
        "title": "Content guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/content-guidelines/"
      }
    },
    {
      "id": "e192b7406c",
      "kind": "dont",
      "severity": "standard",
      "text": "Make the reader look up a number to learn a word you could have told them.",
      "url": "https://www.bitcoinsv.design/guide/rule/e192b7406c/",
      "page": {
        "title": "Content guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/content-guidelines/"
      }
    },
    {
      "id": "0ec4fcce17",
      "kind": "dont",
      "severity": "standard",
      "text": "Use an em dash. The build rejects them. Use a comma, a full stop, or brackets, and the sentence usually improves.",
      "url": "https://www.bitcoinsv.design/guide/rule/0ec4fcce17/",
      "page": {
        "title": "Content guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/content-guidelines/"
      }
    },
    {
      "id": "5d2ceef985",
      "kind": "do",
      "severity": "standard",
      "text": "Use sentence case in headings. \"Backing up a wallet\", not \"Backing Up A Wallet\".",
      "url": "https://www.bitcoinsv.design/guide/rule/5d2ceef985/",
      "page": {
        "title": "Content guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/content-guidelines/"
      }
    },
    {
      "id": "5fb5094bca",
      "kind": "do",
      "severity": "standard",
      "text": "Put a link on the words that describe the destination, never on \"here\" or \"this link\".",
      "url": "https://www.bitcoinsv.design/guide/rule/5fb5094bca/",
      "page": {
        "title": "Content guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/content-guidelines/"
      }
    },
    {
      "id": "deb844c185",
      "kind": "do",
      "severity": "standard",
      "text": "Write a misconception panel in three parts: what the reader probably believes, why it is false on BSV, and what goes wrong silently if they act on it.",
      "url": "https://www.bitcoinsv.design/guide/rule/deb844c185/",
      "page": {
        "title": "Content guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/content-guidelines/"
      }
    },
    {
      "id": "947c532939",
      "kind": "dont",
      "severity": "standard",
      "text": "Write a sentence whose job is to score a point. It costs the reader's trust and it will be edited out.",
      "url": "https://www.bitcoinsv.design/guide/rule/947c532939/",
      "page": {
        "title": "Content guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/content-guidelines/"
      }
    },
    {
      "id": "428df3962b",
      "kind": "do",
      "severity": "standard",
      "text": "Draw the thing the text is about. A diagram of the connection boundary, a screen with the recipient shown large, two layouts side by side with one wrong.",
      "url": "https://www.bitcoinsv.design/guide/rule/428df3962b/",
      "page": {
        "title": "Illustration guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/illustration-guidelines/"
      }
    },
    {
      "id": "fb56a5b5a3",
      "kind": "do",
      "severity": "standard",
      "text": "Make the comparison explicit where the point is a comparison. Good and bad beside each other, labelled, beats two separate figures a page apart.",
      "url": "https://www.bitcoinsv.design/guide/rule/fb56a5b5a3/",
      "page": {
        "title": "Illustration guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/illustration-guidelines/"
      }
    },
    {
      "id": "11be69337f",
      "kind": "dont",
      "severity": "standard",
      "text": "Decorate. An image that carries no information costs the reader a scroll and costs everybody the download.",
      "url": "https://www.bitcoinsv.design/guide/rule/11be69337f/",
      "page": {
        "title": "Illustration guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/illustration-guidelines/"
      }
    },
    {
      "id": "77db807833",
      "kind": "do",
      "severity": "standard",
      "text": "Share the source: the editable file in the repository, or a public link to it (Figma, Penpot or similar). Put the link in the pull request.",
      "url": "https://www.bitcoinsv.design/guide/rule/77db807833/",
      "page": {
        "title": "Illustration guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/illustration-guidelines/"
      }
    },
    {
      "id": "73018bd680",
      "kind": "do",
      "severity": "standard",
      "text": "Use lowercase, hyphens and no spaces: transaction-review.png. Short and descriptive.",
      "url": "https://www.bitcoinsv.design/guide/rule/73018bd680/",
      "page": {
        "title": "Illustration guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/illustration-guidelines/"
      }
    },
    {
      "id": "d4ed235b2b",
      "kind": "do",
      "severity": "standard",
      "text": "Export at 2x and name it my-diagram@2x.png. The import prefers the 2x original and derives everything else from it.",
      "url": "https://www.bitcoinsv.design/guide/rule/d4ed235b2b/",
      "page": {
        "title": "Illustration guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/illustration-guidelines/"
      }
    },
    {
      "id": "480bd9de48",
      "kind": "do",
      "severity": "standard",
      "text": "Use PNG for flat colour and interface work, JPG for photographic or heavily textured images, SVG for true vector diagrams, GIF only for a short animation.",
      "url": "https://www.bitcoinsv.design/guide/rule/480bd9de48/",
      "page": {
        "title": "Illustration guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/illustration-guidelines/"
      }
    },
    {
      "id": "08a8028282",
      "kind": "dont",
      "severity": "standard",
      "text": "Commit a 4000px export of a diagram that is read at 760px. The import downscales above 2000px, but the source file still has to be reviewed and stored.",
      "url": "https://www.bitcoinsv.design/guide/rule/08a8028282/",
      "page": {
        "title": "Illustration guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/illustration-guidelines/"
      }
    },
    {
      "id": "b7ed14d86e",
      "kind": "do",
      "severity": "standard",
      "text": "Redraw for portrait where the landscape version would become unreadable, rather than letting it scale down.",
      "url": "https://www.bitcoinsv.design/guide/rule/b7ed14d86e/",
      "page": {
        "title": "Illustration guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/illustration-guidelines/"
      }
    },
    {
      "id": "98ca65d405",
      "kind": "do",
      "severity": "standard",
      "text": "Check your image on a phone-width window before opening the pull request. A diagram that shrinks out of legibility is easy to miss on a desktop screen.",
      "url": "https://www.bitcoinsv.design/guide/rule/98ca65d405/",
      "page": {
        "title": "Illustration guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/illustration-guidelines/"
      }
    },
    {
      "id": "4e099ee5f9",
      "kind": "do",
      "severity": "standard",
      "text": "Write alt text that says what the image shows, because a screen reader user gets only that. \"A send screen with the recipient set larger than the amount\", not \"screenshot\".",
      "url": "https://www.bitcoinsv.design/guide/rule/4e099ee5f9/",
      "page": {
        "title": "Illustration guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/illustration-guidelines/"
      }
    },
    {
      "id": "494cb5181b",
      "kind": "do",
      "severity": "standard",
      "text": "Put a caption underneath in italics when the image needs one. It renders as a caption, not as emphasis.",
      "url": "https://www.bitcoinsv.design/guide/rule/494cb5181b/",
      "page": {
        "title": "Illustration guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/illustration-guidelines/"
      }
    },
    {
      "id": "9fd7950a81",
      "kind": "do",
      "severity": "standard",
      "text": "Open any page in How it works or one of the newer reference designs and look for a dashed box. If the prompt reads like something you could draw, you have found your first contribution.",
      "url": "https://www.bitcoinsv.design/guide/rule/9fd7950a81/",
      "page": {
        "title": "Illustration guidelines",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/illustration-guidelines/"
      }
    },
    {
      "id": "93cfcbee11",
      "kind": "dont",
      "severity": "standard",
      "text": "Use # inside a page. The title is already the h1 and a second one breaks the outline.",
      "url": "https://www.bitcoinsv.design/guide/rule/93cfcbee11/",
      "page": {
        "title": "Formatting",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/formatting/"
      }
    },
    {
      "id": "148d61959d",
      "kind": "do",
      "severity": "standard",
      "text": "Put one rule in each callout. Every line inside a Do or a Don't becomes its own checklist item.",
      "url": "https://www.bitcoinsv.design/guide/rule/148d61959d/",
      "page": {
        "title": "Formatting",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/formatting/"
      }
    },
    {
      "id": "476fdfbb02",
      "kind": "dont",
      "severity": "standard",
      "text": "Put a rule in a fact panel or a tip. Only Do, Don't and Recommendation reach the checklist.",
      "url": "https://www.bitcoinsv.design/guide/rule/476fdfbb02/",
      "page": {
        "title": "Formatting",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/formatting/"
      }
    },
    {
      "id": "151a1d10db",
      "kind": "do",
      "severity": "standard",
      "text": "Write each callout so it stands on its own. In the checklist it appears without the paragraph above it.",
      "url": "https://www.bitcoinsv.design/guide/rule/151a1d10db/",
      "page": {
        "title": "Formatting",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/formatting/"
      }
    },
    {
      "id": "119c971c16",
      "kind": "do",
      "severity": "standard",
      "text": "Use an open question rather than a confident rule when the guide is guessing. A rule that turns out wrong costs more trust than a question left open.",
      "url": "https://www.bitcoinsv.design/guide/rule/119c971c16/",
      "page": {
        "title": "Formatting",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/formatting/"
      }
    },
    {
      "id": "7222152636",
      "kind": "dont",
      "severity": "standard",
      "text": "Use a table for a list with one column of content. It reads worse and scrolls worse.",
      "url": "https://www.bitcoinsv.design/guide/rule/7222152636/",
      "page": {
        "title": "Formatting",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/formatting/"
      }
    },
    {
      "id": "510dfa0262",
      "kind": "do",
      "severity": "standard",
      "text": "Keep a recommendation to one or two sentences, so it reads whole in the checklist.",
      "url": "https://www.bitcoinsv.design/guide/rule/510dfa0262/",
      "page": {
        "title": "Formatting",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/formatting/"
      }
    },
    {
      "id": "0e8b311d5e",
      "kind": "do",
      "severity": "standard",
      "text": "Run it before you open the pull request. It is the same check that runs there, and it takes seconds.",
      "url": "https://www.bitcoinsv.design/guide/rule/0e8b311d5e/",
      "page": {
        "title": "Formatting",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/formatting/"
      }
    },
    {
      "id": "9c6e49bddb",
      "kind": "do",
      "severity": "standard",
      "text": "Use the caption to make the point, not to name the picture. \"Here the recipient is larger than the amount\" beats \"Send screen\".",
      "url": "https://www.bitcoinsv.design/guide/rule/9c6e49bddb/",
      "page": {
        "title": "Media",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/formatting/media/"
      }
    },
    {
      "id": "9b75d7d394",
      "kind": "dont",
      "severity": "standard",
      "text": "Put two images meant to be compared in separate paragraphs. A reader on a phone sees one, scrolls, and sees the other with the comparison lost.",
      "url": "https://www.bitcoinsv.design/guide/rule/9b75d7d394/",
      "page": {
        "title": "Media",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/formatting/media/"
      }
    },
    {
      "id": "9a45c593f4",
      "kind": "do",
      "severity": "standard",
      "text": "Provide the same information in the surrounding text. An animation is unavailable to anyone who has asked their system for reduced motion, and unreadable to anyone who cannot watch it twice.",
      "url": "https://www.bitcoinsv.design/guide/rule/9a45c593f4/",
      "page": {
        "title": "Media",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/formatting/media/"
      }
    },
    {
      "id": "f08326a46e",
      "kind": "dont",
      "severity": "standard",
      "text": "Use an animation where a labelled sequence of stills would do. Stills can be read at the reader's pace, printed, and quoted.",
      "url": "https://www.bitcoinsv.design/guide/rule/f08326a46e/",
      "page": {
        "title": "Media",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/formatting/media/"
      }
    },
    {
      "id": "02d3368973",
      "kind": "do",
      "severity": "standard",
      "text": "Link out to the prototype or the video, and put a still of it on the page with a caption saying what the reader will see.",
      "url": "https://www.bitcoinsv.design/guide/rule/02d3368973/",
      "page": {
        "title": "Media",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/formatting/media/"
      }
    },
    {
      "id": "8ab61a55a5",
      "kind": "do",
      "severity": "standard",
      "text": "Write about one problem. A case study that covers a whole product covers nothing.",
      "url": "https://www.bitcoinsv.design/guide/rule/8ab61a55a5/",
      "page": {
        "title": "Case studies",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/case-studies/"
      }
    },
    {
      "id": "e79798f038",
      "kind": "do",
      "severity": "standard",
      "text": "Include what did not work. The failed version is the half that teaches something, and it is the half everyone leaves out.",
      "url": "https://www.bitcoinsv.design/guide/rule/e79798f038/",
      "page": {
        "title": "Case studies",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/case-studies/"
      }
    },
    {
      "id": "c2388fca5a",
      "kind": "do",
      "severity": "standard",
      "text": "Put numbers in where you have them. Completion rate, support volume, how many people got stuck at which step.",
      "url": "https://www.bitcoinsv.design/guide/rule/c2388fca5a/",
      "page": {
        "title": "Case studies",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/case-studies/"
      }
    },
    {
      "id": "f62bc37313",
      "kind": "dont",
      "severity": "standard",
      "text": "Write a launch announcement. If the piece has no moment where you were wrong, it is marketing.",
      "url": "https://www.bitcoinsv.design/guide/rule/f62bc37313/",
      "page": {
        "title": "Case studies",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/case-studies/"
      }
    },
    {
      "id": "85b16d9ce1",
      "kind": "do",
      "severity": "standard",
      "text": "Do not wait until the work is finished or the result is good. A case study about a thing that half worked is more useful than one about a success, and far more rare.",
      "url": "https://www.bitcoinsv.design/guide/rule/85b16d9ce1/",
      "page": {
        "title": "Case studies",
        "section": "Contribute",
        "url": "https://www.bitcoinsv.design/guide/contribute/case-studies/"
      }
    }
  ]
}
