The spec before the image

2026-07-11 · #tools #agents

Most image generation is roulette: type a sentence, pull the lever, hope. The fix isn’t a better sentence. It’s refusing to generate at all until every property of the image exists as an approved, structured artifact. The image-production agent in melchizedek is built on one hard mandate: never call the generation tool on the first turn. Design first, in JSON. Generate only on explicit approval.

This print came out of that workflow:

Black-and-white fine-art photograph presented on a gallery matte: a waterfall pours off basalt sea cliffs into storm surf while crepuscular rays break through clouds
Where the Land Ends — generated 2026-07-11. Every property below was approved before it existed.

the payload is the point

Before approval, the agent must produce a deeply nested design payload — no visual, atmospheric, or technical detail left to chance. Reverse- engineered from the print above, abbreviated:

{
  "meta": { "title": "Where the Land Ends", "genre": "fine-art landscape",
            "artist_style": "Ansel Adams — heroic monochrome" },
  "visual_elements": {
    "subject_matter": {
      "location": "volcanic basalt coastline",
      "primary_focus": "waterfall plunging from sea cliffs into storm surf",
      "foreground": "wet black boulders, surf exploding over them",
      "midground": "the falls and sheer cliff face",
      "background": "receding headlands, open sea"
    },
    "atmosphere": { "weather": "storm breaking", "mood": "sublime, elemental",
                    "lighting": "crepuscular rays through torn cloud, upper right" }
  },
  "technical_specifications": {
    "medium": "gelatin silver print, presented on a gallery matte",
    "color_palette": "monochromatic",
    "tonal_range": "full Zone System — dense blacks to luminous spray",
    "camera_emulation": { "type": "8x10 large format", "aperture": "deep focus", "film_grain": "fine" }
  },
  "composition": { "framing": "wide-angle", "perspective": "low, from the shoreline",
                   "balance": "cliff diagonal leading into the rays" },
  "generation_parameters": { "aspect_ratio": "3:2" },
  "generation_prompt_string": "…synthesized last, from everything above…"
}

Read what the structure does. Naming foreground, midground, and background separately means no plane of the image is undecided. “Crepuscular rays, upper right” is falsifiable in a way “dramatic lighting” never is. The camera block pins depth of field and grain — the difference between a photograph and an illustration. And the final prompt string is synthesized from the approved fields, so the thing the model receives is the thing the human signed.

Here is the conversation that plausibly produced the print — note where generation does not happen:

┌─ trace: reverse-engineering the print (spec → approval → pixels) ─ interactive

The gallery matte in the image exists because a human asked for it in review, one property changed, and the contract was re-presented. That’s the whole doctrine: a tweak is a diff against a spec, not a fresh pull of the lever.

This is the same lesson this site keeps finding in every domain. The market agent must state what would prove its verdict wrong; the image agent must state what it is about to make before making it. Predictability isn’t a property of models — models are weather. Predictability is a property of contracts. Write the spec, approve the spec, and the machine becomes accountable to a document instead of a mood.