{
  "report_version": "0.2",
  "generated_at_utc": "2026-05-02T01:55:28+00:00",
  "run_folder": "/home/s/psydust/PsydustDemo/PsydustDemo/benchmark_runs/kite_v0_1/run_003",
  "scenario": {
    "scenario_id": "kite_resistance_v0_1",
    "scenario_name": "Kite Resistance Benchmark v0.1",
    "version": "0.1",
    "engine": "Unity",
    "frozen_scene": "Assets/Scenes/KiteResistanceBenchmark_v0_1.unity",
    "test_type": "anti_cheese",
    "exploit_pattern": "kiting",
    "controllers_tested": [
      "baseline",
      "psydust_anti_kite_chaser_v0_1"
    ]
  },
  "baseline_metrics": {
    "controller": "baseline",
    "duration_seconds": 11.5000725,
    "tick_count": 575,
    "damage_landed": 0,
    "hits_landed": 0,
    "time_to_first_hit_seconds": null,
    "exploit_success": true,
    "average_distance_to_player": 5.66729927,
    "max_distance_to_player": 7.15245056,
    "stuck_ticks": 0,
    "recovery_mode_activations": null,
    "player_hp_remaining": 100,
    "round_number": 1,
    "round_active": false
  },
  "psydust_metrics": {
    "controller": "psydust_anti_kite_chaser_v0_1",
    "duration_seconds": 11.5000725,
    "tick_count": 575,
    "damage_landed": 100,
    "hits_landed": 4,
    "time_to_first_hit_seconds": 0.939999282,
    "exploit_success": false,
    "average_distance_to_player": 1.79948282,
    "max_distance_to_player": 7.20000076,
    "stuck_ticks": 0,
    "recovery_mode_activations": 0,
    "player_hp_remaining": 0,
    "round_number": 1,
    "round_active": false
  },
  "trace_summary": {
    "input_trace.jsonl": {
      "path": "input_trace.jsonl",
      "present": true,
      "line_count": 575,
      "valid_json_lines": 575,
      "invalid_json_lines": 0
    },
    "psydust_output_trace.jsonl": {
      "path": "psydust_output_trace.jsonl",
      "present": true,
      "line_count": 575,
      "valid_json_lines": 575,
      "invalid_json_lines": 0
    }
  },
  "output_contract": {
    "contract_id": "kite_v0_1_psydust_output_contract",
    "scenario_id": "kite_resistance_v0_1",
    "trace_file": "psydust_output_trace.jsonl",
    "vector_field": "psydust_output_vector",
    "source_notes": [
      "unity_plugin/psydust_plugin.h documents output[0] and output[1] as movement intent, approximately -1..1.",
      "unity_plugin/psydust_plugin.c documents AGGRESSIVE mode style as 1.5x base, so movement intent can honestly exceed 1.0 without being invalid for this benchmark.",
      "Assets/Psydust/Runtime/ActionAdapter.cs normalizes movement output into direction and clamps aggression/caution with Mathf.Clamp01 when consumed."
    ],
    "components": [
      {
        "index": 0,
        "key": "component_0",
        "name": "move_x",
        "min": -1.5,
        "max": 1.5,
        "description": "X-axis movement intent from psydust_tick. Allows AGGRESSIVE 1.5x style boost documented in the native plugin."
      },
      {
        "index": 1,
        "key": "component_1",
        "name": "move_z",
        "min": -1.5,
        "max": 1.5,
        "description": "Z-axis movement intent from psydust_tick. Allows AGGRESSIVE 1.5x style boost documented in the native plugin."
      },
      {
        "index": 2,
        "key": "component_2",
        "name": "aggression",
        "min": 0.0,
        "max": 1.0,
        "description": "Commit-to-attack scalar. Unity consumption clamps this value to 0..1 with Mathf.Clamp01."
      },
      {
        "index": 3,
        "key": "component_3",
        "name": "caution",
        "min": 0.0,
        "max": 1.0,
        "description": "Retreat/avoid scalar. Unity consumption clamps this value to 0..1 with Mathf.Clamp01."
      }
    ]
  },
  "output_bounds": {
    "status": "verified",
    "ticks_checked": 575,
    "invalid_ticks": 0,
    "min_value": -0.2890625,
    "max_value": 1.26953125,
    "bound_min": -1.5,
    "bound_max": 1.5,
    "contract_path": "/home/s/psydust/benchmark_contracts/kite_v0_1/output_contract.json",
    "contract_id": "kite_v0_1_psydust_output_contract",
    "component_bounds": [
      {
        "index": 0,
        "key": "component_0",
        "name": "move_x",
        "min": -1.5,
        "max": 1.5,
        "description": "X-axis movement intent from psydust_tick. Allows AGGRESSIVE 1.5x style boost documented in the native plugin."
      },
      {
        "index": 1,
        "key": "component_1",
        "name": "move_z",
        "min": -1.5,
        "max": 1.5,
        "description": "Z-axis movement intent from psydust_tick. Allows AGGRESSIVE 1.5x style boost documented in the native plugin."
      },
      {
        "index": 2,
        "key": "component_2",
        "name": "aggression",
        "min": 0.0,
        "max": 1.0,
        "description": "Commit-to-attack scalar. Unity consumption clamps this value to 0..1 with Mathf.Clamp01."
      },
      {
        "index": 3,
        "key": "component_3",
        "name": "caution",
        "min": 0.0,
        "max": 1.0,
        "description": "Retreat/avoid scalar. Unity consumption clamps this value to 0..1 with Mathf.Clamp01."
      }
    ],
    "notes": "All psydust_output_vector values are finite numeric values within their declared per-component contract bounds."
  },
  "replay_config": {
    "present": true,
    "path": "/home/s/psydust/PsydustDemo/PsydustDemo/benchmark_runs/kite_v0_1/run_003/replay_config.json",
    "seed": 42,
    "style": 1,
    "runtime_init": "psydust_init_demo",
    "runtime_version": "psydust-plugin-1.0.0",
    "thresholds": {
      "slack_low": 0.189999998,
      "slack_high": 0.25,
      "sat_danger": 0.75
    },
    "output_contract_path": "benchmark_contracts/kite_v0_1/output_contract.json",
    "reset_timing_note": "KiteComparisonBootstrap teleports actors, calls PsydustAntiCheeseEnemy.ResetBrain(seed), then atomic replay records are captured inside PsydustAntiCheeseEnemy.FixedUpdate immediately around psydust_tick."
  },
  "replay_result": {
    "status": "verified",
    "ticks_checked": 575,
    "mismatched_ticks": 0,
    "original_output_hash": "f40a502e77850e3073733232798099f6656f70facc025990c038018670f8e841",
    "replayed_output_hash": "f40a502e77850e3073733232798099f6656f70facc025990c038018670f8e841",
    "notes": "Replay matched all recorded Psydust output vectors using the native demo runtime."
  },
  "verification": {
    "metrics_status": "verified",
    "trace_presence_status": "verified",
    "replay_determinism_status": "verified",
    "output_bounds_status": "verified",
    "certificate_level": "P3 - Replay Determinism Verified",
    "scenario_result": "psydust_landed_more_damage",
    "verification_note": "Internal Psydust benchmark report, not third-party certification."
  },
  "limitations": [
    "This is an internal Psydust benchmark report, not third-party certification.",
    "Replay determinism is only verified when replay_result.json has status verified.",
    "The report summarizes the selected run folder only and does not invent missing evidence.",
    "The report does not claim Foundry-generated behavior.",
    "The report does not claim production readiness."
  ]
}
