{
  "meta": {
    "schema_version": 1,
    "artifact_snapshot_date": "2026-02-17",
    "source_repo": "imorte/passport-index-data",
    "source_commit": "9c59780dd0dbaefcbdfa0134d21cd99d0d547509",
    "source_commit_date": "2026-03-01",
    "source_file_hashes_sha256": {
      "passport-index.json": "1327f7ca7b6abfa22966000583bde0734d2e87d4f94619a9f9acb2605add62c5",
      "passport-index-matrix.csv": "15c35abfc4e8ace96d8db63b30aaf880badd6e35cf11fe1f6fe432c05b35b402",
      "passport-index-matrix-iso2.csv": "4515e3c02f7e743908f33fbbf86502c0de07173821c90eb84ea7201aaa9890f4",
      "passport-index-matrix-iso3.csv": "3d461c768cff94aa5e8da34a4709cc26aaa714ab96f6074dfc87de1c01cd247f"
    },
    "source_hash": "sha256:47736a862b5d029c",
    "source_hash_full": "sha256:47736a862b5d029cc127211a88920ad0e00cbec309a06d447c68f1362a304495",
    "data_date": "2026-02-17",
    "freshness": {
      "mode": "client_computed_date_age",
      "data_date": "2026-02-17",
      "source_commit_date": "2026-03-01",
      "max_data_age_days": 90,
      "max_source_age_days": 120,
      "computed_on_read_fields": [
        "today",
        "data_age_days",
        "source_age_days",
        "is_data_stale",
        "is_source_stale",
        "public_label"
      ],
      "public_label": "computed_on_read",
      "ui_required": true,
      "policy": "Consumers compute stale state from data_date/source_commit_date at render time. If stale, keep the free comparison usable but show a visible freshness warning near the source line and in public API metadata.",
      "source_decision": {
        "decision_id": "O5-2026-07-20",
        "status": "implemented",
        "decision": "accept_and_reframe_stale_source",
        "decided_at": "2026-07-20",
        "current_source_id": "imorte_passportindex_data",
        "public_mode": "comparison_available_with_prominent_stale_warning",
        "history_unlock": "Requires a second fully compatible reviewed snapshot; this decision alone does not create one."
      }
    },
    "passport_count": 199,
    "audit_score_field": "audit_source_universe_score",
    "audit_score_name": "audit source-universe score",
    "audit_score_universe": "source_imorte_passportindex_199_entities_20260217_9c59780",
    "audit_source_universe_label": "pinned PassportIndex 199-entity source universe",
    "audit_formula_display": "visa free + VOA + ETA",
    "customer_headline_field": "headline_visa_free_destination_score",
    "customer_headline_score_name": "visa-free destination score",
    "customer_headline_score_name_zh": "免签国家",
    "customer_headline_universe": "market_henley_countries_and_territories",
    "customer_headline_universe_label": "countries and territories / market-Henley headline universe",
    "customer_headline_destination_definition": "countries + territories + regions + dependencies + SARs + travel entities",
    "customer_headline_formula_display": "visa free + VOA + ETA",
    "destination_definition": "countries + territories + regions + dependencies + SARs + travel entities",
    "formula_display": "visa free + VOA + ETA",
    "universe_label": "countries and territories / market-Henley headline universe",
    "source_destination_universe": "source_imorte_passportindex_199_entities_20260217_9c59780",
    "source_destination_universe_legacy_alias": "passportindex_199_source_entities",
    "source_entity_count": 199,
    "destination_universe_entity_count": 199,
    "per_origin_destination_records": 198,
    "self_pair_policy": "omitted_from_json_not_counted",
    "counted_status_codes": [
      "VF",
      "VOA",
      "ETA"
    ],
    "excluded_status_codes": [
      "EV",
      "VR",
      "NA"
    ],
    "counted_status_names": {
      "VF": "visa free",
      "VOA": "visa on arrival",
      "ETA": "electronic travel authorisation"
    },
    "excluded_status_names": {
      "EV": "e-visa / visa required but applying online",
      "VR": "visa required",
      "NA": "no admission / prohibited"
    },
    "status_codes": {
      "VF": "visa free",
      "VOA": "visa on arrival",
      "ETA": "eta",
      "EV": "e-visa",
      "VR": "visa required",
      "NA": "no admission"
    },
    "removed_ambiguous_aliases": [
      "score",
      "visa_free_destination_score",
      "rank"
    ],
    "methodology_doc": "docs/methodology.md",
    "score_ssot_file": "docs/score-ssot.json",
    "note": "Informational only. Verify with official sources before travel/investment."
  },
  "schema_version": 1,
  "schema": "api/v1/schemas/widget-manifest.schema.json",
  "artifact_type": "widget_manifest",
  "base_path": "api/v1/widgets",
  "status": "current",
  "generated_by": "scripts/build.py",
  "runtime": {
    "version": "v1",
    "version_channel": "latest",
    "sdk_public_base": "https://passporttax.org/mvp",
    "pinned_version": "v1",
    "latest_version": "v1",
    "breaking_change_policy": "Breaking payload/runtime changes require a new major SDK path; pinned partner snippets remain stable.",
    "loader": "mvp/embed/loader.js",
    "frame": "mvp/embed/frame.html",
    "wrapper": "mvp/embed/wrapper.js",
    "renderers": "mvp/widgets/renderers.js",
    "styles": "mvp/widgets/styles.css",
    "forbidden_feeds": [
      "mvp/data.js"
    ],
    "allowed_feed_prefixes": [
      "api/v1/widgets/examples/",
      "api/v1/widgets/configs/",
      "api/v1/examples/",
      "api/v1/meta.json"
    ],
    "network_contract": "static JSON only; no third-party runtime calls"
  },
  "widgets": [
    {
      "widget_id": "passport-upgrade-moment",
      "label": "Passport Upgrade Moment",
      "default_locale": "zh-Hans",
      "modes": [
        "script",
        "iframe",
        "static"
      ],
      "default_example_id": "cn-dm",
      "default_config": "api/v1/widgets/configs/public-cn-upgrade.json",
      "config_schema": "api/v1/schemas/widget-config.schema.json",
      "pinned_sdk_url": "https://passporttax.org/mvp/embed/loader.js?v=v1",
      "latest_sdk_url": "https://passporttax.org/mvp/embed/loader.js?v=latest",
      "version_channel": "latest",
      "renderer": "upgrade-moment-card",
      "purpose": "second-passport upgrade comparison for high-intent Chinese-market pages",
      "data_contract": "uses generated compare examples; destination means countries and territories; counted statuses are VF + VOA + ETA only",
      "restrictions": {
        "open_access": true,
        "social_friendly": true,
        "allow_mvp_data_js": false,
        "claim_limit": "generated mobility comparison fields only"
      },
      "examples": [
        {
          "example_id": "cn-dm",
          "title": "中国 + 多米尼克",
          "path": "api/v1/widgets/examples/cn-dm.json",
          "origin": "CN",
          "targets": [
            "DM"
          ],
          "target_names": [
            "多米尼克"
          ],
          "source_universe_unlocks": 64,
          "common_reachable_count": 58,
          "audit_source_universe_score_after": 141,
          "canonical_compare_path": "api/v1/examples/cn-dm.json"
        },
        {
          "example_id": "cn-gd",
          "title": "中国 + 格林纳达",
          "path": "api/v1/widgets/examples/cn-gd.json",
          "origin": "CN",
          "targets": [
            "GD"
          ],
          "target_names": [
            "格林纳达"
          ],
          "source_universe_unlocks": 70,
          "common_reachable_count": 57,
          "audit_source_universe_score_after": 147,
          "canonical_compare_path": "api/v1/examples/cn-gd.json"
        },
        {
          "example_id": "cn-kn",
          "title": "中国 + 圣基茨",
          "path": "api/v1/widgets/examples/cn-kn.json",
          "origin": "CN",
          "targets": [
            "KN"
          ],
          "target_names": [
            "圣基茨和尼维斯"
          ],
          "source_universe_unlocks": 74,
          "common_reachable_count": 62,
          "audit_source_universe_score_after": 151,
          "canonical_compare_path": "api/v1/examples/cn-kn.json"
        },
        {
          "example_id": "cn-tr",
          "title": "中国 + 土耳其",
          "path": "api/v1/widgets/examples/cn-tr.json",
          "origin": "CN",
          "targets": [
            "TR"
          ],
          "target_names": [
            "土耳其"
          ],
          "source_universe_unlocks": 44,
          "common_reachable_count": 67,
          "audit_source_universe_score_after": 121,
          "canonical_compare_path": "api/v1/examples/cn-tr.json"
        },
        {
          "example_id": "cn-dm-tr",
          "title": "中国 + 多米尼克 + 土耳其",
          "path": "api/v1/widgets/examples/cn-dm-tr.json",
          "origin": "CN",
          "targets": [
            "DM",
            "TR"
          ],
          "target_names": [
            "多米尼克",
            "土耳其"
          ],
          "source_universe_unlocks": 83,
          "common_reachable_count": 51,
          "audit_source_universe_score_after": 160,
          "canonical_compare_path": "api/v1/examples/cn-dm-tr.json"
        },
        {
          "example_id": "tw-pt",
          "title": "台灣 + 葡萄牙",
          "path": "api/v1/widgets/examples/tw-pt.json",
          "origin": "TW",
          "targets": [
            "PT"
          ],
          "target_names": [
            "葡萄牙"
          ],
          "source_universe_unlocks": 47,
          "common_reachable_count": 111,
          "audit_source_universe_score_after": 160,
          "canonical_compare_path": "api/v1/examples/tw-pt.json"
        }
      ]
    }
  ],
  "configs": [
    {
      "config_id": "public-cn-upgrade",
      "path": "api/v1/widgets/configs/public-cn-upgrade.json",
      "snippet_path": "api/v1/widgets/snippets/public-cn-upgrade.html",
      "widget_id": "passport-upgrade-moment",
      "example_id": "cn-dm",
      "example_path": "api/v1/widgets/examples/cn-dm.json",
      "mode": "script",
      "version_channel": "latest",
      "tenant": "passporttax",
      "partner_id": null,
      "open_access": true,
      "social_friendly": true
    },
    {
      "config_id": "public-tw-pt",
      "path": "api/v1/widgets/configs/public-tw-pt.json",
      "snippet_path": "api/v1/widgets/snippets/public-tw-pt.html",
      "widget_id": "passport-upgrade-moment",
      "example_id": "tw-pt",
      "example_path": "api/v1/widgets/examples/tw-pt.json",
      "mode": "script",
      "version_channel": "latest",
      "tenant": "passporttax",
      "partner_id": null,
      "open_access": true,
      "social_friendly": true
    },
    {
      "config_id": "bprol-cn-upgrade",
      "path": "api/v1/widgets/configs/bprol-cn-upgrade.json",
      "snippet_path": "api/v1/widgets/snippets/bprol-cn-upgrade.html",
      "widget_id": "passport-upgrade-moment",
      "example_id": "cn-dm-tr",
      "example_path": "api/v1/widgets/examples/cn-dm-tr.json",
      "mode": "iframe",
      "version_channel": "pinned",
      "tenant": "bprol",
      "partner_id": "bprol",
      "open_access": true,
      "social_friendly": true
    }
  ],
  "cache_hint": "Static JSON. Rebuild with scripts/run_update.sh when raw data or SSOT changes."
}
