spec_version: 1 name: rail_ops type: space runtime: fastapi app: rail_openenv.server:app port: 7860 description: Rail dispatch on Arriva's single-track Groningen - Leeuwarden line (Netherlands) on real January-June 2025 days - hold, short-turn and cancel trains so opposing trains cross safely after real breakdowns, collisions, signal and points failures (and seeded ones drawn from the 2024-2025 disruption record); graded once on submit against the CP-SAT optimum. 45 eval tasks on held-out weeks, chosen for hardness, and a train pack on the other days. version: "0.1.0" variables: RAIL_TASKS_DIR: "" # colon-separated pack directories; defaults to tasks/rail-v1-eval:tasks/rail-v1-train RAIL_MAX_CHECKS: "10" RAIL_MAX_TOOL_CALLS: "24" MAX_CONCURRENT_ENVS: "64" validation: reward: range: [0.0, 1.0] # oracle/solve.py submits the CP-SAT optimum and scores exactly 1.0; no plan scores 0, any rule broken < 0.2 oracle_tolerance: 0.001 floor_margin: 0.5 resources: # pure Python: the grader re-simulates a plan in milliseconds, CP-SAT never runs on the server cpu: 2.0 memory_mb: 2048 disk_mb: 1024 episode_timeout_s: 3600.0 network: mode: no-network capabilities: verifier: kind: reward_channel oracle: form: script location: oracle/solve.py rubric_tree: true task_api: true declared_tools: [get_situation, check_plan, submit_plan] types: tags: [simulation, railway, dispatching, scheduling, operations-research, mcp, real-world-data]