#ModelScoreStepsIn tokOut tokAvg costAvg time
1Claude Fable 5.1
0.8369
±0.053
25377.2M322k$46.434.6h
2GLM-5.3
0.4371
±0.154
483217.2M576k$69.0616.6h
3Kimi K3
0.4198
±0.122
423148.4M427k$59.0514.8h
4Grok 4.6
0.2653
±0.205
16331.1M358k$32.223.2h
5Gemini 3.7 Flash
0.2262
±0.331
17931.6M273k$4.931.4h
6GPT-5.6
0.1334
±0.212
24245.3M182k$36.562.5h
7Muse Spark 1.2
0.0515
±0.050
31599.6M492k$22.744.5h
8Qwen3.8-Max
0.0000
±0.000
488142.7M1.2M$43.6018.3h
9DeepSeek V4 Flash Exp
0.0000
±0.000
474203.2M574k$3.6815.3h
10Inkling
0.0000
±0.000
1265.3M37k$5.220.9h

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.