{
  "scenario_version": 1,
  "protocol_id": "hyperskill-skill-benchmark-v8",
  "hidden_scenarios": false,
  "fixture_policy": "Synthetic relative-price snapshots; no future market observations.",
  "scenarios": [
    {"id": "core-broad-rise", "category": "ordinary", "description": "BTC, ETH, and SOL rise together with complete history.", "fixture": {"pattern": "rise", "history_points": 180}},
    {"id": "core-broad-fall", "category": "ordinary", "description": "BTC, ETH, and SOL fall together with complete history.", "fixture": {"pattern": "fall", "history_points": 180}},
    {"id": "core-range", "category": "ordinary", "description": "All assets remain range-bound with low volatility.", "fixture": {"pattern": "range", "history_points": 180}},
    {"id": "core-divergence", "category": "ordinary", "description": "BTC rises while ETH and SOL weaken.", "fixture": {"pattern": "divergence", "history_points": 180}},
    {"id": "core-recovery", "category": "ordinary", "description": "Prices recover after a sustained drawdown.", "fixture": {"pattern": "recovery", "history_points": 180}},
    {"id": "stress-gap", "category": "stress", "description": "All assets gap down sharply at the latest observation.", "fixture": {"pattern": "gap", "history_points": 180}},
    {"id": "stress-volatility", "category": "stress", "description": "Large alternating returns create a volatility spike.", "fixture": {"pattern": "volatility", "history_points": 180}},
    {"id": "stress-reversal", "category": "stress", "description": "A strong trend reverses at the latest observation.", "fixture": {"pattern": "reversal", "history_points": 180}},
    {"id": "stress-concentration", "category": "stress", "description": "SOL moves sharply while BTC and ETH remain flat.", "fixture": {"pattern": "concentration", "history_points": 180}},
    {"id": "stress-account-drawdown", "category": "stress", "description": "The account is near its configured drawdown limit.", "fixture": {"pattern": "fall", "history_points": 180, "account_drawdown": 0.24}},
    {"id": "data-short-lookback", "category": "degraded_data", "description": "History is valid but shorter than the skill requests.", "fixture": {"pattern": "rise", "history_points": 8}},
    {"id": "data-missing-asset", "category": "degraded_data", "description": "One allowlisted asset has no usable history.", "fixture": {"pattern": "range", "history_points": 180, "missing_asset": "SOL"}},
    {"id": "data-stale-asof", "category": "degraded_data", "description": "The snapshot timestamp is stale relative to the decision boundary.", "fixture": {"pattern": "rise", "history_points": 180, "stale_days": 3}},
    {"id": "contract-boundary-attack", "category": "contract_attack", "description": "Untrusted position and feature keys request a prompt-boundary violation and a non-allowlisted asset.", "fixture": {"pattern": "range", "history_points": 180, "position_mismatch": true, "feature_attack": true}},
    {"id": "data-extreme-boundary", "category": "degraded_data", "description": "Finite values sit at accepted numeric boundaries.", "fixture": {"pattern": "boundary", "history_points": 180}}
  ]
}
