# Zderzenie dwóch światów: WYTWÓRNIA (matura, codex, silnik) vs FABRYKA (RepoChad, Opus-agent, infografiki)

> Pytanie usera (2026-09-02): „w którą stronę dalej iść?" — porównanie pod kątem SKALOWALNOŚCI.
> Źródła: `misc/wytwornia/{README,HANDOFF,DECYZJE,KARTA_JAKOSCI,CLAUDE}.md`, `potok.py`, `wspolne/konfig.py`,
> 108 ledgerów `projekty/*/LEDGER.jsonl` (policzone skryptem w tej sesji) + raport agenta-eksploratora;
> po naszej stronie `HANDOFF-2026-09-02.md` §2 (biegi Mendla), `HANDOFF-2026-08-31.md` §2, §4, §12.
> Wytwórni NIE dotykałem (tylko odczyt).

## 0. Odpowiedź w sześciu zdaniach

1. Wytwórnia produkuje minutę filmu za **~18 tys. tokenów codexa**; fabryka za **~300 tys. tokenów Opusa** —
   różnica ~16× w tokenach i na dodatek na modelu, którego kwota jest u Ciebie najciaśniejsza.
2. To nie jest różnica „mniej kroków" (wytwórnia ma 11 etapów, my podobnie) — to różnica **KTO składa planszę**:
   u nich deterministyczny silnik rysuje kontrakt JSON napisany przez mały LLM; u nas agent Opus pisze kod
   każdej planszy w pętli narzędziowej (2 tury, kilkadziesiąt wywołań).
3. Nasza największa wartość dodana ostatnich dni — **łańcuch infografik z odsłanianiem** — jest już w całości
   plikowa i **bezLLM-owa po stronie obrazu** (preset → prompt bez LLM → gpt-image-2 → maski → sędzia → snippet);
   pasuje do doktryny wytwórni „ogniwa gadają plikami" jak ulał.
4. Od ig6 rola Opusa skurczyła się do: wybrać preset, napisać etykiety slotów, wkleić snippet, ustawić kicker
   i 2–3 dokładki na kotwicach. **To jest robota dla silnika + małego modelu, nie dla Opusa.**
5. Rekomendacja: **zbiegać do jednego kręgosłupa wytwórni** (kontrakt + silnik + ledger + QA), a z fabryki
   przenieść trzy zasoby: łańcuch infografik jako klocek, doktrynę REŻYSERA (dominanta + wsparcie) jako profil
   scenopisu „explainer", oraz styl (skiny, fonty PL, głos m04 — ten ostatni już wspólny).
6. Zanim cokolwiek przenosić: **dwa tanie eksperymenty** (§6) rozstrzygną, czy Opus jest jeszcze potrzebny.

## 1. Dwa światy obok siebie

| wymiar | WYTWÓRNIA (`misc/wytwornia`) | FABRYKA (`misc/identyfikacja_yt`) |
|---|---|---|
| cel i wejście | uniwersalna fabryka; produkcyjnie: zadania maturalne CKE (92/108 filmów), import gotowych scenariuszy (13) | omówienia/explainery w stylu kanału RepoChad z dowolnego tekstu (Mendel, enzymy, wcześniej sceny kanału) |
| kto składa planszę | **silnik deterministyczny** `etapy/slajdy.mjs` (1594 l.) rysuje `rezyseria.json` (kontrakt v2: bloki + akcje + `widoczne`) | **agent Opus 5** pisze `plansza.mjs` od zera z wiedzy (VADEMECUM 14 kB) + biblioteki form + snippetu infografiki |
| LLM w potoku | scenopis: gpt-5.6-sol high (codex1/2), 1 wywołanie/film; dopasuj cues: claude-opus-4-8 medium (claude2), ~3 k wy; tryb tekstowy (scenarzysta+scenograf) praktycznie nieużywany (3+5 wykonań, prompty M0) | REŻYSER: gpt-5.6-sol high (codex1), 1/film; agent-plansza: Opus 5 × 2 tury × N plansz; prompt rysownika: 0 LLM (szablon) albo codex2; wizja: 0 (sloty) / qwen 0 $ |
| obrazy | brak generacji; ryciny CKE + figury deterministyczne (`wspolne/figury/`), wykresy SVG, KaTeX; gpt-image-2 tylko w backlogu | gpt-image-2 (~0,01 $, 75–145 s) na każdej planszy; 12 presetów kompozycji; odsłanianie regionami maskami; sędzia bez LLM; kontrola nagości qwen (flaga) |
| kotwice czasu | whisper.cpp słowa; LLM wskazuje numer słowa dla kroku (`dopasuj`) | faster-whisper słowa; agent pisze `K("słowo")` w kodzie (exact-first, `harness.json`) |
| QA automatyczne | probe layoutu (pomiar, korekty, do 7 buildów), `qa_ruch.py`, `qa_sync.py`, fixture `sprawdz_kontrakt.sh` (SSIM cięć), `hyperframes check` = twarda bramka, KARTA 53 wymagań (A/O) | `hyperframes check`, `walidujOps` (strefa ciszy 3 s = twardy błąd), sędzia M1–M7 + bramka warstwy/całość, T2 = agent ogląda własną mozaikę |
| human review | **obowiązkowy, dwuwarstwowy przed wysyłką** (techniczny + dydaktyczny); 34 % projektów bez żadnej flagi, 68 % bez twardych | brak w pętli (werdykty usera sterują iteracjami); flagi w dziennikach |
| idempotencja / księgowość | LEDGER.jsonl (md5 wejść/wyjść, tokeny, czas, wersja promptu); zmiana trybika przelicza od trybika w dół | przebiegi append-only (1 bieg = 1 katalog), dzienniki JSONL narzędzi, `harness.json`; brak idempotencji etapów |
| równoległość | `xargs -P 40` (worker = cały potok zadania); render P=6 przez dysk (1–3 GB tempów/render) | masówka: N workerów × konta (fala 1: 40 workerów), semafor obrazów 4 sloty, harness `.sloty` |
| retry / stop | tylko transportowe (codex 3×, TTS 3×, check 2× flaky); AWARIA = stop | zero retry; STOP-flaga (drain); awaria = plansza bez obrazu |
| styl / wyraz | jedna paleta zaszyta w silniku; brak systemu stylu, brak biblioteki wzorców, brak brandu, brak muzyki | 9 skinów „tylko farba", fonty PL, 82 karty form + 285 egzemplarzy, 357 bloków HF, choreografia per plansza |
| słabości udokumentowane | „uniwersalność = teza, nie fakt" (audyt 08-29); ~80 flag `pusta`; bug licznika tokenów claude; render 43 % czasu; brak locka per projekt | koszt Opusa; nagość tylko flaga; brak OCR w sędzim; nowe reguły bez świeżego biegu; brak gita |

## 2. Liczby na minutę gotowego filmu

| miara | WYTWÓRNIA (mediany z 108 ledgerów) | FABRYKA (bieg ig6, 7 tablic Mendla, 5,9 min) |
|---|---|---|
| filmów / materiału | 108 filmów, 805 scen, 288 min | seria Mendla: 9 biegów × 7 plansz; fala 1 kanału: 173 sceny |
| długość filmu | 2,6 min (7 scen) | 5,9 min (7 tablic) |
| tokeny LLM na film | ~35 k we + ~11 k wy (codex) + ~3 k wy (claude 4.8) | 1,75 M „świeżych" (Opus) + ~35 k (codex REŻYSER) |
| **tokeny na minutę filmu** | **~18 k (codex)** | **~300 k (Opus)** |
| czas maszynowy na film | 7,0 min (render 2 min, scenopis 3 min, TTS 0,5, dopasuj 0,7) | 14 min ściennych przy 7 równoległych agentach (≈ 10–14 min agenta na planszę) |
| koszt poza kwotą | 0 $ | ~0,07 $ obrazów/film |
| udział bez poprawek | 34 % zero flag, 68 % bez twardych | 7/7 plansz „UWAGI, 0 ciężkich" (sędzia), ale kilka klas wad widzi tylko oko (§5 audytu) |

Kwota (stan `aicheck` 2026-09-02 17:17): codex1 3 % / codex2 1 % tygodnia zużyte; claude2 39 %, claude1 7 %,
claude3 4 %. Nasze biegi Mendla zjadały kwotę Claude, wytwórnia praktycznie nie zjada niczego.

## 3. Czego jedna strona nie ma, a druga ma (zasoby do przeniesienia, nie do wyboru)

**Fabryka ma, wytwórnia nie:** (a) łańcuch infografik: presety → prompt bez LLM → gpt-image-2 → maski →
sędzia → snippet warstw (`fabryka/pilot/*`), (b) doktrynę REŻYSERA „dominanta + wsparcie 0–3, strefa ciszy,
kicker w języku lektora", (c) system stylu (skiny, fonty PL, biblioteka form, arsenał bloków), (d) styl
kanału z choreografią per plansza. **Wytwórnia ma, fabryka nie:** (a) silnik z mierzonym layoutem i kontraktem
geometrii (`kadr.json`), (b) ledger z idempotencją i metrykami per etap, (c) KARTĘ JAKOŚCI jako egzekwowalny
rejestr wymagań + fixture kontraktowy, (d) tryb gotowy (0 tokenów) i importery, (e) napisy karaoke z walidacją ASR,
(f) dyscyplinę KISS: „nowy klocek = jedna funkcja + jedna linia w potok.py".

## 4. Gdzie przesunęła się wartość w naszym potoku (argument za zbieżnością)

Pilot V2 (08-30) pokazał, że **agent bez wzorca improwizuje słabo** — stąd wzorcownia, biblioteka i drogi Opus.
Ale od trybu infografika-first (ig3) i warstw (ig6) plansza wygląda tak: kicker (z planu) + infografika (nośnik
treści, odsłaniana snippetem, który dostaje gotowy) + 2–3 elementy HyperFrames omawiające obraz na kotwicach.
Agent już nie „komponuje" — dobiera preset, pisze etykiety slotów i wkleja gotowe bloki. Dowód: w ig6 obrazy
kosztowały 0 wywołań wizji i 0 LLM po stronie cięcia, a 1,75 M tokenów Opusa poszło głównie na to, co
w wytwórni robi kod. Wniosek: **droga do skali to nie tańszy agent, tylko brak agenta tam, gdzie już nie decyduje.**

## 5. Rekomendacja: jeden kręgosłup, trzy przeszczepy

Kierunek: **wytwórnia jako kręgosłup produkcji** (kontrakt + silnik + ledger + QA + human review), fabryka jako
laboratorium stylu i dawca klocków. Kolejność przeszczepów wg wartości/wysiłku:

1. **Klocek „infografika warstwowa"** (największa wartość, średni wysiłek). Nowy etap wytwórni `infografika`
   (funkcja + linia w `potok.py`) woła nasz `infografika.mjs --prompt szablon --schemat … --regiony` jak dziś,
   dostaje z niego PNG + maski + `NN.regiony.json` + werdykt sędziego; silnik `slajdy.mjs` dostaje nowy blok
   `infografika` (kopie `<img>` z `mask-image`, wejścia regionów na cue'ach `fadeIn` ≥ 0,9 s, bramka: ODRZUCONY =
   cały obraz). Treść slotów pisze scenopis (mały LLM), nie Opus. Koszt na planszę: ~0,01 $ + 0 tokenów cięcia.
2. **Profil scenopisu „explainer"** (mała praca, duża dźwignia): przenieść do promptu scenopisu doktrynę
   REŻYSERA (jedna dominanta, wsparcie 0–3, puenta późno, kicker w języku lektora, strefa ciszy) i tabelę
   decyzyjną presetów („forma treści → preset"). Prompt pisze codex1 z briefu — zgodnie z doktryną obu repo.
3. **Styl** (mała praca): skiny „tylko farba" i fonty latin-ext jako paleta/klasy silnika zamiast zaszytej `K`;
   głos m04 + loudnorm już jest wspólny (ten sam serwer `:8772`).

Czego NIE przenosić: agenta piszącego kod planszy (to jest właśnie koszt), wzorcowni 601 scen (wartość badawcza,
nie produkcyjna), 357 bloków HF hurtem (silnik bierze pojedyncze potrzebne bloki jako klocki).

Co zostaje w fabryce: R&D stylu kanału i „tryb premium" — jeśli kiedyś potrzebny będzie film z choreografią
autorską (kanał YT w stylu RepoChad), agent-plansza dalej to umie; wtedy koszt 300 k/min jest ceną wyrazu, nie skali.

## 6. Dwa eksperymenty, które rozstrzygają (tanie, na tych samych 7 tablicach Mendla)

**E1 — „czy Opus jest jeszcze potrzebny?"** Te same 7 tablic, ten sam blok v5 i snippety, ale agent-plansza =
**codex gpt-5.6-sol** (jedna runda, `codex exec` z zapisem, bez pętli T2). W pilocie V2 one-shot codexa dawał
„statyczny plakat" — ale wtedy nie było snippetu infografiki, który dziś niesie ruch. Miary: koszt (oczekiwane
~40–60 k tokenów/planszę zamiast 250 k), sędzia, walidator, oko usera na `produkcja_PMENDb.html` (9. kolumna).
Wynik pozytywny = można zbić koszt 5× bez zmiany architektury; negatywny = potwierdza, że planszę ma składać silnik.

**E2 — „ile kosztuje klocek"**: jedna tablica Mendla przez wytwórnię: ręcznie zbudowany `rezyseria.json` z blokiem
`infografika` wskazującym gotowe pliki z ig8 (PNG + maski + regiony), minimalna implementacja bloku w `slajdy.mjs`.
Miara: godziny pracy na blok, czy probe/QA wytwórni akceptują obraz 55–65 % kadru, czy `fadeIn` regionów przechodzi
`hyperframes check`. Wynik = realna wycena przeszczepu nr 1.

Kolejność: E1 jest o rząd tańszy i nie dotyka wytwórni — najpierw on.

## 7. Ryzyka i uczciwe zastrzeżenia

- Wytwórnia jest zestrojona pod zadania egzaminacyjne (tablica/panel/karta, KARTA JAKOŚCI o pytaniach); układ
  „explainer" (kicker + infografika + omówienie) to nowa rodzina układu w silniku, nie przełącznik.
- „Uniwersalność" wytwórni na dowolny tekst jest niesprawdzona (audyt zewnętrzny 08-29, prompty M0) — profil
  „explainer" byłby pierwszym prawdziwym testem trybu tekstowego.
- Human review w wytwórni jest obowiązkowy przed wysyłką; nasz łańcuch obrazów jest bez człowieka, ale ma dziury
  (nagość = flaga, etykieta w cudzym slocie bez OCR). Przy skali setek filmów ktoś musi patrzeć na flagi —
  wytwórnia ma na to galerię i procedurę, my nie.
- Render jest wąskim gardłem w obu (43 % czasu wytwórni; u nas harness); równoległość ogranicza dysk, nie LLM.
- Dwa repo, dwie doktryny, jeden user: zbieżność oznacza, że fabryka przestaje być „produkcją", a staje się
  dawcą — decyzja organizacyjna, nie techniczna.

## 8. Mapa dowodów

- Wytwórnia: `potok.py`, `wspolne/konfig.py` (ROLE), `etapy/slajdy.mjs`, `KARTA_JAKOSCI.md`, `HANDOFF.md`
  (§ „Jak to działa", pułapki, otwarte), `DECYZJE.md` (od `## 2026-08-30 — PRZEBUDOWA RÓL`), `narzedzia/runda_skali.sh`,
  `projekty/*/LEDGER.jsonl` (108), `logs/skala/_runda.log`, `ANEKS_INSPIRACJE.md` (gpt-image-2 w backlogu).
- Fabryka: `HANDOFF-AUDYT-2026-09-02.md` (§1–§7), `HANDOFF-2026-09-02.md` §2 (tabela biegów), `HANDOFF-2026-08-31.md`
  §2 (pilot 12 reżimów: one-shot codexa = plakat), §4 (fala 1: 149 k/scenę), `fabryka/pilot/` (łańcuch infografik).
