{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://tradecat.local/contracts/tradecat-auto-paper-autonomy-profile.schema.json",
  "title": "TradeCat Auto Paper Autonomy Profile",
  "description": "Local operator/Agent delegation profile that may supply paper/watch sizing and exits while keeping all real trading, signing, account reads, and credential access disabled.",
  "type": "object",
  "required": ["schema", "schema_version", "enabled", "paper_intent", "exit_plan", "safety"],
  "properties": {
    "schema": {"const": "tradecat_auto.paper_autonomy_profile.v1"},
    "schema_version": {"const": "1.0.0"},
    "ok": {"type": "boolean"},
    "enabled": {"const": true},
    "mode": {"enum": ["paper", "watch"]},
    "holding_horizon": {"enum": ["intraday", "multi_day", "unknown"]},
    "paper_intent": {
      "type": "object",
      "required": ["paper_leverage"],
      "properties": {
        "allow_tradecat_paper_gate_to_decide": {"const": true},
        "requested_margin_usdt": {"type": "number", "exclusiveMinimum": 0},
        "requested_notional_usdt": {"type": "number", "exclusiveMinimum": 0},
        "paper_leverage": {"type": "number", "exclusiveMinimum": 0},
        "requested_leverage": {"type": "number", "exclusiveMinimum": 0},
        "leverage": {"type": "number", "exclusiveMinimum": 0},
        "allow_agent_direction_override": {"type": "boolean"},
        "direction_policy": {
          "enum": [
            "price_momentum_on_conflict",
            "price_momentum",
            "taker_flow",
            "sheet_signal",
            "sheet_signal_or_taker_flow",
            "source_signal"
          ]
        },
        "allow_signal_reject_override": {"type": "boolean"},
        "paper_direction": {"enum": ["LONG", "SHORT"]},
        "direction": {"enum": ["LONG", "SHORT"]},
        "min_signal_score": {"type": "number", "minimum": 0, "maximum": 100},
        "allow_multiple_open_positions_per_symbol": {"type": "boolean"},
        "max_concurrent_positions_per_symbol": {"type": "integer", "minimum": 1},
        "real_order": {"const": false}
      },
      "anyOf": [
        {"required": ["requested_margin_usdt"]},
        {"required": ["requested_notional_usdt"]}
      ],
      "additionalProperties": true
    },
    "exit_plan": {
      "type": "object",
      "properties": {
        "stop_loss_bps": {"type": "number", "exclusiveMinimum": 0},
        "take_profit_bps": {"type": "number", "exclusiveMinimum": 0},
        "max_holding_minutes": {"type": "number", "exclusiveMinimum": 0},
        "exit_rationale": {"type": "string"}
      },
      "anyOf": [
        {"required": ["stop_loss_bps"]},
        {"required": ["take_profit_bps"]},
        {"required": ["max_holding_minutes"]}
      ],
      "additionalProperties": false
    },
    "provenance": {"type": "object", "additionalProperties": true},
    "safety": {
      "type": "object",
      "required": ["public_readonly_market_data", "public_readonly", "paper_or_watch_only", "real_orders", "signed_requests", "reads_api_keys", "binance_account_state"],
      "properties": {
        "public_readonly_market_data": {"const": true},
        "public_readonly": {"const": true},
        "paper_or_watch_only": {"const": true},
        "real_orders": {"const": false},
        "signed_requests": {"const": false},
        "reads_api_keys": {"const": false},
        "binance_account_state": {"const": false}
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": true
}
