{
  "schema_version": 1,
  "arena": {
    "id": "blueprint-build",
    "display_name": "Blueprint Build",
    "category": "architecture-implementation",
    "mode": "build_race"
  },
  "network": {
    "cidr": "10.84.0.0/24",
    "allow_public_internet": false
  },
  "rules": {
    "duration_seconds": 900,
    "tick_ms": 2000,
    "healthy_resources_per_tick": 0,
    "minimum_territories": 3
  },
  "build": {
    "stop_on_first_durable": true,
    "completion_milestone": "host-reboot",
    "milestones": [
      {
        "id": "gateway-ready",
        "display_name": "Gateway Ready",
        "depends_on": [],
        "verifier": "verify/gateway-ready.sh",
        "operation": "observe",
        "timeout_seconds": 8,
        "points": 10,
        "required": true
      },
      {
        "id": "accept-under-stop",
        "display_name": "Accept While Worker Stopped",
        "depends_on": [
          "gateway-ready"
        ],
        "verifier": "verify/accept-under-stop.sh",
        "operation": "observe",
        "timeout_seconds": 20,
        "points": 20,
        "required": true
      },
      {
        "id": "recover-blueprint",
        "display_name": "Recover Queued Work",
        "depends_on": [
          "accept-under-stop"
        ],
        "verifier": "verify/recover-blueprint.sh",
        "operation": "observe",
        "timeout_seconds": 35,
        "points": 25,
        "required": true
      },
      {
        "id": "service-restart",
        "display_name": "Independent Service Restart",
        "depends_on": [
          "recover-blueprint"
        ],
        "verifier": "verify/service-restart.sh",
        "operation": "observe",
        "timeout_seconds": 25,
        "points": 20,
        "required": true
      },
      {
        "id": "host-reboot",
        "display_name": "Host Reboot",
        "depends_on": [
          "service-restart"
        ],
        "verifier": "verify/host-reboot.sh",
        "operation": "host_reboot",
        "timeout_seconds": 40,
        "points": 25,
        "required": true
      }
    ]
  },
  "visualization": {
    "nodes": [
      {
        "id": "client",
        "display_name": "Client",
        "kind": "client",
        "milestone": null,
        "x": 5,
        "y": 28
      },
      {
        "id": "edge",
        "display_name": "Edge Gateway",
        "kind": "proxy",
        "milestone": "gateway-ready",
        "x": 23,
        "y": 28
      },
      {
        "id": "api",
        "display_name": "API Receiver",
        "kind": "service",
        "milestone": "accept-under-stop",
        "x": 42,
        "y": 28
      },
      {
        "id": "queue",
        "display_name": "Durable Queue",
        "kind": "queue",
        "milestone": "recover-blueprint",
        "x": 61,
        "y": 28
      },
      {
        "id": "worker",
        "display_name": "Worker",
        "kind": "worker",
        "milestone": "recover-blueprint",
        "x": 80,
        "y": 28
      },
      {
        "id": "results",
        "display_name": "Result Store",
        "kind": "storage",
        "milestone": "service-restart",
        "x": 80,
        "y": 72
      },
      {
        "id": "host",
        "display_name": "NixOS Host",
        "kind": "host",
        "milestone": "host-reboot",
        "x": 42,
        "y": 72
      }
    ],
    "links": [
      {
        "from": "client",
        "to": "edge",
        "kind": "traffic",
        "label": "HTTP :8080"
      },
      {
        "from": "edge",
        "to": "api",
        "kind": "traffic",
        "label": "route"
      },
      {
        "from": "api",
        "to": "queue",
        "kind": "queue",
        "label": "accept"
      },
      {
        "from": "queue",
        "to": "worker",
        "kind": "queue",
        "label": "claim"
      },
      {
        "from": "worker",
        "to": "results",
        "kind": "storage",
        "label": "complete"
      },
      {
        "from": "results",
        "to": "api",
        "kind": "storage",
        "label": "read"
      },
      {
        "from": "host",
        "to": "edge",
        "kind": "lifecycle",
        "label": null
      }
    ]
  },
  "fog_of_war": {
    "player_brief": "brief.md",
    "player_artifacts": [
      "blueprint.png"
    ],
    "hide_topology_until_observed": true,
    "guest_leak_audit": {
      "scan_paths": [
        "/etc",
        "/opt",
        "/root",
        "/var/lib"
      ],
      "forbidden_strings": [
        "accept-under-stop.sh",
        "recover-blueprint.sh",
        "controller-owned blueprint evidence",
        "blueprint oracle"
      ]
    }
  },
  "classes": [
    {
      "id": "blueprint-builder",
      "display_name": "Blueprint Builder",
      "strengths": [],
      "weaknesses": [],
      "resources": {
        "vcpus": 1,
        "memory_mib": 768,
        "disk_mib": 2048
      }
    }
  ],
  "territories": [
    {
      "id": "blueprint-one",
      "class": "blueprint-builder",
      "nixos_config": ".#nixosConfigurations.blueprint-one.config.system.build.vm",
      "service": {
        "port": 8080,
        "path": "/health",
        "expected_status": 200,
        "expected_body": "ready",
        "health": {
          "poll_interval_ms": 1000,
          "consecutive_failures": 3,
          "recovery_window_seconds": 60
        }
      }
    },
    {
      "id": "blueprint-two",
      "class": "blueprint-builder",
      "nixos_config": ".#nixosConfigurations.blueprint-two.config.system.build.vm",
      "service": {
        "port": 8080,
        "path": "/health",
        "expected_status": 200,
        "expected_body": "ready",
        "health": {
          "poll_interval_ms": 1000,
          "consecutive_failures": 3,
          "recovery_window_seconds": 60
        }
      }
    },
    {
      "id": "blueprint-three",
      "class": "blueprint-builder",
      "nixos_config": ".#nixosConfigurations.blueprint-three.config.system.build.vm",
      "service": {
        "port": 8080,
        "path": "/health",
        "expected_status": 200,
        "expected_body": "ready",
        "health": {
          "poll_interval_ms": 1000,
          "consecutive_failures": 3,
          "recovery_window_seconds": 60
        }
      }
    }
  ],
  "agents": [
    {
      "id": "blueprint-one-agent",
      "territory": "blueprint-one",
      "adapter": "oracle-blueprint",
      "model": "oracle",
      "reasoning_effort": "default",
      "budget": {
        "resource_units": 1,
        "max_cost_microusd": null
      }
    },
    {
      "id": "blueprint-two-agent",
      "territory": "blueprint-two",
      "adapter": "oracle-blueprint",
      "model": "oracle",
      "reasoning_effort": "default",
      "budget": {
        "resource_units": 1,
        "max_cost_microusd": null
      }
    },
    {
      "id": "blueprint-three-agent",
      "territory": "blueprint-three",
      "adapter": "oracle-blueprint",
      "model": "oracle",
      "reasoning_effort": "default",
      "budget": {
        "resource_units": 1,
        "max_cost_microusd": null
      }
    }
  ]
}