{
    "what": "The vocabularies a finding is indexed by, besides its product, area and principle. A finding has one or more problems, one visibility and one recommendation. The gate fails on a value that is not here, and on a value here that no finding uses, so each list grows from evidence.",
    "problems": [
        {
            "id": "uninformed-decision",
            "label": "Uninformed decision",
            "what": "The reader is asked to decide without what they need to judge it: what it does, what it touches, what could go wrong"
        },
        {
            "id": "missing-feedback",
            "label": "Missing feedback",
            "what": "No sign of what the system is doing, so the reader cannot tell progress from failure"
        },
        {
            "id": "unexpected-movement",
            "label": "Unexpected movement",
            "what": "Part of the interface moves when the reader did not move it"
        },
        {
            "id": "focus-hijack",
            "label": "Focus hijack",
            "what": "Focus or input goes somewhere the reader did not send it"
        },
        {
            "id": "unpredictable-control",
            "label": "Unpredictable control",
            "what": "The result of a gesture depends on something the reader cannot see or control, such as its speed, so the state they want cannot be reached on purpose"
        },
        {
            "id": "lost-screen-space",
            "label": "Lost screen space",
            "what": "Chrome takes screen that the content needed"
        },
        {
            "id": "wrong-culprit",
            "label": "Wrong culprit",
            "what": "The reader blames the wrong party: the page for the browser, the site for the platform"
        },
        {
            "id": "buried-content",
            "label": "Buried content",
            "what": "What the reader came for is pushed down or out of view"
        },
        {
            "id": "overload",
            "label": "Overload",
            "what": "Too much at once, so nothing is chosen for the reader"
        },
        {
            "id": "builder-chrome",
            "label": "Builder chrome",
            "what": "Things for the author, an agent or the build, shown to readers"
        },
        {
            "id": "missing-signal",
            "label": "Missing signal",
            "what": "The reader lacks what they need to decide: length, format, who wrote it, whether it is real"
        },
        {
            "id": "missing-way-in",
            "label": "Missing way in",
            "what": "A page or path the reader needs does not exist"
        },
        {
            "id": "dead-end",
            "label": "Dead end",
            "what": "Something that looks like a way in goes nowhere"
        },
        {
            "id": "unshareable-view",
            "label": "Unshareable view",
            "what": "A view the reader can see but cannot link to"
        },
        {
            "id": "unlabelled",
            "label": "Unlabelled",
            "what": "A number, value or control with no label"
        },
        {
            "id": "alarming-wording",
            "label": "Alarming wording",
            "what": "Words that read as a threat, a debt or a trick when they describe something benign"
        },
        {
            "id": "silent-change",
            "label": "Silent change",
            "what": "State changes without telling the reader"
        },
        {
            "id": "preselected-input",
            "label": "Preselected input",
            "what": "An answer is chosen before the reader chooses"
        },
        {
            "id": "unconsented-state",
            "label": "Unconsented state",
            "what": "Something is kept or added because the reader opened something"
        },
        {
            "id": "missing-channel",
            "label": "Missing channel",
            "what": "No way for the reader to reach a person"
        },
        {
            "id": "inconsistent-facts",
            "label": "Inconsistent facts",
            "what": "Two places disagree about the same fact"
        },
        {
            "id": "stale-claim",
            "label": "Stale claim",
            "what": "A statement about the present that is no longer true"
        },
        {
            "id": "hidden-until-script",
            "label": "Hidden until script",
            "what": "Content appears only after scripts or prior state"
        },
        {
            "id": "host-trap",
            "label": "Host trap",
            "what": "The platform behaves unlike a normal page, and the difference is not visible"
        },
        {
            "id": "data-loss",
            "label": "Data loss",
            "what": "Something the reader made or kept is lost or cut"
        },
        {
            "id": "layout-overflow",
            "label": "Layout overflow",
            "what": "Content wider or taller than the screen it is on"
        },
        {
            "id": "untested-path",
            "label": "Untested path",
            "what": "A path shown to readers that nobody has seen work"
        }
    ],
    "visibility": [
        {
            "id": "obvious",
            "label": "Obvious",
            "what": "Every reader sees it, every time they reach that point"
        },
        {
            "id": "intermittent",
            "label": "Intermittent",
            "what": "Some readers, some of the time: depends on a gesture, a device or a state, and is hard to reproduce on demand"
        },
        {
            "id": "subtle",
            "label": "Subtle",
            "what": "Felt more than seen: it costs attention or trust, but is not noticed as a bug"
        },
        {
            "id": "silent",
            "label": "Silent",
            "what": "No symptom on screen: found only by measuring, or by its consequences"
        }
    ],
    "recommendations": [
        {
            "id": "explain-the-decision",
            "label": "Explain the decision",
            "what": "Before asking, say in plain words what will happen, what it touches, whether it can be undone and why it is being asked, with the raw detail one tap away"
        },
        {
            "id": "confirm-or-undo",
            "label": "Confirm or undo",
            "what": "A destructive action either asks first or can be undone, and the safe choice is the easy one"
        },
        {
            "id": "show-the-state",
            "label": "Show the state",
            "what": "Always show what the system is doing (listening, working, paused, failed) and keep what was captured until it is safely delivered"
        },
        {
            "id": "show-what-changed",
            "label": "Show what changed",
            "what": "When the system rewrites what the reader made, mark it, and let them see and undo the change"
        },
        {
            "id": "keep-the-ui-still",
            "label": "Keep the UI still",
            "what": "Nothing moves, appears or takes focus unless the reader asked for it; chrome that hides stays hidden until a deliberate gesture"
        },
        {
            "id": "make-it-predictable",
            "label": "Make it predictable",
            "what": "The same gesture always gives the same result, and the reader can set the state directly instead of coaxing it"
        },
        {
            "id": "cut-to-the-essential",
            "label": "Cut to the essential",
            "what": "Remove or move down everything that is not the lead, the doors and the next step"
        },
        {
            "id": "write-for-a-stranger",
            "label": "Write for a stranger",
            "what": "Rewrite the words for someone arriving for the first time"
        },
        {
            "id": "show-it-up-front",
            "label": "Show it up front",
            "what": "Put the signal the reader decides by (length, author, short version, real numbers) where they look first"
        },
        {
            "id": "say-what-it-is",
            "label": "Say what it is",
            "what": "Label it, in the reader's terms, at the moment it matters"
        },
        {
            "id": "start-empty",
            "label": "Start empty",
            "what": "Inputs start unselected; record only what the reader did"
        },
        {
            "id": "ask-first",
            "label": "Ask first",
            "what": "Make keeping, adding or following a tap the reader makes"
        },
        {
            "id": "make-it-a-link",
            "label": "Make it a link",
            "what": "Give the view, filter or label an address, and make it go there"
        },
        {
            "id": "build-the-way-in",
            "label": "Build the way in",
            "what": "Create the missing page or path: tag pages, series, start here, a branded 404"
        },
        {
            "id": "open-a-channel",
            "label": "Open a channel",
            "what": "Send it to a person by default, with consent, and give the reader a receipt"
        },
        {
            "id": "generate-from-one-source",
            "label": "Generate from one source",
            "what": "Publish once and generate every copy, count and label from one manifest"
        },
        {
            "id": "check-at-build",
            "label": "Check it at build",
            "what": "Make the release fail when it happens again"
        },
        {
            "id": "move-to-the-workshop",
            "label": "Move it to the workshop",
            "what": "Take builder things off reader pages, one link away"
        },
        {
            "id": "render-on-first-load",
            "label": "Render on the first load",
            "what": "Show the content in the HTML, with no scripts and no prior visit needed"
        },
        {
            "id": "date-the-claim",
            "label": "Date the claim",
            "what": "Generate or date every statement about now, and mark fixes with their version"
        },
        {
            "id": "design-for-the-host",
            "label": "Design for the host",
            "what": "Use the host's own mechanisms (route variable, sg.state, vault snapshot) instead of the browser's defaults"
        },
        {
            "id": "test-where-readers-are",
            "label": "Test where readers are",
            "what": "Run it on the device, browser and host readers actually use before showing it"
        }
    ]
}
