{
  "schema_version": 1,
  "arena": {
    "id": "durable-job-queue",
    "display_name": "Durable Job Queue",
    "mode": "build_race"
  },
  "network": {
    "cidr": "10.79.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": "service-up",
        "display_name": "API and Worker Up",
        "depends_on": [],
        "verifier": "verify/service-up.sh",
        "operation": "observe",
        "timeout_seconds": 5,
        "points": 10,
        "required": true
      },
      {
        "id": "recover-accepted",
        "display_name": "Recover Accepted Backlog",
        "depends_on": [
          "service-up"
        ],
        "verifier": "verify/recover-accepted.sh",
        "operation": "observe",
        "timeout_seconds": 35,
        "points": 25,
        "required": true
      },
      {
        "id": "process-new",
        "display_name": "Process New Job",
        "depends_on": [
          "recover-accepted"
        ],
        "verifier": "verify/process-new.sh",
        "operation": "observe",
        "timeout_seconds": 35,
        "points": 20,
        "required": true
      },
      {
        "id": "worker-restart",
        "display_name": "Worker Restart",
        "depends_on": [
          "process-new"
        ],
        "verifier": "verify/worker-restart.sh",
        "operation": "observe",
        "timeout_seconds": 15,
        "points": 20,
        "required": true
      },
      {
        "id": "host-reboot",
        "display_name": "Host Reboot",
        "depends_on": [
          "worker-restart"
        ],
        "verifier": "verify/host-reboot.sh",
        "operation": "host_reboot",
        "timeout_seconds": 30,
        "points": 25,
        "required": true
      }
    ]
  },
  "visualization": {
    "nodes": [
      {
        "id": "client",
        "display_name": "Client",
        "kind": "client",
        "milestone": null,
        "x": 7,
        "y": 25
      },
      {
        "id": "api",
        "display_name": "Job API",
        "kind": "service",
        "milestone": "service-up",
        "x": 31,
        "y": 25
      },
      {
        "id": "queue",
        "display_name": "Durable Queue",
        "kind": "queue",
        "milestone": "recover-accepted",
        "x": 57,
        "y": 25
      },
      {
        "id": "worker",
        "display_name": "Worker",
        "kind": "worker",
        "milestone": "process-new",
        "x": 83,
        "y": 25
      },
      {
        "id": "supervisor",
        "display_name": "Worker Unit",
        "kind": "service",
        "milestone": "worker-restart",
        "x": 42,
        "y": 75
      },
      {
        "id": "host",
        "display_name": "NixOS Host",
        "kind": "host",
        "milestone": "host-reboot",
        "x": 75,
        "y": 75
      }
    ],
    "links": [
      {
        "from": "client",
        "to": "api",
        "kind": "traffic",
        "label": "HTTP"
      },
      {
        "from": "api",
        "to": "queue",
        "kind": "queue",
        "label": "enqueue"
      },
      {
        "from": "queue",
        "to": "worker",
        "kind": "queue",
        "label": "claim"
      },
      {
        "from": "supervisor",
        "to": "worker",
        "kind": "lifecycle",
        "label": null
      },
      {
        "from": "host",
        "to": "supervisor",
        "kind": "lifecycle",
        "label": null
      }
    ]
  },
  "classes": [
    {
      "id": "queue-builder",
      "display_name": "Queue Builder",
      "strengths": [],
      "weaknesses": [],
      "resources": {
        "vcpus": 1,
        "memory_mib": 768,
        "disk_mib": 2048
      }
    }
  ],
  "territories": [
    {
      "id": "queue-one",
      "class": "queue-builder",
      "nixos_config": "./arenas/durable-job-queue#nixosConfigurations.queue-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": "queue-two",
      "class": "queue-builder",
      "nixos_config": "./arenas/durable-job-queue#nixosConfigurations.queue-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": "queue-three",
      "class": "queue-builder",
      "nixos_config": "./arenas/durable-job-queue#nixosConfigurations.queue-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": "deepseek-queue-builder",
      "territory": "queue-two",
      "adapter": "claux",
      "model": "deepseek/deepseek-v4-flash-0731",
      "reasoning_effort": "high",
      "budget": {
        "resource_units": 900,
        "max_cost_microusd": null
      }
    },
    {
      "id": "luna-queue-builder",
      "territory": "queue-three",
      "adapter": "claux",
      "model": "openai/gpt-5.6-luna",
      "reasoning_effort": "high",
      "budget": {
        "resource_units": 900,
        "max_cost_microusd": null
      }
    },
    {
      "id": "glm-queue-builder",
      "territory": "queue-one",
      "adapter": "claux",
      "model": "z-ai/glm-5.2",
      "reasoning_effort": "high",
      "budget": {
        "resource_units": 900,
        "max_cost_microusd": null
      }
    }
  ]
}