{
  "$schema": "https://emote.dev/schemas/patterns/v1",
  "version": "1.0",
  "description": "Emote canonical pattern manifests. One pattern per trust moment. These are behavioral contracts — not recommendations. Components referencing these patterns inherit the obligations defined here.",
  "source": "emote.dev/patterns",
  "governance": "Declare the pattern_id, apply the full token_set, identify the safe_failure_mode. This declaration is the audit mechanism.",

  "patterns": [

    {
      "pattern_id": "P01_expectation_setting",
      "name": "Expectation Setting",
      "trust_moment": "Before meaning",
      "position_in_arc": 1,
      "tagline": "Before the system acts, it tells the truth about what's about to happen.",
      "promise": "The system orients the human before momentum begins. It prevents surprise by stating what will happen, how long it may take, what the system will do, and what remains in the human's control.",
      "objectives": [
        "Reduce anxiety caused by uncertainty, hidden steps, or unclear effort",
        "Prevent misalignment by naming the interaction shape up front",
        "Make uncertainty explicit without reassurance theater"
      ],
      "apply_when": [
        "A flow has multiple steps or a delayed outcome",
        "The system will act in the background or on the user's behalf",
        "Stakes are high or outcomes are probabilistic"
      ],
      "system_must": [
        "Provide an orientation statement before multi-step, delayed, or high-stakes actions",
        "State time, steps, or checkpoints when those expectations matter",
        "Name agency boundaries — what the system will do vs. what the human decides",
        "Disclose uncertainty when outcomes are probabilistic or dependent on external factors"
      ],
      "system_must_not": [
        "Begin a consequential flow without orienting the user",
        "Use reassuring language that overstates certainty",
        "Hide steps, costs, or system actions without warning"
      ],
      "token_set": {
        "primary": [
          "behavior.set_expectations_early",
          "behavior.state_time_and_steps",
          "behavior.clarify_agency_boundaries",
          "behavior.disclose_uncertainty_plainly"
        ],
        "secondary": [
          "behavior.reduce_cognitive_load"
        ]
      },
      "safe_failure_mode": "If time, steps, or outcomes cannot be reliably estimated, say so plainly. Offer the closest safe bounds. Invite the user to choose how to proceed.",
      "tone_and_stance": {
        "tone": "Honest, calm, matter-of-fact",
        "stance": "Orientation comes before action. No reassurance theater."
      },
      "ui_expressions": [
        "Progress indicators with step counts",
        "Pre-flight summary panels",
        "Onboarding overlays with capability disclosure",
        "Skeleton loaders with descriptive labels",
        "Async action banners with status and estimated time"
      ],
      "signal": "A flow is about to begin, expand, or continue beyond a single step.",
      "interpretation": "Without orientation, the human may misread effort, stakes, or system agency.",
      "response": "State what will happen, time/steps, what the system will do, and what the human controls."
    },

    {
      "pattern_id": "P02_ambiguity_detection",
      "name": "Ambiguity Detection",
      "trust_moment": "Meaning breaks",
      "position_in_arc": 2,
      "tagline": "When intent is unclear, the system pauses, clarifies, and avoids guessing.",
      "promise": "The system never takes action when it does not understand what the human is trying to do. In this trust moment, it enforces restraint: it pauses, clarifies, and avoids guessing.",
      "objectives": [
        "Prevent unsafe assumptions and irreversible actions under uncertainty",
        "Make uncertainty visible in plain language",
        "Reduce cognitive load with minimal clarifying questions"
      ],
      "apply_when": [
        "User intent is vague, partial, or conflicted",
        "Multiple plausible actions exist",
        "The wrong action would be costly or difficult to undo"
      ],
      "system_must": [
        "Not guess — ask at least one clarifying question before acting when intent is unclear",
        "Delay irreversible actions until intent is confirmed",
        "Make uncertainty visible in plain language",
        "Offer a focused choice, not an open-ended question when possible"
      ],
      "system_must_not": [
        "Default to the most convenient or most recent action",
        "Proceed on the assumption that silence equals consent",
        "Ask multiple clarifying questions at once",
        "Use filler phrases like 'I'll take care of it' when scope is unclear"
      ],
      "token_set": {
        "primary": [
          "behavior.pause_when_uncertain",
          "behavior.clarify_before_action"
        ],
        "secondary": [
          "behavior.reduce_cognitive_load",
          "behavior.name_risk_transparently"
        ]
      },
      "safe_failure_mode": "If confidence stays low or required capabilities are not available, stop and route to safe guidance or human support. Do not act.",
      "tone_and_stance": {
        "tone": "Calm, curious, non-interrogating",
        "stance": "Restraint before action. Uncertainty is a signal to pause, not accelerate."
      },
      "ui_expressions": [
        "Inline disambiguation prompts",
        "Clarification dialogs with constrained options",
        "'Did you mean…' patterns",
        "Intent confirmation before bulk actions",
        "Ambiguity banners before irreversible steps"
      ],
      "signal": "User intent is unclear or the system detects multiple plausible interpretations.",
      "interpretation": "This is genuine ambiguity, not recoverable vagueness. Acting would be unsafe.",
      "response": "Pause. Surface the ambiguity. Ask one focused clarifying question."
    },

    {
      "pattern_id": "P03_interpretive_support",
      "name": "Interpretive Support",
      "trust_moment": "Meaning restored",
      "position_in_arc": 3,
      "tagline": "The system clarifies options and context without steering outcomes.",
      "promise": "The system helps the human understand their situation, options, and risks — without nudging them toward a system-preferred outcome. It restores shared meaning and reduces what the user must hold in mind.",
      "objectives": [
        "Surface options and context without steering",
        "Name risks in plain language paired with agency",
        "Reduce cognitive load while preserving autonomy"
      ],
      "apply_when": [
        "The human needs context or options to make a confident decision",
        "The system has information that could help but could also unduly influence",
        "Multiple valid paths exist and the right choice depends on user circumstances"
      ],
      "system_must": [
        "Clarify options and context without pressure",
        "Surface a lower-risk alternative when one exists",
        "Name risks in plain language — not as warnings designed to discourage",
        "Reduce what the user must hold in mind to decide safely"
      ],
      "system_must_not": [
        "Frame options to steer toward a system-preferred outcome",
        "Bury the lower-risk alternative",
        "Use urgency or scarcity framing to push a decision",
        "Withhold information that would help the user choose differently"
      ],
      "token_set": {
        "primary": [
          "behavior.reduce_cognitive_load",
          "behavior.offer_lower_risk_alternative",
          "behavior.name_risk_transparently"
        ],
        "secondary": [
          "behavior.disclose_uncertainty_plainly"
        ]
      },
      "safe_failure_mode": "If the system cannot clarify without steering, surface the options neutrally and invite the user to consult additional resources or a human.",
      "tone_and_stance": {
        "tone": "Neutral, helpful, non-directive",
        "stance": "The system informs. The human decides. Agency is never compromised by framing."
      },
      "ui_expressions": [
        "Option comparison panels with neutral framing",
        "Progressive disclosure with risk labels",
        "Contextual help that names consequences without pressure",
        "Alternatives surfaced alongside default recommendations",
        "Information panels that support decision without replacing it"
      ],
      "signal": "The human needs context to decide, but the system must not substitute its judgment.",
      "interpretation": "Providing information is not the same as respecting autonomy. Framing matters.",
      "response": "Present options neutrally. Name risks. Surface alternatives. Let the human choose."
    },

    {
      "pattern_id": "P04_consent_confirmation",
      "name": "Consent Confirmation",
      "trust_moment": "Agency check",
      "position_in_arc": 4,
      "tagline": "Before crossing a consequential boundary, the system slows down and confirms.",
      "promise": "The system never performs a high-impact or hard-to-undo action without explicit, informed consent from the human.",
      "objectives": [
        "Ensure autonomy — the human always has the final word on consequential actions",
        "Prevent momentum bias from replacing deliberate consent",
        "Make consequences visible and reversible options explicit"
      ],
      "apply_when": [
        "The action affects identity, money, safety, or long-lived data",
        "The action exposes or shares sensitive information",
        "The user appears upset, rushed, or emotionally charged when requesting change"
      ],
      "system_must": [
        "Restate the action and its consequences in plain language",
        "Clarify what can and cannot be undone afterward",
        "Offer a lower-risk alternative when available",
        "Ask for an explicit yes/no or a clear choice before proceeding",
        "Never treat a single click or vague request as permanent consent"
      ],
      "system_must_not": [
        "Treat a single click or vague request as permanent consent",
        "Bury critical consequences in dense or hidden text",
        "Proceed while the user seems confused about the impact",
        "Use pre-selected affirmative defaults for irreversible actions",
        "Use momentum bias framing: 'you've already started, just confirm'"
      ],
      "token_set": {
        "primary": [
          "behavior.verify_consent",
          "behavior.summarize_before_confirmation",
          "behavior.delay_irreversible_actions"
        ],
        "secondary": [
          "behavior.clarify_agency_boundaries",
          "behavior.name_risk_transparently",
          "behavior.offer_lower_risk_alternative"
        ]
      },
      "safe_failure_mode": "If consent cannot be obtained (confusion, missing scope, policy limits), do not act. Offer safer options or route to human support.",
      "tone_and_stance": {
        "tone": "Calm, respectful, non-coercive",
        "stance": "Protect autonomy. Favor reversible options. Consent is never assumed."
      },
      "ui_expressions": [
        "Confirmation modals with consequence summary",
        "Destructive action dialogs requiring typed confirmation",
        "Permission request sheets with plain-language description",
        "Consent checkboxes that cannot be pre-checked",
        "Post-action undo affordances surfaced prominently",
        "Staged confirmation for high-stakes multi-step actions"
      ],
      "signal": "A request that affects identity, money, safety, or long-lived data.",
      "interpretation": "This is a consent boundary, not a routine command.",
      "response": "Summarize action and consequences. Offer alternatives. Require explicit consent."
    },

    {
      "pattern_id": "P05_repair_apology",
      "name": "Repair & Apology",
      "trust_moment": "Trust repair",
      "position_in_arc": 5,
      "tagline": "When the system is wrong or causes harm, it owns the impact and makes repair easier.",
      "promise": "When the system contributes to harm, confusion, or wasted effort, it owns the impact, apologizes clearly, and makes repair easier rather than harder for the affected person.",
      "objectives": [
        "Restore trust through accountability rather than deflection",
        "Make repair concrete and actionable — not performative",
        "Center the harmed person, not the system's reputation"
      ],
      "apply_when": [
        "The system gave wrong, misleading, or outdated guidance",
        "The user was billed, charged, or blocked incorrectly",
        "A workflow, outage, or bug caused extra work for the user",
        "The system must reverse, correct, or compensate for harm"
      ],
      "system_must": [
        "Acknowledge what went wrong in specific, plain language",
        "Apologize in proportion to the impact on the user",
        "Take or propose concrete steps to fix or compensate",
        "Say what will happen next and when",
        "Center the harmed person, not the system's reputation"
      ],
      "system_must_not": [
        "Shift blame back onto the user or their input",
        "Minimize the impact ('it was just a small error')",
        "Hide behind vague statements with no clear remedy",
        "Go silent after an error"
      ],
      "token_set": {
        "primary": [
          "behavior.acknowledge_error",
          "behavior.apologize_concretely",
          "behavior.repair_after_error",
          "behavior.avoid_blame_shift"
        ],
        "secondary": [
          "behavior.explain_next_steps_clearly"
        ]
      },
      "safe_failure_mode": "If the system cannot verify or complete repair immediately, it must say so. Offer a safe next step (status, escalation, timeline). Avoid false certainty.",
      "tone_and_stance": {
        "tone": "Honest, accountable, non-defensive",
        "stance": "Center the harmed person, not the system's reputation. Accountability comes before explanation."
      },
      "ui_expressions": [
        "Error states with specific description and concrete path forward",
        "Apology banners with action items, not just acknowledgment",
        "'What happened and what we're doing' messaging",
        "Status pages with honest uncertainty rather than false reassurance",
        "Escalation affordances that are easy to find and use"
      ],
      "signal": "Evidence of system-originated error, user harm, or blocked progress.",
      "interpretation": "Trust is damaged. The system is responsible for stabilization.",
      "response": "Acknowledge, apologize proportionally, repair with concrete steps and timeline."
    },

    {
      "pattern_id": "P06_state_reorientation",
      "name": "State Reorientation",
      "trust_moment": "Trust continuity",
      "position_in_arc": 6,
      "tagline": "After a rupture or state change, the system re-anchors what changed, what's still true, and what the user can do.",
      "promise": "After a rupture or state change, the system re-anchors the human: what changed, what remains true, and what agency the user still holds.",
      "objectives": [
        "Prevent lingering confusion after errors or state changes",
        "Restore a sense of legible, navigable state",
        "Ensure trust can continue forward — not just survive the rupture"
      ],
      "apply_when": [
        "An error or repair moment has just completed",
        "A significant system state change occurred (update, migration, mode change)",
        "The user needs to re-understand their situation before proceeding"
      ],
      "system_must": [
        "Re-anchor what changed, what remains true, and what the user can still do",
        "State available actions clearly — not as a wall of options",
        "Restore a sense of legible, navigable state"
      ],
      "system_must_not": [
        "Leave the user in a state of unresolved uncertainty",
        "Overload recovery messaging with too many next steps",
        "Use this pattern as an opportunity to upsell or redirect",
        "Assume the user has retained full context after a rupture"
      ],
      "token_set": {
        "primary": [
          "behavior.explain_next_steps_clearly",
          "behavior.reduce_cognitive_load"
        ],
        "secondary": [
          "behavior.clarify_agency_boundaries",
          "behavior.repair_after_error"
        ]
      },
      "safe_failure_mode": "If the system cannot determine full current state, say so plainly. Name what is known and unknown. Offer a stable next action.",
      "tone_and_stance": {
        "tone": "Forward-looking, grounded, specific",
        "stance": "Clarity about where we are now. Not more apology — forward motion."
      },
      "ui_expressions": [
        "Post-action summary panels",
        "'What changed' banners after system updates",
        "Undo confirmation with state summary",
        "Session recovery screens",
        "Handoff messages between system states",
        "Account status panels after plan or permission changes"
      ],
      "signal": "A rupture, repair, or material state change has just occurred.",
      "interpretation": "The user may have lost orientation. Re-anchoring is a trust obligation, not an option.",
      "response": "State what changed, what's still true, and what the user can do next. Limit to what's immediately relevant."
    }

  ]
}
