{
  "card_id": "40X_sim_<slug>",
  "title": "<Sim title in plain prose>",
  "schema_version": 3,
  "estimated_minutes": 3,
  "audience_cluster": "<clinical|legal|gov|it|research|civic|recovery>",

  "simulation_posture": {
    "show_chip": true,
    "chip_label": "simulated data · code is real",
    "github_link": "https://github.com/garrison-node/merkletrust",
    "expanded_text": "This walkthrough uses simulated data so you can explore without registering anything real. The cryptographic operations are real — your browser is doing actual SHA-256, actual signature verification, actual merkle-leaf construction. If a Garrison Node is reachable, your clicks become real events on it. If not, the code still runs; only the anchor is simulated."
  },

  "mock_ui": {
    "kind": "<generic_modal|lab_console|voting_portal|claim_console|records_filer|home_hub|hearing_room>",
    "theme": "<theme-name>",
    "title_bar": "Merkle Trust — <surface name> (sandbox)",
    "chrome": {
      "show_address_bar": true,
      "address_bar_url": "merkle://sandbox/<persona>",
      "show_status_bar": true
    },
    "boundary": {
      "show": true,
      "label_inside": "your device",
      "label_outside": "external world",
      "style": "hairline",
      "transform_on_cross": "blur_to_hash",
      "label_font": "monospace"
    }
  },

  "cursor": {
    "style": "default",
    "speed_px_per_sec": 900,
    "easing": "easeInOutCubic",
    "pulse_color": "#b87333"
  },

  "narrate": {
    "enabled": true,
    "voice_hint": "en-US, neutral, conversational",
    "rate": 1.0,
    "pitch": 1.0,
    "auto_start_on_step": false,
    "highlight_word_while_speaking": true,
    "stop_on_navigate": true
  },

  "tag_along": {
    "enabled": true,
    "label": ".md",
    "tooltip": "Add this card's summary to your take-along bundle",
    "icon": "document-arrow-down",
    "card_summary": {
      "title": "<Sim title>",
      "audience": "<one-line persona description>",
      "what_happened": "<2-4 plain-English sentences>",
      "data_movements": [],
      "cryptographic_events": [],
      "verifiable_now": [],
      "build_on": []
    }
  },

  "attestation_strip": {
    "enabled": true,
    "default_state": "collapsed",
    "expand_label": "what just happened, cryptographically",
    "modes": {
      "live": {
        "label": "live · attesting to garrison node",
        "color_hint": "merkle_green",
        "show_real_anchor": true,
        "show_real_leaf": true,
        "endpoint": "https://merkle.example.com/api/v3/leaf"
      },
      "simulated_online": {
        "label": "simulated · code is real",
        "color_hint": "neutral",
        "show_real_anchor": false,
        "show_real_leaf": false,
        "honest_note": "If a Garrison Node were reachable, this click would emit a leaf to the next ceremony anchor."
      },
      "offline": {
        "label": "local · your node is anchoring",
        "color_hint": "merkle_green",
        "show_real_anchor": true,
        "show_real_leaf": true,
        "endpoint": "http://localhost:9100/api/v3/leaf"
      }
    }
  },

  "fingerprint": {
    "enabled": true,
    "accumulator_kind": "click_path_sha256",
    "seal_at": "graduation",
    "cert_filename": "merkletrust_visitor_cert.json",
    "tamper_test_invitation": "Edit one byte in your cert and try logging in again. The next byte revert restores access.",
    "validation_modes": ["local_only", "anchored_to_public_chain"]
  },

  "comment_redirect": {
    "enabled": true,
    "field_label": "Your thought, question, or counter-example",
    "field_placeholder": "What stood out? What seems off? What would you ask?",
    "submit_label": "Run it past Claude",
    "redirect_target": "claude_ai",
    "redirect_url_template": "https://claude.ai/new?q={prompt_url_encoded}",
    "prompt_assembly": {
      "header": "Above is a Merkle Trust walkthrough card. The user has the following thought / question / objection. Give your current independent take. Be specific about what holds up and what doesn't.",
      "card_md_block": true,
      "user_comment_block": true,
      "footer": "Reply with your honest current view. The user can paste your reply back to Merkle Trust if they want."
    },
    "return_invitation": {
      "enabled": true,
      "label": "Bring it back if you want",
      "placeholder": "Paste your dialogue here as: 'this is me and Claude on this sim.'",
      "destination": "card_discussion",
      "moderation": "pre_publish_review"
    },
    "fallback_for_non_claude_users": {
      "show_alternate_targets": true,
      "alternates": [
        { "label": "ChatGPT", "url_template": "https://chat.openai.com/?q={prompt_url_encoded}" },
        { "label": "Copy prompt to clipboard", "action": "clipboard" }
      ]
    },
    "privacy_note": "Your comment never leaves Merkle Trust unless you press submit. The redirect opens in your own session on the LLM provider you choose; their handling is theirs."
  },

  "data_recipients": {
    "local_vault": {
      "label": "Your local vault",
      "privacy_layer": "L4",
      "role": "local_vault",
      "icon": "lock-closed",
      "description": "Held on your device; no copy leaves."
    },
    "chain_anchor": {
      "label": "Public chain anchor",
      "privacy_layer": "L0",
      "role": "chain_anchor",
      "icon": "anchor",
      "description": "Receives only the merkle root; never any record content."
    }
  },

  "transforms": {
    "sha256_local_salt": {
      "kind": "sha256",
      "label": "SHA-256 with local salt",
      "params": { "salt_ref": "device_local_salt" },
      "icon": "hash"
    },
    "verbatim": {
      "kind": "verbatim",
      "label": "Verbatim (held local)",
      "icon": "lock-closed"
    }
  },

  "steps": [
    {
      "id": "landing",
      "title": "Landing",
      "prose": "<from .md>",
      "weight": "routine",
      "cursor_path": [
        { "target": "wt-hook-line", "dwell_ms": 1800, "action": "explain" }
      ],
      "attestation": {
        "fires_on": "step_enter",
        "operations": [],
        "strip_summary": "no cryptographic event yet — landing is observation only"
      }
    },
    {
      "id": "install",
      "title": "Picking how you'd evaluate",
      "prose": "<from .md>",
      "weight": "routine",
      "cursor_path": [
        { "target": "wt-paths-list", "dwell_ms": 2200, "action": "explain" }
      ],
      "attestation": {
        "fires_on": "step_enter",
        "operations": [],
        "strip_summary": "no cryptographic event yet — install paths are visitor-facing only"
      }
    },
    {
      "id": "first_concrete",
      "title": "The first concrete moment",
      "prose": "<from .md>",
      "weight": "deliberate",
      "cursor_path": [
        { "target": "wt-doc-1", "dwell_ms": 1200, "action": "click" },
        { "target": "wt-doc-2", "dwell_ms": 1200, "action": "click" },
        { "target": "wt-seal-button", "dwell_ms": 800, "action": "verify" }
      ],
      "attestation": {
        "fires_on": "cursor_at_waypoint",
        "operations": [
          {
            "op": "sha256",
            "subject": "<sim-specific subject — e.g. 'op-note seal'>",
            "input_summary": "<synthetic file ref>",
            "output_label": "<8-char leaf hex>",
            "real_in_browser": true,
            "real_in_garrison_node": true
          }
        ],
        "strip_summary": "1 file sealed · 1 leaf staged for next ceremony"
      }
    },
    {
      "id": "is_this_real",
      "title": "\"Is this real?\"",
      "prose": "<from .md>",
      "weight": "deliberate",
      "cursor_path": [
        { "target": "wt-receipt-link", "dwell_ms": 1800, "action": "verify" }
      ],
      "attestation": {
        "fires_on": "cursor_at_waypoint",
        "operations": [
          {
            "op": "merkle_root_recompute",
            "subject": "anchor-receipt verification",
            "input_summary": "manifest of seen leaves so far",
            "output_label": "root match: yes",
            "real_in_browser": true,
            "real_in_garrison_node": false
          }
        ],
        "strip_summary": "merkle root recomputed locally · matches the receipt shown"
      }
    },
    {
      "id": "ceremony",
      "title": "The ceremony moment",
      "prose": "<from .md>",
      "weight": "deliberate",
      "cursor_path": [
        { "target": "wt-ceremony-button", "dwell_ms": 1500, "action": "click" }
      ],
      "public_ceremony": {
        "ceremony_kind": "login_cert_hash",
        "run_real_crypto": true,
        "honest_framing": "This is a real ceremony run. The walkthrough is using simulated data; the cryptographic operations are real."
      },
      "attestation": {
        "fires_on": "cursor_at_waypoint",
        "operations": [
          {
            "op": "ceremony_anchor",
            "subject": "today's anchor",
            "input_summary": "<count> files attested · <count> critical files verified",
            "output_label": "<8-char anchor hex>",
            "real_in_browser": true,
            "real_in_garrison_node": true
          }
        ],
        "strip_summary": "ceremony complete · new anchor at <hex> · safe to advance"
      }
    },
    {
      "id": "close",
      "title": "The close",
      "prose": "<from .md>",
      "weight": "routine",
      "cursor_path": [
        { "target": "wt-package-download", "dwell_ms": 2000, "action": "explain" }
      ],
      "attestation": {
        "fires_on": "step_exit",
        "operations": [
          {
            "op": "fingerprint_seal",
            "subject": "your cert.json for this card",
            "input_summary": "click path so far · session keypair",
            "output_label": "fingerprint_<8char>",
            "real_in_browser": true,
            "real_in_garrison_node": false
          }
        ],
        "strip_summary": "fingerprint advanced · sealed at graduation"
      }
    }
  ],

  "finish_text": "<from .md, after the # Finish text marker>"
}
