#ModelScoreStepsIn tokOut tokAvg costAvg time
1Claude Opus 5.5
0.9013
±0.134
540230.4M715k$65.1715.2h
2Claude Fable 5
0.8532
±0.069
27487.6M409k$117.989.6h
3Claude Fable 5.1
0.8369
±0.053
25377.2M322k$46.434.6h
4Claude Opus 5
0.8349
±0.106
320137.3M529k$88.4111.8h
5GPT-6 Astra
0.7400
±0.056
774304.0M710k$637.376.1h
6Claude Sonnet 5.5
0.6852
±0.223
536232.1M953k$58.8011.9h
7Gemini 4 Argon
0.4827
±0.477
12829.8M291k$13.52*1.9h
8GLM-5.3
0.4371
±0.154
483217.2M576k$69.0616.6h
9Kimi K3
0.4198
±0.122
423148.4M427k$59.0514.8h
10Grok 4.6
0.2653
±0.205
16331.1M358k$32.223.2h
11Claude Haiku 5.5
0.2313
±0.154
333140.1M749k$9.055.7h
12Gemini 3.7 Flash
0.2262
±0.331
17931.6M273k$4.931.4h
13Gemini 3.8 Flash
0.2216
±0.296
25959.4M264k$6.801.5h
14Qwen3.8-Max-0902
0.1400
±0.192
483168.9M1.5M$54.8519.9h
15GPT-5.6 Sol
0.1334
±0.212
24245.3M182k$36.562.5h
16Grok 4.7
0.1258
±0.163
23360.5M275k$61.461.7h
17Muse Spark 1.3
0.0871
±0.079
35978.3M282k$67.359.2h
18GLM-5.3 Flash
0.0828
±0.130
451168.9M452k$5.939.8h
19Muse Spark 1.2
0.0515
±0.050
31599.6M492k$22.744.5h
20Qwen3.8-Max
0.0000
±0.000
488142.7M1.2M$43.6018.3h
21DeepSeek V4 Flash Vision Exp
0.0000
±0.000
474203.2M574k$3.6815.3h
22Inkling
0.0000
±0.000
1265.3M37k$5.220.9h

*Gemini 4 Argon: Cache hit rate is much lower due to a non-production setting.

Background

Astrometry is the problem of figuring out exactly where on the sky a telescope image points. Blind plate solving, recovering a World Coordinate System (WCS) with no prior pointing hint, means extracting stars from noisy pixels, matching their geometric patterns against a full-sky reference catalog, and fitting a projection that maps pixels to celestial coordinates, all while handling rotation, unknown plate scale, vignetting, and survey-to-survey differences in depth and resolution.

Production solvers took years of engineering to make this robust. Here the agent must build one from scratch that generalizes across surveys: the development suite spans native and cropped SDSS frames, deliberately degraded observations, a coarse mixed optical/infrared campaign, and a synthetic field that can only be solved by genuinely blind search over the full-sky Gaia DR3 catalog.

Task

Implement /app/astrometry/localize.py, invoked without network access as python /app/astrometry/localize.py --input-dir /path/to/campaign --output-dir /path/to/output. Each campaign supplies a campaign.json, FITS images, and a star catalog that may be a small field-local extract or the 1.35 GB full-sky Gaia catalog.

  • Write wcs/<image_id>.json for every image: a TAN celestial projection with ctype, crpix, crval, and a 2×2 cd matrix.
  • Write registrations.jsonwith one 3×3 pixel-to-pixel transform per unordered overlapping image pair (no duplicate inverse entries).
  • Write mosaic.fits (a finite two-dimensional image with a celestial WCS header) plus a run_summary.json.
  • Each campaign, including catalog indexing, must complete within 15 minutes under bounded memory; the solver must not depend on fixed sky coordinates, image IDs, or catalog row order.

What The Agent Gets

An example campaign at /app/example_campaign/ and five public development campaigns under /app/development_suite/campaigns/, each with public truth (truth/truth.json) containing reference WCS parameters and catalog samples with expected pixel coordinates: native SDSS frames, clean offset crops, degraded crops with noise and vignetting, a coarse mixed-survey campaign of rotated optical and infrared observations, and a synthetic star field wired to the full-sky catalog.

  • The Gaia DR3 global catalog (1.35 GB CSV) and a geometric index staged read-only at /data/astrometry/.
  • A structural output checker, python /app/astrometry/validate_outputs.py, that verifies artifact schemas without estimating scientific quality.
  • Python 3.13 with NumPy, SciPy, and Astropy preinstalled; the machine is offline and the evaluation campaigns use different sky fields than the public suite.

Verification

A root-only verifier runs the submitted solver as the unprivileged agent user on sealed real campaigns covering sky fields never shown to the agent, plus a metamorphic exact-invariance case: a transformed copy of a sealed campaign that must produce equivalent results, catching solvers that key on incidental identifiers. Solver syscalls are audited with strace for network, reward, or hidden-truth access.

  • Each campaign scores completeness (the fraction of images localized, raised to a per-campaign power) times quality, times a runtime multiplier. Quality is a weighted geometric mean of WCS accuracy (0.55, reprojection error against truth star positions in arcseconds), registration residuals (0.30, median pixel error of submitted transforms), and mosaic fidelity (0.15).
  • Runtime earns full credit at 15 s/image and falls to its floor by 150 s/image; a correct slow solver keeps partial credit. Each campaign has a 15-minute solver timeout.
  • Zeroed outright: no images localized, missing or schema-invalid artifacts, safeguard violations flagged by the syscall audit, or an incomplete sealed campaign set.

Environment

Base imagepython:3.13-slim-trixie
Tools availablePython 3
Compute16 CPUs · 128 GB RAM
Time limit20h

References

  • Gaia Data Release 3 (CC BY-NC 3.0 IGO): Catalog rows for the full-sky star catalog and geometric index. Credit: ESA/Gaia/DPAC.
  • Sloan Digital Sky Survey DR17 (Public domain (data); CC BY (web imagery)): Frames used as transformed cutouts in the real-image campaigns.
  • Digitized Sky Survey II (Copyrighted (Caltech/Palomar; AAO/ROE)): Cutouts in the mixed-survey campaign, retrieved through the CDS hips2fits service; used for research and education, with commercial reuse requiring permission from the survey holders.
  • Two Micron All Sky Survey (2MASS): Infrared cutouts in the mixed-survey campaign, retrieved through the CDS hips2fits service. 2MASS is a joint project of the University of Massachusetts and IPAC/Caltech, funded by NASA and NSF.