# Image credits

Two categories, and they must never be mixed up on a page.

1. **Generated originals** (`vision-*.jpg`) — made for Awe in session 2. Awe owns
   them, no attribution required. They are **drawings, never photographs**: see
   the rule in `image-proposals.html` §1.
2. **Licensed reference** (everything else) — photographs of *another
   architect's work*. They do not show Awe. Every use is labelled as lineage,
   technique, or terrain, and credits the photographer. That is a licensing
   requirement, not a stylistic choice.

---

## 1. Generated originals — Awe-owned

Two generations, both on 2026-08-01. No attribution needed; no third-party
rights attach. Prompts archived in `.prompts/flux/` and `.prompts/gpt/`, so any
plate can be re-run or handed to a human illustrator as a written brief.

### 1a. Current set — `gpt-image-2` (OpenAI)

These supersede the FLUX plates below. Higher craft, and — decisively —
`gpt-image-2` does **image-to-image**, so a plate can be *edited* rather than
re-rolled, and a series can be chained from one frame to the next.

| File | Subject | Status |
|---|---|---|
| `vision-aerial-gpt.jpg` | The village from a high angle | **Hero — ship it** |
| `vision-dome-nest-gpt.jpg` | One dome-nest, cut open, single level | **Ship it** |
| `vision-blueprint-gpt.jpg` | Masterplan — organic blobs, one small pond | **Ship it** |
| `vision-commons-gpt.jpg` | Communal room at dusk, table set mid-meal — the domestic one | **Ship it** — `/events` |
| `vision-commons-room-a.jpg` | Commons, C1 — A's dome redrawn in B's hand | Alternate |
| `vision-commons-room-b.jpg` | Commons, C2 — real dome, oculus open to sky — the ceremonial one | **Ship it** — `/purpose` |
| `gpt-phase-1.jpg` | Progress series, phase 1 — bare land | Exact to brief |
| `gpt-phase-2.jpg` | Progress series, phase 2 — first dome + one building | Good, reframed |
| `gpt-phase-3-flat.jpg` | Progress series, phase 3 — the village on flat meadow | **Ship it** (take 2) |
| `gpt-phase-3.jpg` | Phase 3, take 1 — same village on a hillside | Reject — do not publish |

**On the series:** chained image-to-image (1 → 2 → 3) produced three plates in
one consistent hand — same paper, same ink, same gold accent — which the FLUX
trio never managed. But it did **not** hold the camera: phase 1 is a wide
meadow, 2 a close-up, 3 an elevated view. Usable as three illustrations; not
the fixed-viewpoint time-lapse the Progress page concept wants. `gpt-image-2`
does support inpainting masks, but the daemon's `media generate` exposes no
mask flag — only `--image` — so that route can't be driven from here. What's
left is a human illustrator working from one under-drawing.

**Round two — resolved.** Phase 3 had drifted onto a hillside while phases 1 and
2 sit on flat meadow, which reads as a different site rather than a later date.
The flat-ground edit landed as `gpt-phase-3-flat.jpg` (`.prompts/gpt/p3-flat.txt`):
every dome, the gold door and the single smoking chimney survived; only the
terrain changed. **`gpt-phase-3.jpg` must not be published beside the other two.**

**Series colour — also resolved.** The three plates sat at different colour
temperatures (1 pale, 2 near-monochrome, 3 fully green), which read as three
afternoons rather than one site over three years. Matched on the existing pixels
by `tools/match-phase-series.py`: one paper cream, one saturation level, and
lightness deliberately left alone. Before/after in `phase-series-match.jpg`.

**Format.** Every plate in this table ships as **quality-92 JPEG**, not PNG —
they are watercolour drawings, so PNG bought nothing and cost 5× the bytes
(35.6 MB → 7.1 MB across the ten). The PNG masters were deleted after the
harmonised JPEGs were verified. Only the ornament band stays PNG, for alpha.

**Filename warning for the next session.** The daemon **flattens the slash** in
`media generate --output`, so `--output assets/foo.png` writes
`assets_foo.png` into the project *root*. Three plates sat there unnoticed and
were briefly written up as lost to a disk-full crash. Always check the project
root after generating, and move the file into `assets/` yourself.

### 1a-ii. Derived asset — the ornament band

| File | Derived from | Notes |
|---|---|---|
| `ornament-band.png` | `vision-ornament.jpg` (FLUX) | Paper and wash keyed to transparency on ink density + saturation, colours un-multiplied off white, tail wrap-blended over head so it tiles seamlessly. 1600 × 458, 84 KB. |
| `ornament-band-mask.png` | same | Alpha only, for CSS `mask-image` — lets one asset take any section accent. 64 KB. |

Both are Awe-owned like their source. The processing is reproducible: the
keying and seam-blend are plain Pillow/numpy operations, documented in
`DESIGN-SPEC.md` §9.3.

### 1b. Superseded — FLUX 1.1 Pro Ultra (fal)

Kept for comparison and because the reject wall in `image-proposals.html`
documents *how* each one failed. Do not ship these.

| File | Subject | Why superseded |
|---|---|---|
| `vision-aerial-v3.jpg` | Aerial, take 3 | Good, but GPT version is better |
| `vision-dome-nest-v2.jpg` | Dome-nest, take 2 | Had a staircase inside a 5m dome |
| `vision-commons.jpg` | Commons | Black silhouette glitch, brown palette |
| `vision-blueprint.jpg` | Masterplan, take A | Lake swallowed the sheet |
| `vision-blueprint-v2.jpg` | Masterplan, take B | Rectangular footprints |
| `vision-ornament.jpg` | Border ribbon, take A | Still live — white ground |
| `vision-ornament-v2.jpg` | Border ribbon, take B | Still live — cream ground |
| `vision-phase-1/2/3.jpg` | Progress series | Three unrelated scenes |
| `vision-aerial.jpg` | Aerial, take 1 | Generic eco-dome catalogue |
| `vision-aerial-v2.jpg` | Aerial, take 2 | **Photoreal render — breaks the voice rule** |
| `vision-dome-nest.jpg` | Dome-nest, take 1 | Glamping brochure |

### Reaching `gpt-image-2` at all

The daemon hijacks every OpenAI image model to the **Codex subscription**
whenever `~/.codex/auth.json` exists, regardless of whether that login works
(`server-VYQ7M5EF.mjs`, `codexSubscriptionEquivalent` → `useCodexSubscription`).
The file was present but the session was stale, so `gpt-image-2` failed before
the API key was ever consulted. `gpt-image-1.5` slipped through only because no
`codex-gpt-image-1.5` twin exists in the model registry.

Fix applied: the file was moved to `~/.codex/auth.json.disabled-for-od`.
Restore with `mv ~/.codex/auth.json.disabled-for-od ~/.codex/auth.json` — but
note that doing so re-breaks `gpt-image-2` here until the Codex CLI is
logged in again.

### Review findings — fix before any of these go public

- **`vision-phase-2.jpg` carries a hallucinated artist's signature** in the
  bottom-right corner (`@lefand Belkiing` or similar — it is not a real person).
  It must be cropped or regenerated. Left in place it would look like
  uncredited appropriation of a named illustrator.
- `vision-commons.jpg` has a flat black silhouetted figure at the back of the
  room that reads as a rendering glitch.
- `vision-dome-nest-v2.jpg` contains a staircase inside a five-metre dome.
- `vision-aerial-v2.jpg` is photorealistic and therefore **breaks the voice
  rule locked in session 1** (`brand-spec.md` §4). Kept only as a documented
  counter-example.

Every generated plate needs this review pass. The model will happily add a
signature, a watermark, or a fake photograph.

---

## 2. Licensed reference — other architects' work

All files sourced from Wikimedia Commons and downloaded locally to `assets/`
(never hot-linked). Attribution below is required by the licences.

| File | Source work | Photographer | Licence |
|---|---|---|---|
| `blumau-hero.jpg` | Rogner Bad Blumau — Hundertwasser's biggest project | nnike | CC BY 3.0 |
| `blumau-steinhaus.jpg` | Steinhaus, Rogner Bad Blumau von Friedensreich Hundertwasser | Renate Oberinger | CC BY 3.0 |
| `blumau-detail.jpg` | Rogner Bad Blumau 0025 | Szalay Gábor István | CC BY-SA 3.0 |
| `waldspirale.jpg` | Waldspirale, Darmstadt — Hundertwasser / Heinz Springmann (10) | Norbert Nagel | CC BY-SA 3.0 |
| `waldspirale-tall.jpg` | Waldspirale, Darmstadt — Hundertwasser / Heinz Springmann (09) | Norbert Nagel | CC BY-SA 3.0 |
| `hwhaus-facade.jpg` | Wien, Hundertwasserhaus 2018 — 3166 | Dietmar Rabich | CC BY-SA 4.0 |
| `hwhaus-window.jpg` | Wien, Hundertwasserhaus 2018 — 3180 | Dietmar Rabich | CC BY-SA 4.0 |
| `kunsthaus-wall.jpg` | Courtyard wall, KunstHausWien Museum | Jules Verne Times Two | CC BY-SA 4.0 |
| `zitadelle.jpg` | Grüne Zitadelle Magdeburg | VollwertBIT | CC BY-SA 2.5 |
| `zitadelle-court.jpg` | Grüne Zitadelle Magdeburg, Innenhof | VollwertBIT | CC BY-SA 2.5 |
| `window-glass.jpg` | Vidriera de Hundertwasser (Bärnbach) | Guerretto | CC BY 2.0 |
| `grass-roofs.jpg` | Traditional Icelandic houses with grassy roofs | Valery Kraynov | CC BY 3.0 |
| `dome-interior.jpg` | Earthbag dome interior | Build Simple Inc. | CC BY-SA 4.0 |

## Edits made

- `grass-roofs.jpg` — bottom 215px cropped to remove a 500px watermark.
- `dome-interior.jpg` — source is only 500×282. Usable at thumbnail size only.

## Removed during research

- A superadobe construction photo from Djibouti was downloaded and **deleted**.
  It showed a US Army soldier and identifiable Red Crescent volunteers at an
  aid project. Military and humanitarian-aid optics are wrong for this brand,
  and the people in it did not consent to appearing in co-living marketing.

## Open legal item before any public launch

Photographs of Hundertwasser's buildings rely on **freedom of panorama**
(Panoramafreiheit), which covers exteriors permanently sited in public places
in Austria and Germany. The CC licences above cover the *photographers'*
rights only.

Two things to check with counsel before this goes live:

1. `window-glass.jpg`, `zitadelle-court.jpg` and `kunsthaus-wall.jpg` are
   interior or courtyard views, where freedom of panorama is weaker.
2. The Hundertwasser Foundation actively enforces the artist's estate. Using
   his work as declared visual lineage on a commercial hospitality site is a
   different question from using it in a private pitch deck.

The safest long-term answer is to commission original photography and
illustration once there is land and a first dome. Treat all of this imagery as
**internal prototyping material**.

**Session 2 update.** The generated `vision-*` plates are the first step out of
this problem: they carry no third-party rights, so the Hundertwasser
photographs can drop out of every hero and survive only as small, credited
lineage strips — which is the use freedom of panorama most comfortably covers.
The open legal item above still stands for the photographs that remain.
