Skip to content

Publish v3 as the airops-v3 bundle on the b6-v3 pack - #3

Open
agutmanstein-scale wants to merge 4 commits into
earakely-scale:mainfrom
agutmanstein-scale:v3/hf-bundle
Open

agutmanstein-scale wants to merge 4 commits into
earakely-scale:mainfrom
agutmanstein-scale:v3/hf-bundle

Conversation

@agutmanstein-scale

@agutmanstein-scale agutmanstein-scale commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Stacked on #2. Until #2 merges, this PR also shows #2's 3 commits; review only the last one (18c5927).

Motivation

This publishes v3 the way v2's airops-occ is published: a packaged pack, its own env image, setup/tasks commands and a bundle in the dataset. With it, agent-env hf run earakely-scale/AirOpsEnv-AgentEnv --bundle airops-v3 plays a v3 day from the next release.

What's in it

  • data/b6-v3 (6 MB): the v3 pack rebuilt on 0.3.2 (94 storm dates: 24 eval and 70 train; plus 2 controls; from 04:00).
    • tasks.jsonl.gz (mtime 0), refs.json with each task's anchor and follower costs, and the task digest each one ran on.
    • A manifest naming the commit and inputs it was built from.
    • scripts/ship_v3_pack.py writes it from a v3_pack.py --refs folder, and refuses a task without a stored anchor run on that very task.
  • Dockerfile.v3 (and its dockerignore): airops-v3-day with b6-v3, on Dockerfile.occ's base image and dependency pins.
  • agent-env airops-v3 (v3day/cli.py, entry points airops-v3):
    • setup [--agent] builds and registers the env, and airops-llm with --agent.
    • tasks writes the bundle: one task per day, each load carrying its stored costs so it never waits on a solve, v1's verifier (it reads done, audit and reward, which v3's data/get reports), and wiring-noplay.
    • The package ships the eval days as bundles/airops-v3.
  • scripts/hub_dataset.py: adds bundles/airops-v3 and its needs to the card's agentenv table (--v3-pack, default b6-v3). Nothing is pushed until you run it with --repo and --tag.
  • load_tasks reads tasks.jsonl.gz. The README gets a v3 section.

Test plan

  • pytest: 1221 passed, 13 skipped.
    • New: tests/v3day/test_v3_bundle.py, which checks that the packaged bundle is byte for byte what generate writes, and that every shipped task's stored anchor ran on that task.
    • The hub dry build now checks the v3 bundle and its card entry. test_cli_imports covers airops-v3.
  • Real run on the box:
    • agent-env airops-v3 setup built and registered airops-v3-day.
    • agent-env run airops-v3 --task wiring-noplay ran all 5 steps (deploy, load, clock, end-day, grade) in 28.5 s and graded 0.693. That is the do-nothing grade: the day flown with no change.
  • The pack matches this branch's code: two dates rebuilt from scratch on this branch (v3_pack.py --resume --only 2022-12-15,2024-06-30) give the shipped lines byte for byte.
  • Not run: a day played by a model.

Security impact

None: public inputs only, no credentials. Nothing is published to the Hub by this PR.

🤖 Generated with Claude Code

agutmanstein-scale and others added 4 commits October 20, 2026 16:09
v3 (fork PRs #1-#12, tag v3.0) replayed onto Edgar's main at 0ac85d2 as one
commit: his sim.execute became the Dispatch state machine with crew pools, and
every v3 code unit edited the same dispatch loop.

- sim: departure caps, ramp closures, outstation arrival caps, reserve grants
  and the desk's view of them move into Dispatch; pinned flights count in the
  layers' rows at the start and again after `switch`.
- mip: v3's rows and reserve columns beside Edgar's flat pricing (a reserve-
  backed auto-cancel prices flat too under `flat`).
- network: v3's bases and layers beside the 04:00 start and MIN_CONTROLLED.
- v3_pack: a date the build's rules leave out is kept on --resume; only an
  error is rebuilt.
- flow.sources imports PIL only where it reads radar, so the layers (and the
  occ CLI through them) import on a clean install.
- tests: from 04:00 the slice date has several JFK closures and Edgar's crew
  model times out one leg; the pack test takes four winter months, as v2's
  split trains only events without an eval date.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
main's push runs have been cancelled at the 20-minute limit since 0.3.2's
tests landed (five in a row from 2026-10-20 08:03Z), with no test failing;
a passing leg takes 15-19 minutes, so whether a run finishes was down to the
runner.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- data/b6-v3: the rebuilt v3 pack (94 storm dates, 2 controls, from 04:00)
  gzipped, with each task's stored anchor and follower costs and a manifest;
  scripts/ship_v3_pack.py writes it from a v3_pack.py --refs folder.
- `agent-env airops-v3 setup` builds Dockerfile.v3 (airops-v3-day with b6-v3)
  and registers it, --agent airops-llm too; `airops-v3 tasks` writes the
  bundle: one task per day, each load carrying its stored costs, v1's
  verifier, wiring-noplay. The package ships the eval days as bundles/airops-v3.
- hub_dataset.py adds bundles/airops-v3 and its needs to the dataset card, so
  `agent-env hf run --bundle airops-v3` plays it from the next release.
- load_tasks reads tasks.jsonl.gz.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant