v1.3.0
Everything merged since v1.2.0 (#136-#146). Full detail in CHANGELOG.md.
Skill #2 rewritten to Studio's real "new model" wizard
olmoearth-studio-job-config (vendored submodule, bumped to 2imi9/OlmoEarth-Skills@6839f1a) now walks the full wizard in order — Model name, Model type (with the fine-tuned-vs-embeddings framing), Foundation model, Label field, Training data (full vs a proportion), Data split (Spatial recommended), Temporal context, Image sources, Surrounding area, Review. The patch default is corrected 320 -> 640 m, and the skill states the core rule: Studio trains on Ai2's compute — it never asks about local hardware and never reroutes Studio model creation to local training (routing enforced in #142). SkillOpt-validated on the regenerated wizard-faithful benchmark: 0.714 hard / 0.906 soft (the previous skill scores 0.357 on the same targets).
New tools
olmoearth_compare_group(skill #4): compare 2-6 prediction results pairwise + as an ensemble over their shared extent — agreement matrix, consensus fraction, most divergent pair, contested-point hotspots (#145).olmoearth_pixel_value(skill #4): read one result's model output at a point (#136).olmoearth_ensemble_uncertainty(skill #9): ensemble-disagreement confidence across distinct results (#136).- QGIS
.qlrlayer definition + GDAL_WMS/XYZ descriptor + honest user-run COG recipe (skill #11, #136).
Security
- Path-traversal guard: model-controlled tool file I/O confined to a workspace root (
security/paths.py,OLMOEARTH_OUTPUT_ROOT) (#137). - Egress redirect re-validation on litsearch/HF fetchers; arXiv pinned to https (#137).
- Symmetric egress guards on the local and Anthropic LLM clients; QGIS tile-URL host gate (#136, #140).
Fixed
- "Configure a model" routes to the Studio wizard, not local rslearn/compute (#142).
- litsearch no longer overflows the local model's context on multi-call sessions (500-char abstracts, explicit search budget, one-16k-slot serving default) (#144).
- ok-envelope masked tool failures; docs aligned (#139, #140).
Web UI
Docs
docs/SHOWCASE.mdregenerated live on this release tree — every transcript is a real agent-loop run (the skill #2 section embeds the new wizard SKILL.md; the #16 run exercises the new path-guard workspace root).
Verified on the release tree: ruff + mypy clean, 502 tests passing.