{
  "report_id": "theme_precious_metals_node_royalty_and_streaming_finance",
  "report_type": "theme_value_chain_node",
  "site_path": "themes/precious-metals/nodes/royalty-and-streaming-finance/index.html",
  "title": "Royalty And Streaming Finance",
  "as_of": "2026-06-22",
  "generated_at": "2026-06-22T22:15:35-07:00",
  "freshness": {
    "price_data_as_of": "2026-06-22",
    "daily_ohlc_latest": "2026-06-22",
    "chart_interval": "weekly",
    "knowledge_reviewed_as_of": "2026-06-22",
    "official_sources_reviewed_as_of": "2026-06-22",
    "api_required": true,
    "chartable_core_names": 6,
    "chartable_source_gap_names": 3,
    "selected_security_chart_source": "/api/securities/{ticker}/chart?frequency=weekly&window=3y&as_of=latest",
    "lineage_note": "Stored daily_ohlc rows run through 2026-06-22 for all six ranked tickers. Lineage status for selected daily_ohlc backfills still shows May 2026 source-freshness labels, so row coverage and lineage freshness differ."
  },
  "revision": {
    "version": 1,
    "updated_label": "Initial Precious Metals royalty and streaming finance node page from 15-primary-subagent ranking tournament plus one merge/select pass",
    "metadata_path": "themes/precious-metals/nodes/royalty-and-streaming-finance/report.json",
    "curation_source": "Manual static node update using reports-value-chain-node-pages skill; parent Precious Metals page already declared this node and was updated only for child-page routing.",
    "shared_file_updates": "Parent Precious Metals HTML/report.json node link and sitemap registration only."
  },
  "node": {
    "slug": "royalty-and-streaming-finance",
    "order": 2,
    "level": "L2 contracted metal cash-flow route",
    "role": "Ranks royalty and streaming companies that fund mines or buy mine-linked rights, then receive royalties, streams, or metal purchase rights as operators produce.",
    "description": "Royalty And Streaming Finance tests whether mine volumes, metal prices, reserve additions, operator execution, counterparty concentration, project pipeline, and financing discipline become revenue, margin, operating cash flow, NAV support, or dividend capacity."
  },
  "ticker_baskets": {
    "core": [
      "FNV",
      "WPM",
      "RGLD",
      "OR",
      "TFPM",
      "GROY"
    ],
    "api_backed_local_coverage": [
      "FNV",
      "WPM",
      "RGLD",
      "OR",
      "TFPM",
      "GROY"
    ],
    "canonical_lane_core": [
      "FNV",
      "WPM",
      "RGLD"
    ],
    "filed_current": [
      "FNV",
      "RGLD"
    ],
    "filed_stale": [
      "WPM"
    ],
    "source_gap_core": [
      "OR",
      "TFPM",
      "GROY"
    ],
    "source_only_watchlist": [],
    "missing_local_api": [],
    "missing_canonical_lane": [
      "OR",
      "TFPM",
      "GROY"
    ],
    "subscription_expansion_candidates": [
      "MTA",
      "VOXR"
    ],
    "deferred": [
      {
        "ticker": "SAND",
        "reason": "Deferred because the Royal Gold/Sandstorm-Horizon integration route is represented through RGLD in this pass."
      },
      {
        "ticker": "VMET",
        "reason": "Too new for ranked inclusion without more filing history and local coverage work."
      },
      {
        "ticker": "TMCR",
        "reason": "Too new for ranked inclusion without more filing history and local coverage work."
      },
      {
        "ticker": "EMX",
        "reason": "Deferred until canonical source support and local coverage are strong enough for this node."
      },
      {
        "ticker": "ELEMF",
        "reason": "Deferred because local/subscription coverage is incomplete."
      },
      {
        "ticker": "ATUSF",
        "reason": "Deferred because local/subscription coverage is incomplete."
      },
      {
        "ticker": "ALS",
        "reason": "Deferred because local coverage and source routing are incomplete for this node."
      },
      {
        "ticker": "SSL",
        "reason": "Deferred because local coverage and source routing are incomplete for this node."
      }
    ]
  },
  "ranking_method": {
    "primary_subagents": 15,
    "merge_select_subagents": 1,
    "reasoning_effort": "xhigh",
    "final_rank": [
      "FNV",
      "WPM",
      "RGLD",
      "OR",
      "TFPM",
      "GROY"
    ],
    "lenses": [
      "Pure royalty/streaming security ranking and basket construction",
      "Local discovery/API coverage and ticker mapping",
      "Canonical knowledge coverage and source gaps",
      "Business-model fit: royalty versus stream versus hybrid exposure",
      "Portfolio diversification by asset, operator, geography, and commodity",
      "Mine-life, reserve replacement, and project pipeline quality",
      "Counterparty, operator, jurisdiction, and development-stage risk",
      "Cash-flow conversion, margins, dividends, and balance sheet",
      "Valuation/NAV evidence and premium/discount discipline",
      "Official filings, annual reports, asset handbooks, and IR presentations",
      "Commodity exposure mix: gold, silver, copper, PGM, and byproduct exposure",
      "Technical/chart setup using local OHLC only",
      "Missing universe/subscription expansion queue",
      "Plain-language report usefulness",
      "Metadata, source trail, and validation requirements"
    ],
    "final_decision": "Kept FNV first for current filed cash-flow support, scale, balance sheet, and diversification; kept WPM second for scaled stream economics but marked it filed-stale pending Q1 2026 refresh; kept RGLD third for current Q1 cash-flow and deleveraging evidence; included OR, TFPM, and GROY because they belong economically and have local chart coverage, while labeling them source-gap names until canonical lanes are filed.",
    "rank_by_node_economics_first": true,
    "technical_timing_is_secondary": true
  },
  "basket_card_metrics": [
    {
      "rank": 1,
      "ticker": "FNV",
      "company": "Franco-Nevada",
      "market_cap": "$42.6B",
      "coverage_label": "Filed-current",
      "api_treatment": "API-backed local coverage",
      "proof_metric": "Q1 2026 operating cash flow $520.4M",
      "key_confirming_evidence": "Filed lane records Q1 2026 revenue $650.7M, 136,353 GEOs sold, adjusted EBITDA $591.9M, operating cash flow $520.4M, cash $714.7M, available capital $3.36B, and nil debt-to-equity.",
      "key_gap_or_weakening_evidence": "Q2 repeatability, Cobre stockpile timing, recent asset contribution, operator delivery, and premium valuation support remain the proof burden."
    },
    {
      "rank": 2,
      "ticker": "WPM",
      "company": "Wheaton Precious Metals",
      "market_cap": "$55.3B",
      "coverage_label": "Filed-stale",
      "api_treatment": "API-backed local coverage",
      "proof_metric": "FY2025 operating cash flow $1.905B",
      "key_confirming_evidence": "Filed lane records FY2025 revenue $2.3146B, operating cash flow $1.905B, cash operating margin $3,040/GEO, 2026 guidance 860,000-940,000 GEOs, and a 2030 target near 1.2M GEOs.",
      "key_gap_or_weakening_evidence": "Lane was generated before Q1 2026 results; Antamina contribution, PBND, debt terms, partner ramps, and realized pricing need refresh."
    },
    {
      "rank": 3,
      "ticker": "RGLD",
      "company": "Royal Gold",
      "market_cap": "$18.2B",
      "coverage_label": "Filed-current",
      "api_treatment": "API-backed local coverage",
      "proof_metric": "Q1 2026 operating cash flow $293.6M",
      "key_confirming_evidence": "Filed lane records Q1 2026 revenue $469.1M, operating cash flow $293.6M, adjusted EBITDA margin 83%, Q1 sales volume 96,300 GEOs, metal mix of 71% gold, 16% silver, and 10% copper, and post-quarter revolver debt of $525M.",
      "key_gap_or_weakening_evidence": "Guidance progress, acquired asset conversion, Sandstorm/Horizon integration, operator milestones, and debt paydown remain the proof burden."
    },
    {
      "rank": 4,
      "ticker": "OR",
      "company": "OR Royalties",
      "market_cap": "$6.4B",
      "coverage_label": "Source-gap",
      "api_treatment": "API-backed local coverage, missing canonical lane",
      "proof_metric": "Q1 2026 GEOs 22,740",
      "key_confirming_evidence": "Official Q1 2026 release reports 22,740 GEOs, $102.8M royalty and stream revenue, $71.9M operating cash flow, 96.8% cash margin, $94.9M cash, and a $0.055 quarterly dividend.",
      "key_gap_or_weakening_evidence": "No local canonical lane; concentration, Canadian Malartic/Odyssey timing, acquisition funding, and full portfolio exposure need source filing."
    },
    {
      "rank": 5,
      "ticker": "TFPM",
      "company": "Triple Flag Precious Metals",
      "market_cap": "$6.2B",
      "coverage_label": "Source-gap",
      "api_treatment": "API-backed local coverage, missing canonical lane",
      "proof_metric": "36 producing assets",
      "key_confirming_evidence": "Official asset map lists 242 assets, including 17 streams, 225 royalties, 36 producing assets, and 206 development, exploration, or other assets.",
      "key_gap_or_weakening_evidence": "No local canonical lane; current revenue, GEO mix, concentration, guidance, financial leverage, and operator/jurisdiction mix remain source-needed."
    },
    {
      "rank": 6,
      "ticker": "GROY",
      "company": "Gold Royalty",
      "market_cap": "$0.6B",
      "coverage_label": "Watch/source-gap",
      "api_treatment": "API-backed local coverage, missing canonical lane",
      "proof_metric": "Q1 2026 GEOs 1,920",
      "key_confirming_evidence": "Official Q1 2026 release reports revenue of $7.2M, total revenue, land agreement proceeds, and interest of $9.4M, 1,920 GEOs, adjusted EBITDA $7.0M, more than $13.6M cash, no debt, and an undrawn $150M credit facility.",
      "key_gap_or_weakening_evidence": "No local canonical lane; recurring producing cash flow, non-recurring proceeds, development timing, funding runway, and dilution risk need source filing."
    }
  ],
  "chart_artifacts": [
    {
      "chart_id": "chart-fnv",
      "ticker": "FNV",
      "source_table": "daily_ohlc",
      "daily_ohlc_first": "2021-05-12",
      "daily_ohlc_last": "2026-06-22",
      "daily_ohlc_rows": 1283,
      "chart_interval": "weekly",
      "aggregation": "Weekly bars grouped from daily rows by calendar week; open is first row, high is weekly max, low is weekly min, close is final row, volume is summed.",
      "indicators": [
        "20w_ema",
        "100w_ema",
        "weekly_volume",
        "20w_average_volume"
      ],
      "price_data_as_of": "2026-06-22",
      "visible_years": 3,
      "visible_end_date": "2026-06-22",
      "rendering": "report_api_selected_security",
      "fallback_table": false,
      "api_route": "/api/securities/FNV/chart?frequency=weekly&window=3y&as_of=latest"
    },
    {
      "chart_id": "chart-wpm",
      "ticker": "WPM",
      "source_table": "daily_ohlc",
      "daily_ohlc_first": "2021-05-12",
      "daily_ohlc_last": "2026-06-22",
      "daily_ohlc_rows": 1283,
      "chart_interval": "weekly",
      "aggregation": "Weekly bars grouped from daily rows by calendar week; open is first row, high is weekly max, low is weekly min, close is final row, volume is summed.",
      "indicators": [
        "20w_ema",
        "100w_ema",
        "weekly_volume",
        "20w_average_volume"
      ],
      "price_data_as_of": "2026-06-22",
      "visible_years": 3,
      "visible_end_date": "2026-06-22",
      "rendering": "report_api_selected_security",
      "fallback_table": false,
      "api_route": "/api/securities/WPM/chart?frequency=weekly&window=3y&as_of=latest"
    },
    {
      "chart_id": "chart-rgld",
      "ticker": "RGLD",
      "source_table": "daily_ohlc",
      "daily_ohlc_first": "2021-05-12",
      "daily_ohlc_last": "2026-06-22",
      "daily_ohlc_rows": 1283,
      "chart_interval": "weekly",
      "aggregation": "Weekly bars grouped from daily rows by calendar week; open is first row, high is weekly max, low is weekly min, close is final row, volume is summed.",
      "indicators": [
        "20w_ema",
        "100w_ema",
        "weekly_volume",
        "20w_average_volume"
      ],
      "price_data_as_of": "2026-06-22",
      "visible_years": 3,
      "visible_end_date": "2026-06-22",
      "rendering": "report_api_selected_security",
      "fallback_table": false,
      "api_route": "/api/securities/RGLD/chart?frequency=weekly&window=3y&as_of=latest"
    },
    {
      "chart_id": "chart-or",
      "ticker": "OR",
      "source_table": "daily_ohlc",
      "daily_ohlc_first": "2021-05-12",
      "daily_ohlc_last": "2026-06-22",
      "daily_ohlc_rows": 1283,
      "chart_interval": "weekly",
      "aggregation": "Weekly bars grouped from daily rows by calendar week; open is first row, high is weekly max, low is weekly min, close is final row, volume is summed.",
      "indicators": [
        "20w_ema",
        "100w_ema",
        "weekly_volume",
        "20w_average_volume"
      ],
      "price_data_as_of": "2026-06-22",
      "visible_years": 3,
      "visible_end_date": "2026-06-22",
      "rendering": "report_api_selected_security",
      "fallback_table": false,
      "api_route": "/api/securities/OR/chart?frequency=weekly&window=3y&as_of=latest"
    },
    {
      "chart_id": "chart-tfpm",
      "ticker": "TFPM",
      "source_table": "daily_ohlc",
      "daily_ohlc_first": "2022-08-30",
      "daily_ohlc_last": "2026-06-22",
      "daily_ohlc_rows": 955,
      "chart_interval": "weekly",
      "aggregation": "Weekly bars grouped from daily rows by calendar week; open is first row, high is weekly max, low is weekly min, close is final row, volume is summed.",
      "indicators": [
        "20w_ema",
        "100w_ema",
        "weekly_volume",
        "20w_average_volume"
      ],
      "price_data_as_of": "2026-06-22",
      "visible_years": 3,
      "visible_end_date": "2026-06-22",
      "rendering": "report_api_selected_security",
      "fallback_table": false,
      "api_route": "/api/securities/TFPM/chart?frequency=weekly&window=3y&as_of=latest"
    },
    {
      "chart_id": "chart-groy",
      "ticker": "GROY",
      "source_table": "daily_ohlc",
      "daily_ohlc_first": "2021-05-12",
      "daily_ohlc_last": "2026-06-22",
      "daily_ohlc_rows": 1283,
      "chart_interval": "weekly",
      "aggregation": "Weekly bars grouped from daily rows by calendar week; open is first row, high is weekly max, low is weekly min, close is final row, volume is summed.",
      "indicators": [
        "20w_ema",
        "100w_ema",
        "weekly_volume",
        "20w_average_volume"
      ],
      "price_data_as_of": "2026-06-22",
      "visible_years": 3,
      "visible_end_date": "2026-06-22",
      "rendering": "report_api_selected_security",
      "fallback_table": false,
      "api_route": "/api/securities/GROY/chart?frequency=weekly&window=3y&as_of=latest"
    }
  ],
  "source_trail": [
    {
      "ticker": "FNV",
      "classification": "API-backed local coverage; filed-current canonical lane",
      "canonical_knowledge_lane": "../../../../../knowledge/wiki/lanes/security/fnv.md",
      "latest_profile_output": "../../../../../knowledge/raw/sources/security_profile__fnv__research_20260530T_autorun_macro_20/output.md",
      "latest_profile_manifest": "../../../../../knowledge/raw/sources/security_profile__fnv__research_20260530T_autorun_macro_20/source.json",
      "latest_research_output": "../../../../../knowledge/raw/sources/security_research__fnv__research_20260530T_autorun_macro_20/output.md",
      "latest_research_manifest": "../../../../../knowledge/raw/sources/security_research__fnv__research_20260530T_autorun_macro_20/source.json",
      "projected_claim_or_evidence_ids": [
        "C2",
        "C3",
        "C4",
        "C5",
        "C6",
        "C8",
        "C10",
        "E3",
        "E4",
        "E6",
        "E8",
        "E10",
        "E15",
        "E17",
        "E19"
      ],
      "local_chart_endpoint": "/api/securities/FNV/chart?frequency=weekly&window=3y&as_of=latest",
      "route_registry_route": null,
      "chart_level_registry_route": "assets/chart-level-rules.js"
    },
    {
      "ticker": "WPM",
      "classification": "API-backed local coverage; filed-stale canonical lane",
      "canonical_knowledge_lane": "../../../../../knowledge/wiki/lanes/security/wpm.md",
      "latest_profile_output": "../../../../../knowledge/raw/sources/security_profile__wpm__20260507T032640Z_79e0a38e/output.md",
      "latest_profile_manifest": "../../../../../knowledge/raw/sources/security_profile__wpm__20260507T032640Z_79e0a38e/source.json",
      "latest_research_output": "../../../../../knowledge/raw/sources/security_research__wpm__20260507T032640Z_79e0a38e/output.md",
      "latest_research_manifest": "../../../../../knowledge/raw/sources/security_research__wpm__20260507T032640Z_79e0a38e/source.json",
      "projected_claim_or_evidence_ids": [
        "claim_current_performance",
        "claim_growth_driver",
        "claim_antamina_leverage",
        "claim_model_edge",
        "ev_revenue_2025",
        "ev_fy2025_ocf",
        "ev_margin_2025",
        "ev_2026_guidance",
        "ev_long_term_outlook",
        "ev_antamina_financing"
      ],
      "local_chart_endpoint": "/api/securities/WPM/chart?frequency=weekly&window=3y&as_of=latest",
      "route_registry_route": null,
      "chart_level_registry_route": "assets/chart-level-rules.js"
    },
    {
      "ticker": "RGLD",
      "classification": "API-backed local coverage; filed-current canonical lane",
      "canonical_knowledge_lane": "../../../../../knowledge/wiki/lanes/security/rgld.md",
      "latest_profile_output": "../../../../../knowledge/raw/sources/security_profile__rgld__security_backlog_100_20260607/output.md",
      "latest_profile_manifest": "../../../../../knowledge/raw/sources/security_profile__rgld__security_backlog_100_20260607/source.json",
      "latest_research_output": "../../../../../knowledge/raw/sources/security_research__rgld__security_backlog_100_20260607/output.md",
      "latest_research_manifest": "../../../../../knowledge/raw/sources/security_research__rgld__security_backlog_100_20260607/source.json",
      "projected_claim_or_evidence_ids": [
        "c_operating_scale",
        "c_margin_quality",
        "c_deleveraging",
        "c_market_repricing",
        "c_stream_royalty_mix",
        "e_q1_revenue",
        "e_q1_ocf",
        "e_q1_ebitda_margin",
        "e_q1_geo",
        "e_post_q_debt",
        "e_2026_guidance"
      ],
      "local_chart_endpoint": "/api/securities/RGLD/chart?frequency=weekly&window=3y&as_of=latest",
      "route_registry_route": null,
      "chart_level_registry_route": "assets/chart-level-rules.js"
    },
    {
      "ticker": "OR",
      "classification": "API-backed local coverage; missing canonical lane",
      "canonical_knowledge_lane": null,
      "latest_profile_output": null,
      "latest_profile_manifest": null,
      "latest_research_output": null,
      "latest_research_manifest": null,
      "projected_claim_or_evidence_ids": [
        "source-needed"
      ],
      "official_source": "https://orroyalties.com/or-royalties-reports-56-year-over-year-increase-in-cash-flows-from-operations-in-q1-2026/",
      "local_chart_endpoint": "/api/securities/OR/chart?frequency=weekly&window=3y&as_of=latest",
      "route_registry_route": "securities/index.html?ticker=OR",
      "chart_level_registry_route": "assets/chart-level-rules.js"
    },
    {
      "ticker": "TFPM",
      "classification": "API-backed local coverage; missing canonical lane",
      "canonical_knowledge_lane": null,
      "latest_profile_output": null,
      "latest_profile_manifest": null,
      "latest_research_output": null,
      "latest_research_manifest": null,
      "projected_claim_or_evidence_ids": [
        "source-needed"
      ],
      "official_source": "https://www.tripleflagpm.com/our-assets/asset-map/default.aspx",
      "local_chart_endpoint": "/api/securities/TFPM/chart?frequency=weekly&window=3y&as_of=latest",
      "route_registry_route": "securities/index.html?ticker=TFPM",
      "chart_level_registry_route": "assets/chart-level-rules.js"
    },
    {
      "ticker": "GROY",
      "classification": "API-backed local coverage; missing canonical lane",
      "canonical_knowledge_lane": null,
      "latest_profile_output": null,
      "latest_profile_manifest": null,
      "latest_research_output": null,
      "latest_research_manifest": null,
      "projected_claim_or_evidence_ids": [
        "source-needed"
      ],
      "official_source": "https://www.goldroyalty.com/news/news-releases/gold-royalty-reports-record-revenue-and-cash-flow-in-the-first-quarter-2026",
      "local_chart_endpoint": "/api/securities/GROY/chart?frequency=weekly&window=3y&as_of=latest",
      "route_registry_route": "securities/index.html?ticker=GROY",
      "chart_level_registry_route": "assets/chart-level-rules.js"
    }
  ],
  "links_out": [
    "theme_precious_metals",
    "themes_index",
    "sector_materials",
    "theme_energy_input_cost_pass_through",
    "security_fnv",
    "security_wpm",
    "security_rgld",
    "securities_index"
  ],
  "knowledge_sources": [
    "../../../../../knowledge/wiki/index.md",
    "../../../../../knowledge/wiki/lanes/sector/materials.md",
    "../../../../../knowledge/wiki/concepts/themes/energy-input-cost-pass-through.md",
    "../../../../../knowledge/wiki/lanes/security/fnv.md",
    "../../../../../knowledge/wiki/lanes/security/wpm.md",
    "../../../../../knowledge/wiki/lanes/security/rgld.md",
    "../../../../../knowledge/raw/sources/security_profile__fnv__research_20260530T_autorun_macro_20/output.md",
    "../../../../../knowledge/raw/sources/security_research__fnv__research_20260530T_autorun_macro_20/output.md",
    "../../../../../knowledge/raw/sources/security_profile__wpm__20260507T032640Z_79e0a38e/output.md",
    "../../../../../knowledge/raw/sources/security_research__wpm__20260507T032640Z_79e0a38e/output.md",
    "../../../../../knowledge/raw/sources/security_profile__rgld__security_backlog_100_20260607/output.md",
    "../../../../../knowledge/raw/sources/security_research__rgld__security_backlog_100_20260607/output.md"
  ],
  "external_sources": [
    "https://orroyalties.com/or-royalties-reports-56-year-over-year-increase-in-cash-flows-from-operations-in-q1-2026/",
    "https://www.tripleflagpm.com/our-assets/asset-map/default.aspx",
    "https://www.goldroyalty.com/news/news-releases/gold-royalty-reports-record-revenue-and-cash-flow-in-the-first-quarter-2026"
  ],
  "discovery_sources": [
    {
      "kind": "discovery_cli_status",
      "label": "Local coverage checks for ranked royalty and streaming basket",
      "query_ref": "discovery:status:FNV|WPM|RGLD|OR|TFPM|GROY"
    },
    {
      "kind": "duckdb_readonly_query",
      "label": "Ranked basket daily OHLC coverage and market caps",
      "query_ref": "discovery:duckdb:daily_ohlc+instruments.market_cap_computed:FNV|WPM|RGLD|OR|TFPM|GROY:queried_2026-06-22"
    },
    {
      "kind": "duckdb_readonly_query",
      "label": "Selected daily OHLC lineage caveat",
      "query_ref": "discovery:lineage-status:daily_ohlc:FNV|WPM|RGLD|OR|TFPM|GROY"
    },
    {
      "kind": "report-api",
      "label": "Selected-security weekly charts",
      "query_ref": "report-api:/api/securities/{ticker}/chart?frequency=weekly&window=3y&as_of=latest"
    }
  ],
  "known_gaps": [
    "OR, TFPM, and GROY have local discovery chart coverage but no canonical local security lanes.",
    "WPM's local lane was generated before Q1 2026 results and should be refreshed before company-specific Q1 claims are projected into this report layer.",
    "TFPM company-level revenue, GEO mix, concentration, guidance, balance-sheet metrics, and operator/jurisdiction mix are source-needed in this pass.",
    "No NAV, reserve/resource, mine-life, contract-term, valuation-multiple, trigger-price, or static chart-level claims were added unless already present in filed source routes.",
    "Lineage labels for selected daily_ohlc backfills lag row coverage; chart freshness is anchored to table max-date checks plus this caveat.",
    "Selected-security API behavior depends on the local report API at viewing time; static HTML contains only the API hook and chart provenance."
  ],
  "validation_plan": [
    "jq empty themes/precious-metals/nodes/royalty-and-streaming-finance/report.json themes/precious-metals/report.json sitemap.json",
    "Static relative link and anchor check for node HTML, parent Precious Metals link, source links, metadata links, and sitemap route",
    "Required section shape check for opening paragraph, Current Setup, Basket, What Confirms Or Weakens, Source Trail, and Categories",
    "Basket card structure check: six basket-rank-card items, rank buttons with data-chart-ticker, three metric tiles, and Role in stack / Revenue mix / Proof burden detail sections",
    "Local OHLC/chart coverage and provenance check for FNV, WPM, RGLD, OR, TFPM, and GROY",
    "Selected-security API check for weekly 3Y routes when local report API is available",
    "Banned/weak phrase scan from the reports writing standard",
    "Metadata agreement check between HTML body attributes, node report.json, parent report.json node entry, and sitemap.json"
  ]
}
