Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:

test:
runs-on: ubuntu-latest
timeout-minutes: 20
timeout-minutes: 40
strategy:
matrix:
python: ["3.11", "3.12"]
Expand Down
17 changes: 17 additions & 0 deletions Dockerfile.v3
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# The AirOps v3 env: the airops-v3-day MCP server with the b6-v3 pack, on port 18765.
# Build: agent-env airops-v3 setup (docker build -f Dockerfile.v3 -t agentenv-airops-v3-env .)
FROM python:3.12-slim
LABEL org.opencontainers.image.source="https://github.com/earakely-scale/agentenv-airops-plugin" \
org.opencontainers.image.licenses="Apache-2.0" \
org.opencontainers.image.description="AirOpsEnv v3 as an AgentEnv environment. Built from public U.S. records: BTS on-time data of every carrier, the FAA registry, FAA Command Center advisories and NWS METARs, SPECIs and TAFs via the Iowa Environmental Mesonet."
ENV PYTHONUNBUFFERED=1 PIP_NO_CACHE_DIR=1 PIP_DISABLE_PIP_VERSION_CHECK=1 AIROPS_V3_TASKS=/app/data/b6-v3
RUN pip install "agentenv-framework-protocol==0.1.338" "fastmcp==3.4.8" "mcp==1.30.0" "pydantic==2.13.5" "tzdata" \
"httpx==0.28.1" "numpy==2.5.4" "pandas==3.0.6" "highspy==1.15.1" "airportsdata==20260905"
WORKDIR /app
COPY LICENSE NOTICE /app/
COPY data/b6-v3 /app/data/b6-v3
COPY src/agentenv_airops /app/agentenv_airops
RUN useradd --create-home --uid 1000 airops
USER airops
EXPOSE 18765
CMD ["python", "-m", "agentenv_airops.v3day.server"]
10 changes: 10 additions & 0 deletions Dockerfile.v3.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
*
!LICENSE
!NOTICE
!data/b6-v3
!src/agentenv_airops
src/agentenv_airops/data
src/agentenv_airops/web
src/agentenv_airops/bundles
**/__pycache__
**/*.pyc
24 changes: 24 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -391,6 +391,30 @@ The [replay Space](https://huggingface.co/spaces/earakely-scale/AirOpsEnv-AgentE
viewer (`web/`) under `viewer/`, reading the episodes straight from the dataset's resolve URLs at the tag, which
huggingface.co serves with CORS headers. `--space-out` assembles it and `--space-repo` pushes it.

## AirOpsEnv v3: the realism layers

v3 plays the same whole-network storm days from 04:00 inside the FAA's programs, with the constraints v2's world
leaves out, each enforced alike in the sim and the hindsight MIP: hub departure caps from every carrier's BTS
pushbacks, ramp closures from lightning at the field (METAR and SPECI thunderstorms, as departure and gate-in rate cuts
at a rate fitted on train dates) and outstation arrival caps. The desk sees them only as it could: caps 4 hours ahead,
a closure once it begins, and the FAA advisories, METARs, SPECIs and TAFs at their delivery lags, with a watch each hour
and one more on each event. One `airops-llm` desk plays a day on `airops-v3-day` and is graded as v1 is, against the
hindsight optimum. The pack is b6-v3 (`data/b6-v3`: 94 storm dates, 24 eval and 70 train, and 2 controls, with each
date's anchor and follower costs stored, so a load never waits on a solve); `docs/v3/DESIGN.md` and
`docs/v3/REPORT.md` give the design and its check against v2.

```bash
agent-env airops-v3 setup --agent # builds airops-v3-day (Dockerfile.v3) and airops-llm
agent-env run airops-v3 --task wiring-noplay # the first eval date flown with no change, then the grade
agent-env run airops-v3 --task b6-20240630-0400 --model anthropic/claude-sonnet-5-5
agent-env hf run earakely-scale/AirOpsEnv-AgentEnv --bundle airops-v3 --task wiring-noplay
```

The dataset holds the bundle `airops-v3` (the eval dates and `wiring-noplay`) from the first release
`scripts/hub_dataset.py` builds with it. `agent-env airops-v3 tasks --split train` writes the training dates as a
bundle; `scripts/v3_pack.py --bases none --refs` builds the pack and `scripts/ship_v3_pack.py` ships it as
`data/b6-v3`.

## AirOpsEnv v1: one desk at one hub

v1, released in v0.2.0, is one operations desk at one hub in the 3 to 6 hours of a storm day where planning matters
Expand Down
778 changes: 778 additions & 0 deletions data/b6-v3/manifest.json

Large diffs are not rendered by default.

Loading
Loading