# Auro-Darshan: Every Rule Was Paid For With a Failure

*Interactive version: [View on web](/articles/auro-darshan.html)*


[The map](/articles/av-land-use-from-AEF/) sat at 94 percent for nine months; [the previous piece](/articles/geo-darshan-skill/) told how agents closed the rest. This one is about why it stalled where it did, and what it took to see that.

## Richness Is Not Tellability

K-means on [AlphaEarth](https://deepmind.google/discover/blog/alphaearth-foundations-helps-map-our-planet-in-unprecedented-detail/) embeddings can group land. It cannot be told anything. There is no channel through which *"fallow means rested cropland, and you must see evidence of cultivation"* reaches a clustering. The last 6 percent was mostly labeling calls that are conventional rather than perceptual: a strip of trees along a road is not a resolution problem at any resolution. It is a question about what people have agreed to call things, and agreements are made of language.

The embeddings were not information-poor. They carry temporal signal a single-date photo lacks: phenology, the casuarina rotation, tanks that hold water half the year. It was in there and there was no way to ask for it.

## A Method That Could Be Told Something

The move to a vision model reading ~1 m ESRI imagery was not a reach for better eyes. It was the first method in the project that takes instructions. In one sentence: LLM-as-judge, with images. Class definitions are the rubric, reference crops the calibration examples, ten parallel readers and adversarial verifiers the ensemble, agreement thresholds the routing for which calls a human sees.

Once definitions were an artifact someone had to write, the obvious question had its occasion: *can we not look it up?* Under clustering a human names what they see, one cluster at a time, and no taxonomy is ever in frame. Under a model reading a prompt, [NRSC's national land-cover scheme](https://bhuvan.nrsc.gov.in/) is the obvious place to start writing. The locally-invented 33-class hierarchy turned out to line up with it: built by feel, landed near India's standard.

## The Double Blindness

Nobody in the room knew what counts as evidence for a land-cover class. The model had no way to say so, and filled in the form regardless. That is the expected condition of early iteration in a field whose epistemics you do not yet hold, not a discovery. What was measured: asked how sure it was, the model's answer carried no information. Verdicts the verifiers upheld averaged 0.43 confidence; verdicts they refuted, 0.41.

Anything that would show the gap had to sit outside both parties. Everything that follows is that instrumentation.

## The Class That Means "I Don't Know"

The first thing the instruments caught was a class doing a job no class was defined for. Smooth green a reader could not name went to `grazing_land`. When that was retired, `maintained_grass` took the role. When that was constrained, `fallow` took it: 30 of 125 cells in round three, 28.5 percent of judged pixels. Retiring the class moved the job to the next one; the job is structural.

Reviewing one cluster at a time cannot see this by construction. It shows only on a whole-map choropleth of the readers' votes: a real class forms belts, a default sprays confetti across the map. That view exists because a non-specialist can read it. Confetti at that scale is wrong on its face.

The diagnosis was in the definitions. `fallow` had been *"bare or weedy rectangular fields with no active crop"*, and a description of appearance can always be satisfied by an ambiguous patch. NRSC's version is land taken up for cultivation and rested a year or more: positive evidence of cultivation, field geometry, bunds, plough lines, plus the absence of crop. A requirement cannot be satisfied by ambiguity. Describe less, require more.

The deeper form: a class that does not exist cannot be chosen, and the forcing leaves no trace. Roadside tree strips had no node and defaulted to fallow; `forest.tree_lines`, from FSI's *Trees Outside Forests*, had to be discovered rather than debugged. Confetti because a class is missing is a library problem. Confetti that survives fixed definitions is an evidence problem. Same signal, two remedies.

## The Instruments

Nobody drew up this list in advance. Each instrument was reverse-engineered from a judgment that failed without it, and each supplies a kind of not-knowing the picture alone cannot carry.

*What surrounds it.* Readers saw a 200 m crop of one field and a 7 km locator, nothing between, while the new definitions turn on the surroundings: "amid casuarina", "opening in canopy". At 200 m a fallow field and a harvested casuarina block are both bare geometric ground; the call went wrong until an 800 m crop at the same center sat between the two views. The exemplar crops also cover a median 20.8 percent of a cluster, so three unanimous readings said little about the other four fifths.

*What was here in another season.* A dry-season tank is a pale flat bed, and no single-date photo says otherwise. Cluster c125 was voted fallow; the older hand-made map, built across seasons, had it 65 percent water. That map's labels now cross-tab against every cell, with its water frozen out of judging. Authority is per class, never blanket: the same map is roughly 25 percent accurate overall, and blanket trust would make "the old map says so" the next junk drawer.

*What the class requires.* Grassland and young planted forest are smooth light green either way, and readers split on them until the definition stated the surrounding cover that decides it. Built-up subtypes sat unresolved for the same reason: roof density and surroundings vary independently, so a tie-breaker on surroundings alone could not settle them. CORINE and NLCD split by density first.

The rest arrived the same way, one failure each: a channel for the model to say no class fits, which is how a missing class gets found instead of absorbed; crops rendered tint-free and upscaled 4×, after a color cast was blamed for a misread; a settle gate for when a cluster is done, with held-out human checks on the gate itself.

## The Artifact the Model Reads Is Not the One You Maintain

The class descriptions the readers actually saw were a Python dict, `FIELD_GUIDE`, written on 7 June in the commit that created the skill and never touched again. Three rounds of corrections went into the skill markdown beside it. Readers were still being told `dryland_crops` is *"bare-to-sparse rectangular fields, brown/tan, low texture"*, wording indistinguishable from fallow and harvested casuarina, exactly the confusion the rounds kept producing. Rounds two and three held their hard rules only because each round's hand-written brief happened to restate them.

Careful documentation, diligently maintained, in a file the system never read. The rule that came out of it: update the cue the model sees, not only the doc you read.

---

@restlessronin is a domain expert on the place, not on the class scheme. Published schemes supply the second; local knowledge supplies the first. Each correction becomes a rule, and a rule is a review the human does not have to repeat.

## Credits

Written by @claude-fable-5, from working notes and repo archaeology by @claude-opus-5.

Showrunner: @restlessronin.
