# Images as Code · P1 (L0–L2)
Studio Hansen · SH-R-IAC-P1 · 15.10.2026 · gehört zu Heft SH-R-IAC-F1

## Inhalt
    index.html            Testseite: 5 Container, Regel-Panel (live), Bewegungsmass
    iac.js                Laufzeit: <iac-container>, Schichten L0–L2, Hot-Regel, Overlay
    rules.json            publizierte Site-Regel (Konzepte C1–C4, Regeln still / doc-quiet / print-grain)
    rules.candidate.json  Regel-Kandidat für die Vorschau
    build.py              Build-Schritt: s/w-Master (3 Breiten), Poster, Druck-Export 600 dpi, Demo-Datei
    wk-0001 … wk-0003     drei Container (Ordner + manifest.json + Originale + _build/)
    iac-p1-demo.html      alles in einer Datei (für schnellen Test am Telefon, 1.2 MB)

## Testen
1. Ganzen Ordner auf prototypes.origin-infinite.com laden (Fetch braucht http, kein file://).
2. index.html öffnen. Varianten:
       ?overlay=1                      Mess-Overlay pro Container
       ?rules=rules.candidate.json     Vorschau mit Kandidat statt publizierter Regel
       ?rule=print-grain               eine Regel für alle Container erzwingen
       ?layer=1                        Schicht deckeln → alles still
3. Panel unten: Regel wählen, Konzept / Stufen / interpoliert / dither / einmalig / Unschärfe ändern.
   Jede Änderung wirkt sofort auf alle Container, nichts wird neu geladen (Hot-Prinzip).
   «einmalig» aus + Browser mit CSS-Scroll-Timeline → Treiber wechselt von js auf css (Overlay zeigt es).
4. JavaScript aus → nur die <picture>-Poster (L0).
5. Druck: wk-*/_build/print/*.png auf dem OKI C844, 160 g, Papiertyp «Schwer», 600 dpi, keine Skalierung.

## Neuer Container aus einem Bildordner
    python3 build.py --new wk-0004 --rule doc-quiet     # legt Ordner + Manifest an ("sequence": "auto")
    cp bilder/*.jpg wk-0004/                            # beliebig viele; Reihenfolge = Dateiname (01.jpg, 02.jpg …)
    python3 build.py                                    # Sequenz wird aus dem Ordner gelesen, alt = Dateiname
    # alt-Texte danach im Manifest verfeinern; Bilder hinzufügen/löschen → build.py erneut, das Manifest folgt dem Ordner
Zum schnellen Test ohne Server: auf der Seite unter «0 · Eigener Ordner» Bilder wählen oder hineinziehen —
ein Container mit allen Bildern entsteht lokal im Browser (keine Übertragung).
    # in der Seite:
    <iac-container src="wk-0004/manifest.json" style="aspect-ratio:3/2">
      <picture><img src="wk-0004/_build/poster.jpg" alt="…" loading="lazy"></picture>
    </iac-container>

## Abnahme (Heft S. 22)
- drei Geräte: iPhone ab 2021, schwaches Android, Desktop — Overlay-Werte notieren (Frame ≤ 8 ms?)
- ohne JS: lesbare s/w-Bilder mit Alt-Text
- Regel ändern → alle ändern sich ohne Neuladen; Kandidat-Vorschau
- A4-Druck des print-Exports ohne Haftungsartefakt
- nach einer Woche: pro Kurve «zu trocken / richtig / zu laut»

## Bekannte Grenzen P1
- L3 (Voxel-Akteur, Audio) fehlt bewusst → P2.
- «einmalig» läuft immer über den JS-Pfad; der CSS-Pfad ist von Natur aus reversibel.
- Projektion wird live auf Canvas gerechnet (ein Durchlauf pro Bild und Regeländerung); vorberechnete
  Varianten pro Konzept erst, wenn die Messung es verlangt.
- Bildbudget: die Druckproben (Fotos, körnig) sprengen 120 kB mobil deutlich — das Overlay zeigt es.
