Building a deterministic glacier safety engine before the Fable 5 blackout
How a short burst of pair-programming turned glacier mechanics, weather hindcasts, and validation gates into a provenance-tracked crevasse-hazard evidence system for the Mont Blanc massif.
A few days after Anthropic released Claude Fable 5, the US government ordered the company to suspend access globally over security concerns.
Before access disappeared, I spent several days using it as a programming partner on a project I had wanted for a long time: a deterministic, provenance-tracked crevasse-hazard evidence system for the Mont Blanc massif.
This is the build log: the model architecture, the data pipeline, the validation gates, and the parts where the AI assistance actually mattered.
The problem with "crevasse risk"
If you spend time in glaciated mountains, you know that professionals such as guides, rescue teams, and ski patrols assess crevasse hazard using a mix of memory, recent observations, and weather bulletins. There is no operational tool that unifies the available geospatial measurements.
I wanted to build an application that decomposes "crevasse risk" into actual physical components rather than a single opaque score. The system I designed breaks it down into four parts:
- Structural susceptibility: Where do glacier mechanics favor crevasse formation? Quasi-static, based on months or years of data.
- Open-crevasse likelihood: Is a crevasse likely open at this location right now? Based on structural susceptibility plus observational evidence.
- Concealment and bridge state: Is snow likely hiding crevasses here, and how weak are the snow bridges? Driven by snowpack and forecast weather.
- Forecast evolution: How do the conditions change over the next 6, 12, or 24 hours?
The crucial rule I established early on: No probabilities without labels. Until I have human-digitized crevasse maps to calibrate against, every output remains an explicitly uncalibrated index. The system is designed to be an evidence aggregator for trained professionals, not a go/no-go oracle.
Pair-programming with Fable 5
I started with a stack of glaciology papers: Hambrey & Müller on ice deformation, Vaughan on relating crevasses to surface strain rates, and Reynolds et al. on stress calculations for crevasse depths.
Fable 5 was useful because it could keep the math, the code structure, and the scientific caveats in the same context. That made it practical to turn the papers into a concrete software architecture and an offline Python pipeline.
I built pipeline/crevasse/strain.py to compute the full strain-rate tensor from a published 40-meter monthly surface-velocity archive. The stress formulation mattered, so the implementation uses the full effective strain rate with the vertical term derived from incompressibility.
Then I built pipeline/crevasse/susceptibility.py to map that strain into an uncalibrated susceptibility index. Instead of a binary threshold, I used a log-uniform exceedance over the published crevasse-onset range, from 0.004 to 0.16 a-1.
velocity
DEM
outline
strain.py
Computes the strain-rate tensor, principal extension, shear, and incompressibility-derived vertical term.
ε̇₁
ε̇₂
ε̇zz
susceptibility.py
Scores each cell against the literature crevasse-onset range without calling it a probability.
0.004–0.16 a⁻¹
index 0–1
AP 0.95
base 0.61
layer-*.json
*.meta.json
Leaflet
Selection
I also wrote analytic kernel tests for uniform extension, simple shear, incompressibility, and zero strain under rigid rotation. The rigid-rotation test caught a half-pixel registration bug that would have displaced every advected feature by 20 meters.
Validating the physics
The validation suite became part of the product. The Methods & Validation tab in the Glacier Hazard Lab desktop app reads directly from the JSON artifacts published by the pipeline, so the claims and the charts share the same source.
Here is what the validation numbers actually look like:
Temporal holdout
I ran a strict temporal holdout. I trained the structural susceptibility model on 57 months of velocity data, from 2016 to 2020, and then tested it against the held-out 35 months, from 2021 to 2024, that it had never seen.
Using a strict threshold where held-out principal extension is greater than 0.04 a-1, the massif-wide average precision was 0.95, compared to a no-skill base rate of 0.61. That is a 1.55x skill ratio. I used 800-meter spatial-block cross-validation to check that the result survived spatial separation. It worked across all nine glaciers, showing that strain structure is highly persistent over time.
Strict truth: held-out ε̇₁ > 0.04 a-1
Permissive truth: held-out ε̇₁ > 0.01 a-1
Forecast hindcast
I also ran a 365-day hindcast, from June 2025 to May 2026, comparing the forecast-driven timing guidance against ERA5 reanalysis reality.
For the mid-glacier band of the Mer de Glace at 3077 meters, the overnight minimum temperature mean absolute error was just 1.56 °C, and the refreeze class accuracy was 83.6%. The bridge-weakening index computed from the forecast had a Pearson correlation of r = 0.93 with the index computed from reality. The pipeline accurately predicts when snow bridges will soften, with a softening hour mean absolute error of just 1.11 hours.
Overnight minimum temperature
Bridge-weakening index
Each dot is one forecast day. The diagonal is perfect agreement.
The honest negative
I even published a negative result. I tried using a near-infrared high-pass roughness index from Sentinel-2 to detect crevasses on snow-free ice. It showed absolutely no skill, with AP 0.50 versus a base rate of 0.46, because the snow-free tongue of the Mer de Glace is covered in rocky debris, which is optically rough but not necessarily crevassed. Publishing this failure was a great test of the validation gates doing exactly what they are supposed to do.
The blackout
Then access to Fable 5 disappeared. The US government ordered Anthropic to disable access due to concerns about the model's capabilities in areas like cybersecurity and jailbreaking.
That changed the project context immediately. A tool I had been using for long-context research engineering was no longer available.
Looking back through the Glacier Hazard Lab repository, the useful part was not magic. It was sustained context. I could keep papers, implementation details, tests, UI constraints, and scientific caveats in one working thread long enough to ship a coherent system.
The result is a deterministic, validated pipeline that serves real glacier data to a web application. It still needs calibration against human-digitized crevasse maps, but the architecture is now in place.
I just hope access comes back soon.
Pedro Marques