Ecosystem

27 minutes for a running route — and then the code was gone

2 min read AI-generated

Simon Willison had two running loops built from OpenStreetMap data. The result is right, but he can't see how it got there: compaction had already swallowed the code.

Featured image for "27 minutes for a running route — and then the code was gone"

One prompt, that’s all: “I live at . Figure out 5K and 10K running routes from me that loop from my house. Use OSM data.” Simon Willison typed it into ChatGPT Work with GPT-6 Astra (Max) on Saturday morning.

27 minutes later he had exactly that: an embedded map, plus the routes as downloadable GPX and GeoJSON files.

The path there stays dark

Asked how it had done the work, the model answered: Nominatim to locate the address, Overpass to pull local OpenStreetMap roads and trails, then the loops calculated locally.

Sounds sensible. But the ChatGPT interface gave him no way to see which code actually ran. Willison calls that missing transparency an anti-feature — a feature you’d be better off without.

It got worse when he followed up. By the time he asked for a copy of the Python code, ChatGPT couldn’t produce it: the thread had been compacted in the meantime. The code wasn’t hidden. It was gone.

From that he draws a demand that reaches well past OpenAI: any system that compacts should preserve the pre-compaction text and make it reachable again through agent tool calls.

The map comes from a skill

For the display, the model reached for the visualize skill and wrote a file called /workspace/el-granada-5k-share.html, embedded straight into the ChatGPT interface. Willison looked inside: a <script type="application/json"> block holds the full geometry for both route and map, drawn with D3.

D3 loads from an allow-listed CDN. The visualize skill’s content security policy permits only cdnjs.cloudflare.com, esm.sh, cdn.jsdelivr.net, unpkg.com, fonts.googleapis.com, fonts.gstatic.com and fonts.bunny.net. Everything else is blocked, silently.

My take

Two things stick with me. First: 27 minutes of compute for a running loop is a statement. Not because of the route — tools for that exist — but because nobody built a tool here. There was an address, a distance, and a hint about the data source.

Second, and this is the real point: compaction is data loss. Anyone working with Claude Code knows the feeling of details vanishing after a long session. With prose you barely notice. With code the agent wrote and ran itself, it’s a concrete problem — the solution then exists only as a result, never as a method.

Which is why Willison’s proposal isn’t a nice-to-have. It describes the difference between an agent whose work you can follow and one that hands you files.

Source: Simon Willison: Generating running routes with GPT-6 Astra and ChatGPT Work

Simon WillisonGPT-6 AstraAgentsCompaction