Fehlersammlungsindex (Symptom → Reparaturort)
Regel: Jeder gefixte Bug wird nach menschlicher Abnahme protokolliert. Reparaturen, die zu einem professionellen Skill gehören, werden in diesem Skill dokumentiert; hier bleibt nur ein Verweis. Reparaturen ohne eigenen Skill (Engineering-Workflow/Render-Pipeline) dürfen als kurze Inline-Notizen gespeichert werden (so dass man beim Nachschlagen sofort die Reparatur sieht, ohne einen zweiten Klick), aber wenn sie länger als fünf Zeilen sind, müssen sie in eine professionelle Datei ausgelagert und hier durch einen Verweis ersetzt werden. Diese Datei darf nicht mehr als 150 Zeilen umfassen; wenn sie länger wird, werden die längsten Inline-Reparaturen ausgelagert.
Navigation nach Familien (zuerst die Familie bestimmen, dann den Eintrag suchen – vermeidet unnötiges Hin- und Herspringen zwischen ähnlichen Einträgen):
- Render-Absturz/Einfrieren/Verschwinden-Familie: Zuerst
render-service.cjsausführen (Start-Selbsttest; seit 2026-07-24 blockt dies automatisch #37 public-Größe, #38 Signatur-Hänger und Chrome-Startprobleme durch automatisches Fallback auf System-Chrome); wenn der Selbsttest bestanden ist und es immer noch hängt → #23 Concurrency Deadlock → #25 Dataless → #26 Harness-Recycling → #24 npm-Paketfehler. - QC-Falsch-Positiv-Familie: #29 Geisterbox (null-Gate) / #31 Kaltstart-Schriftvolumen (qcAllow-Ausnahme) / #32 Place-Box-Höhenüberlauf (visuelle Freigabe); wenn QC „null Verstöße“ meldet, zuerst die Abdeckung prüfen (#35).
| # | Kategorie | Symptom | Reparaturort |
|---|---|---|---|
| 01 | Rendering | Chinesische Schrift wird stillschweigend zu Songti / mal gut, mal schlecht | remotion-design-system §6 #01 (fonts.ts + FontGuard) |
| 02 | Engineering-Workflow | remotion still Ausgabe ○, Bild ändert sich nicht nach Code-Änderung | remotion-design-system §6 #02 |
| 03 | Engineering-Workflow | Miniatur-Vergleichsbilder täuschen über Schriftdetails hinweg | remotion-design-system §6 #03 |
| 04 | Rendering | \uXXXX in JSX-Properties wird wörtlich angezeigt (z. B. icon="✅") | remotion-design-system §6 #04 |
| 05 | Designsprache | Selbstgemalte Platzhalter-Nachbauten „fühlen sich ganz anders an“ | remotion-design-system §0 Grundregel 4 (echtes Material als Hauptbestandteil) |
| 06 | Rendering | backgroundClip:text Verlaufsschriften erscheinen im Bild dunkler | remotion-design-system §6 #06 (Einfarbig + textShadow) |
| 07 | Designsprache | Reine flächige Farbblöcke/reine schwarze Hintergründe/falsche Logos wirken billig | remotion-design-system references/texture.md (Jelly-Blöcke + Glow + Vignette + echtes Logo) |
| 08 | Export | MG-Text im fertigen Video hat Randunschärfe/Verschmierung, „MG macht die Qualität schlechter“ | remotion-design-system §6 #08 (jpeg100+crf15 fixierte Config) |
| 34 | Designästhetik | Benutzer sagt „Nicht hochwertig / ungeschliffen / wirkt wie ein Fehler / unnatürlich / unrund / nicht geschmeidig“ | design-system references/motion.md „Fünf Gesetze der Geschmeidigkeit“ – Fehlertabelle: ① Vorsorgliches Skelett (vorher nicht erwähnte Strukturen vorzeitig sichtbar machen) ② Kontinuierliche Objekte werden durch Ausweichmanöver zerstückelt ③ Grenzen durchstoßen oder hängende Lücken ( > 2px bedeutet Unterbrechung) ④ Gleichförmige Bewegung ohne Verlangsamung zum Stillstand ⑤ Zustand sofortige, ganzheitliche Änderung. Punkt für Punkt zuordnen, nicht nach Gefühl Parameter anpassen; bei Änderung eines Punktes darauf achten, keinen anderen zu verletzen (0722-01 Reparatur „Linie durchbricht Kreis“ verletzte „Zerstückelung“ + „Skelett sichtbar“, zwei Iterationen Nacharbeit) |
| 09 | Engineering-Workflow | Langes Rendering verschwindet während der Laufzeit / mp4-Fragment / pgrep erkennt Prozess fälschlich als lebend | remotion-design-system §6 #09 (nohup Trennung + Log + Zeilen erkennen) |
| 10 | Langfilm-Montage | Nackte Szene / lange Standbilder, MG ganz links zusammengedrängt ohne Wirkung | remotion-design-system references/layout.md (takeover/Protagonisten-Moment) + remotion-assembly references/rhythm.md (Dichte-Audit) |
| 11 | Soundeffekte | Ganzer Film ohne Soundeffekte / Soundeffekte untergehört / Lautstärke nicht normgerecht | remotion-assembly references/audio.md (Lautstärke-Spezifikation + Mastering loudnorm) |
| 12 | Langfilm-Montage | Elemente nach Einblendung bewegungslos und starr / Kapitel-Schnitt wirkt hart | remotion-design-system references/motion.md (Breathe + useExit Ausgangsdisziplin) |
| 13 | Designsprache | Text auf hellem Hintergrund wirkt grau und unlesbar (nackter Text auf weißer Fläche) | remotion-design-system §0 Grundregel 5 + references/texture.md |
| 14 | Langfilm-Montage | Überschneidung von Kopfzeile/Kopfleiste mit Text | remotion-design-system references/layout.md (Kopfzeilen-Positionen gegenseitig ausschließend) |
| 15 | Untertitel | Wortbrüche im Untertitel / englische Fragmente / keine Hintergrundbox | remotion-assembly references/subtitle.md (semantische Silbentrennung + Hintergrundbox + Validierungsskript) |
| 16 | Materialerfassung | Handgezeichnete Nachbildungen von Produktbildern „sehen trotz Anpassungen nie richtig aus“ | remotion-assembly references/broll.md §0 Grundsatz (Synthesizer ist kein Zeichenbrett; Vier-Stufen-Material + Erfassungs-/Schnitt-Pipeline) |
| 17 | Langfilm-Montage | KI-Selbstprüfung sagt „sieht gut aus“, Benutzer findet es ganz anders (Standbild-Blindzone / Miniaturansicht verkleinert) | remotion-assembly SKILL §2.5 Segment-Werkstatt (erst messen, dann coden + dynamische Benutzer-Endabnahme) |
| 18 | Materialerfassung | Material wirkt wie ein „Aufkleber“, nicht in den Film integriert | remotion-assembly references/broll.md Pipeline Schritt 5 (Farbangleich-Ebene) |
| 19 | Animations-Timing | Ganzer Film startet schleppend wie eine PowerPoint / Bewegungsdauer entspricht nicht dem Design | remotion-design-system references/motion.md §0 (Bildanzahl nach 60fps-Konvention geschrieben, aber Zusammensetzung ist 30fps – zuerst in Sekunden umrechnen, dann in Bilder) |
| 20 | Designsprache | Montagegröße „erscheint immer kleiner als die Referenz“ | remotion-design-system references/specs.md (zuerst Spezifikationstabelle prüfen, dann coden – niemals nach Gefühl) |
| 21 | Soundeffekte | Soundeffekte klingen billig/schwach, sowohl synthetische als auch Referenz-Samples werden abgelehnt | remotion-assembly references/audio.md Regel 8 (richtige Lösung = professionelle Soundbibliothek: CapCut-Cache-Bibliothek → @remotion/sfx → Mixkit → CC0 → kommerzielle Pakete; Qualität muss der Benutzer über eine Hörprobe auswählen, KI kann nur spektrale Defekte filtern) |
| 22 | Engineering-Workflow | Hörprobe/zusammengesetztes Video – Ton und Bild geraten zunehmend aus dem Takt | remotion-sfx SKILL §2 Zusammensetzungs-Regel (Verbot von -c copy Zusammensetzung und -shortest: kleine Zeitabweichungen zwischen Segmenten summieren sich zu Drift; Länge muss exakt gleich sein + gesamtes Segment neu encodieren) |
| 23 | Engineering-Workflow | Rendering hängt grundlos/Zeitüberschreitung, wiederholte Wiederholungen schlagen immer wieder fehl | Gleichzeitiges Rendern im selben Projekt verboten (Warnzone „Concurrency-Crash“ bestätigt): Multi-Session/verwaiste Prozesse kollidieren und verursachen Deadlock. Diagnose=ps -o etime,pcpu (etime übertrifft Erwartung um ein Vielfaches + dauerhaft 0% CPU = tot, killen); Tool-Zeitüberschreitung tötet nur bash, hinterlässt verwaiste node-Prozesse, die sich gegenseitig blockieren. Rendering muss nohup echter Hintergrund sein + Log + Zeilen erkennen (Problem #09 gleiche Familie); vor Rendering-Start zuerst den Zustand prüfen, aber der Prüfmodus muss Selbstmatching verhindern: `pgrep -f "remotion render |
| 24 | Engineering-Workflow | Rendering meldet Named export not found/plugin is not a function etc. interne Paketfehler | Gleichzeitige npm-Installation kann Pakete beschädigen (mehrere Sessions führen gleichzeitig npm i aus / Prozesse unterbrechen sich gegenseitig beim Schreiben): Symptom=require gibt leeren Export zurück, dependancy-tree interne TypeError; Reparatur=Kaputtes Paket rm -rf node_modules/<Paket>+npm cache clean --force+Neuinstallation, bei mehrfachem Befall direkt rm -rf node_modules && npm ci (zuerst node_modules/.remotion Browser-Binärdatei auslagern und sichern, dann löschen); Disziplin=Im selben Projekt darf nur eine Session gleichzeitig npm verwenden |
| 25 | Engineering-Workflow | Rendering bleibt dauerhaft bei einem bestimmten Prozentsatz im Bundling hängen, gesamter Prozessbaum 0% CPU, Node-Wechsel/Abhängigkeiten-Neuinstallation helfen nicht | Materialdateien wurden vom Sync-Dienst zu dataless-Leerhüllen verdrängt (2026-07-16 Vorfall: Drittanbieter-Sync-App entleerte beim Deinstallieren 747 MB Hauptmaterial, bundle-Kopie von public/ blockierte dauerhaft, gesamtes Rendering der Nacht fiel aus). Diagnose=ls -lO public/** auf dataless-Flag prüfen; Reparatur=Datei aus dem Original/Download-Quelle wiederherstellen (brctl funktioniert nicht gegen bereits deinstallierte Provider); Prävention=Material bei Aufnahme auf dataless prüfen (broll.md 2b), Projekt nicht in sync-verwalteten Verzeichnissen ablegen. Variante (2026-07-28, iCloud verdrängt node_modules): CLI/Studio startet, hängt bei 0% CPU still, nicht einmal Versionsnummer wird angezeigt („Mac-Speicher optimieren“ verdrängt Abhängigkeitsdateien, @remotion-Paket enthält tausende dataless, require wartet für jede Datei auf Cloud-Download); Reparatur=Abhängigkeiten in node_modules.nosync/ physisches Verzeichnis neu installieren + gleichnamiger Symlink (*.nosync-Namenskonvention verhindert iCloud-Sync, heilt dauerhaft); altes Verzeichnis muss aus dem Projektbaum entfernt werden (in ../.trash/) – Umbenennung innerhalb des Projekts führt zu erneuter Abfrage durch Studio-Watcher und erneutem Hängen |
| 26 | Engineering-Workflow | Render-Prozess verschwindet mit Ende des Sub-Agenten/Zyklus „spurlos“, weder Concurrency-Deadlock (#23) noch langes Rendering-Unterbrechung (#09) | Sobald der Sub-Agent-Zyklus endet, recycelt der Harness seine im Vordergrund oder nicht vollständig getrennten Kind-Prozessketten → Rendering wird vorzeitig abgebrochen und hinterlässt Fragmente. Reparatur gehört zur #09-Familie: Rendering muss vollständig von der Eltern-Shell getrennt werden (nohup + run_in_background/setsid, alle fd umleiten), Erfolg nur anhand der Log +/letzten Zeile erkennen, nicht daran, ob der Agent noch lebt; besonders fatal ist das Starten von langen Renderings innerhalb eines Sub-Agenten (Zyklus-Grenze = Tod des Prozesses); bei Bedarf in „dieser Zyklus startet Rendering getrennt → nächster Zyklus erkennt Log“ aufteilen |
| 27 | Engineering-Workflow | Render-Service .mjs/ESM-Entrypoint import '@remotion/renderer' meldet does not provide an export named 'Fragment' | Bei package.json ohne type:module löst das Laden des renderers über den ESM-Entrypoint dessen ESM-Build aus, der mit react/jsx-runtime-Interoperabilität bricht (Node 24 bestätigt); Reparatur=Service-Skript auf .cjs + require ändern, um den CommonJS-Build zu verwenden (Beleg: scripts/render-service.cjs Kopfkommentar) |
| 28 | Engineering-Workflow | <Sequence layout="none" premountFor={N}> durchläuft tsc nicht, meldet premountFor existiert nicht/Typproblem | Remotion SequenceProps ist eine diskriminierende Union: premountFor ist nur im Standard/layout:"absolute-fill"-Zweig (AbsoluteFillLayout) gültig, der {layout:"none"}-Zweig hat diese Eigenschaft nicht (Typen siehe node_modules/remotion Sequence.d.ts LayoutAndStyle). Reparatur=Medien, die premount benötigen, müssen in einer Sequence mit Standard-Layout eingeschlossen werden (kein layout oder absolute-fill schreiben); wenn layout="none" für die Positionierung benötigt wird, das Medium in eine eigene Standard-Layout-Sequence einbetten, um premount zu ermöglichen. Offizielle Falle ③ (premountFor) operative Ableitung |
| 29 | Engineering-Workflow | QC-Sonde meldet „Geister-Überlappung“ falsch positiv: Das Element ist in diesem Frame mit bloßem Auge überhaupt nicht sichtbar | QC-Sonde (src/design/qc.tsx) prüft für jeden Frame auf [data-qc] getBoundingClientRect auf Überlappung; wenn das Element während der Unsichtbarkeitsperiode noch im DOM hängt (keine standardmäßige Ausblendung oder vollständig undurchsichtig, aber visuell bereits zurückgezogen), wird trotzdem ein rect gemeldet → falsche Überlappung (seg05 S5Appear getroffen). Die Sonde filtert nur opacity<0.15 und w/h<3, Platzhalter-Geister blockiert das nicht. Reparatur=Element während der Unsichtbarkeitsperiode direkt return null (null-Gate-Methode), kein Knoten = kein rect; Regeln zur Vermeidung von Überlappungs-Platzhaltern siehe remotion-design-system references/layout.md §10.5. Eine weitere Variante (Place-Box-Höhenüberlauf) ist separat als #32 aufgeführt; Reparatur gemäß #32 |
| 30 | Engineering-Workflow | Mit Bash geschriebene Dateien „Befehl erfolgreich“ verschwinden aber / Read sieht die gerade erstellte Datei nicht / Fertiges Rendering ls existiert nicht | Neue Sitzungen werden standardmäßig in einer Sandbox ausgeführt: Nicht autorisierte Bash-Schreibvorgänge landen in einer temporären Kopie der Sandbox, die nach Befehlsende verdampft (0719-01 Test bestätigt: Untertitel-Daten, 18 Szenen, 590 MB fertiges Rendering alle verdampft, nur 3 mit Write-Tool geschriebene Dateien überlebten); Schreiben über /tmp-Symlink-Pfade in das Projekt verschärft die Umleitung. Reparatur=Vor Arbeitsbeginn zwingend assembly SKILL §0.5 Schritt 0 Umgebungs-Selbsttest durchführen; falls nicht bestanden, anhalten und Benutzer um Autorisierung für Bash/Editier-Rechte bitten; Verboten: Symlinks zur Umgehung chinesischer Pfadnamen (Pfad einfach in doppelte Anführungszeichen setzen), dangerouslyDisableSandbox als Selbsthilfe, Projektkopie nach /tmp zur Arbeit; Datei-Output vorzugsweise mit Write-Tool schreiben |
| 31 | Engineering-Workflow | QC meldet nur in den ersten Frames eines Segments Überlappungen, visuell keine Überlappung (häufig sub-zh × Kartenrahmen) | In den ersten Frames eines Kaltstarts sind Schriftarten nicht geladen, Textbox wird mit Fallback-Schrift gemessen, die voluminöser ist und nach oben drückt; rect-Überschneidung ist ein Mess-Falsch-Positiv (0715-01 seg03 und 0715-02 S04 zweimal bestätigt, #29 Geister-Familienvariante). Reparatur=Nach visueller Klärung qcAllow-Whitelist-Ausnahme für dieses Element-Paar (andere Assertionen bleiben); nicht wegen einiger weniger Frames das Layout ändern |
| 32 | Engineering-Workflow | QC meldet für das gesamte Video viele place@72,*-Überlappungen im linken Bereich, gerenderte Frames zeigen visuell keine Überlappung | Die Place-Box im linken Bereich bei Seiten-/Gruppen-Layout hat eine größere Bounding-Box als der visuelle Inhalt (Behälter überhöht), Box-Überschneidung ≠ visuelle Überschneidung (0715-02 gesamtes Video QC 15 Verstoßarten Stichprobe alle dieser Art). Reparatur=Nach visueller Prüfung des gerenderten Frames freigeben; dauerhafte Lösung=Place-Box-Höhe an den tatsächlichen Inhalt anpassen oder der Gruppe qcAllow zuweisen; sub-clearance über Freiraum-Linie wird separat auf Echtheit geprüft, gehört nicht hierher |
| 33 | Rendering/Export | Eine Person/ein Video in einem bestimmten Segment des fertigen Videos friert als Standbild ein, das Originalmaterial im gleichen Segment bewegt sich (tritt häufig bei 4K-Hintergrundmaterial auf); mit bloßem Auge sieht es aus, als ob „die Person sich nicht bewegt“, aber md5/mpdecimate erkennt es nicht | 4K-Hintergrund OffthreadVideo dekodiert beim Rendern ruckelnd und liefert wiederholte Frames (bei überlagerten komplexen SVG-Animationen tritt dies leichter auf) → auf 1080p H264 Hintergrundquelle umsteigen (Composition ist ohnehin 1080p, 4K ist pure Verschwendung und belastet die Dekodierung), Hauptkomponente auf 1080p-Quelle umstellen und neu rendern behebt es. Diagnose zwingend ffmpeg -vf freezedetect=n=-50dB:d=0.3 verwenden – unterschiedliche md5 ≠ bewegtes Bild (Kompressionsrauschen von Standbildern lässt ebenfalls jedes Bild unterschiedlich aussehen, das täuscht), mpdecimate wird ebenfalls durch Rauschen gestört und ist unzuverlässig; nur freezedetect hat Rausch-Toleranz und ist genau; Material-Übernahmesequenzen (Person geht ab, Material selbst steht still) freeze-Meldung sind normal und kein Bug (0721-01 bestätigt: 63-69s Personensegment Freeze, nach 4K→1080p Quelle freezedetect null Freezes). Anhang: Auslieferungs-Codierung empfohlen -bf 0 -g 30 -movflags +faststart zur Verbesserung der Player-Kompatibilität (Remotion-Standard viele B-Frames, einige Player ruckeln beim Seek) |
| 34 | Rendering | Material-Segment im fertigen Video zeigt große reine Schwarzflächen/tote schwarze Balken/leeres Glas, nur ein schmaler vertikaler Streifen bleibt; sowohl Platzhalter als auch echtes Material können betroffen sein; nach dem Rendern übersieht man es leicht (Stichprobenpunkt fällt nicht in das Material-Fenster) | OffthreadVideo „überdimensionierte Box style width + objectFit/translate“ wird im Rendering die width nicht wirksam → Inhalt wird auf Kartenbreite gerendert und dann durch Verschiebung abgeschnitten (0721-01 sechs Segmente bestätigt: S02/S06/S07/S10/S13/S16, einzig korrektes S14 verwendete „video 100% Kartenbreite + transform scale übersteuert“). Reparatur und Nach-Render-Prüfung = remotion-assembly references/broll.md Regel 12 |
| 35 | Engineering-Workflow | Team-Mitglied/QC meldet „ganzes Video null Verstöße“ aber es gibt tatsächlich viele Überlappungen – falsche Durchreiche | QC-Sonde (src/design/qc.tsx) hängt in jeder Scene, läuft nur im Frame-Bereich dieses Segments; wenn eine Scene <QcProbe/> vergisst (nur qc?:boolean deklariert aber nicht nutzt) → dieses Segment hat keine Assertionen → summary ist sauber = falsche Durchreiche (0722-01 Vorfall: 20 Segmente, nur 1 hatte die Sonde, Meldung null Verstöße, tatsächlich 8 echte Verstöße). Reparatur bereits umgesetzt: Sonde sendet pro Frame einen Coverage-Heartbeat QC{hb:1,n}, render-service.cjs qc prüft „Coverage-Frames/Render-Frames“, <90% oder durchgehend 0 Elemente → [FAIL] Coverage unzureichend statt „null Verstöße“. Disziplin: „Null Verstöße“ muss unterscheiden können zwischen „getestet und okay“ und „gar nicht getestet“; in der Produktion zunächst eine kurze QC-Sequenz laufen lassen, um Coverage-Ziel zu bestätigen, dann das ganze Video. Nachtrag (2026-07-24 Prüfung festgestellt): Die Sonde muss am Root hängen (Montage-Root {qc ? <QcProbe/> : null}, wie Koubo072101/072201) – wenn sie in einer Scene hängt, liefert useCurrentFrame über Sequence lokale Frames (ab 0), die Heartbeat-Framenummern sind dann falsch im globalen Frame-Bereich: gesamtes Video/Cross-Segment-QC Coverage kann falsch FAIL sein (lokale Frames verschiedener Segmente überschneiden sich, nach Deduplizierung << Gesamt-Frames), ein fehlendes Segment kann durch lokale Frames benachbarter Segmente maskiert werden und fälschlich als PASS durchgehen; render-service hat bereits Frame-Bereichsfilter hinzugefügt, aber globale Coverage ist nur mit Root-Montage garantiert. Single-Segment-QC-Kurzläufe decken diese Falle nicht auf – zur Prüfung der Absicherung Szenarien verwenden, die einen Fehler auslösen (Cross-Segment-Bereich / absichtlich eine Sonde entfernen), nicht nur normale Segmente testen |
| 36 | Designsprache | MG-Text im linken Bereich verschwimmt auf hellem Hintergrund nahezu unlesbar, scrim scheint nicht zu wirken | InfoScrim (src/design/InfoScrim.tsx) hat standardmäßig einen Verlauf von links transparent → rechts abdunkelnd, druckt nur die rechte Seite ab; wenn die Info-MG auf der linken Seite des Videos platziert ist (Benutzerentscheidung linke Information) → linke MG liegt durchgehend im hellsten Bereich (weißer Schrank/helle Wand) ohne Hintergrund (0722-01 bestätigt; 0715-02 hatte den gleichen Bug schon einmal getroffen, aber nur lokal im Segment einen Patch gesetzt, die Basis-Lücke nicht geschlossen). Reparatur=InfoScrim erhält einen side-Parameter (Standard 'right' für Kompatibilität mit alten Videos), bei links liegender Information side="left" übergeben. Lehre: Basis-Fehler an der Basis oder als eigenen Eintrag beheben, niemals nur lokal in einem Segment patchen – lokaler Patch bedeutet, die Falle für das nächste Video offen zu lassen |
| 37 | Engineering-Workflow | Rendering bleibt im Bundling stecken, copyfile ... ETIMEDOUT, Prozess lebt aber kein Output | public/footage/ enthält viele alte Materialien (0722-01 waren es 2GB/6 Stücke), Remotion bundle kopiert jedes Mal das gesamte public/ in ein temporäres Verzeichnis → copyfile Zeitüberschreitung (Unterscheidung zu #25 dataless: dies ist Größe/Kopierdauer, die Dateien selbst sind physisch vorhanden). Reparatur=Nur das aktuelle Material in public/footage/ behalten, den Rest nach ../footage-hold/ verschieben (2GB→466MB, bundle von hängend→1,8s). Disziplin: Nach Auslieferung der Reparatur nicht blind zurückrollen – vor dem Zurücksetzen fragen „Wird dieses Video noch einmal gerendert?“ (0722-01 gleiche Falle durch Zurücklegen von Material nach Auslieferung zweimal getroffen) |
| 38 | Engineering-Workflow | Jeder dateiberührende Prozess hängt dauerhaft, kill -9 wirkungslos, UE-Zombies häufen sich; Neuinstallation von Abhängigkeiten/Node-Wechsel hilft nichts | macOS-Code-Signing-Überprüfungs-Daemon (amfid/syspolicyd) hängt → Binärdateien, die Signatur-Prüfung benötigen, können nicht ausgeführt werden (Unterschied zu #25 dataless, #37 Größe, #23 Deadlock – dies ist systemebene). Diagnose: ffprobe -version (System) funktioniert normal, aber node_modules/@remotion/compositor-darwin-arm64/ffprobe -version hängt dauerhaft = Signatur aufgehängt; `ps -axo pid,stat,comm |
| 39 | Materialerfassung | Grok Bild-zu-Video drei Arten von Fehlern: Standard niedrige Auflösung 736×400 vergrößert unscharf / Elemente deformieren sich selbst und vermehren sich (morph) / Spezifische Kompositionen werden zwangsweise „aufgefüllt“ | ① Auflösung: Ohne explizite Angabe wird Standard 736×400 verwendet (2,6x Vergrößerung verwischt halftone/Beschnittkanten) – Anweisung muss fest 720p(1280×720) anfordern, Tests 4/4 erfolgreich; CLI resolution_name hat nur 480p/720p zwei Stufen, Anforderung von 1080p führt zum Fallback (2026-07-24 getestet), 1080p muss über xAI API (grok-imagine-video-1.5) oder anderes Tool gehen. ② morph Vermehrung: Zahnrad wächst/Kalender mehr Felder/Ring zersplittert – am Ende des Prompts eine bindende Einschränkung für das anfällige Element hinzufügen („Größe beibehalten, keine Vermehrung“ „Feldanzahl und Farbe unverändert“ „Ring durchgehend ohne Unterbrechung“). ③ Hartnäckige Vervollständigung: „Spärliche Elemente + große leere Hintergrundfläche + hohle menschliche Form + Gesichtsfragmente“ löst Ausfüllen des leeren Raums, Ausfüllen der Hohlräume, Erzeugen eines vollständigen Gesichts aus (6 Versionen von 14 alle gescheitert) – keine weiteren Verbote hinzufügen, die auslösende Eingangskomposition ändern (Fragmente die gesamte Fläche einnehmen lassen / negativen Raum mit Umrisslinien definieren / Gesichtsfragmente entfernen, nach einer Änderung sofort erfolgreich). gbro headless Aufruf benötigt zusätzlich --always-approve --permission-mode bypassPermissions --max-turns 10 um das Video-Tool auszulösen. Siehe remotion-broll SKILL Abschnitt „KI-generierte Collage B-roll“ |
| 40 | Rendering | Kleines rundes Namens-Avatar-Bild wirkt schief, goldener Ring zeigt keilförmigen Hintergrund, CSS-Winkelanpassung macht es immer schiefer | Verbot: Innerhalb des kleinen runden Zuschnitts CSS rotate+Verschiebung zum Ausrichten des schiefen Avatars verwenden – Rotation dreht um img-Mitte, das sichtbare Fenster ist jedoch von der Mitte versetzt, beides verstärkt den schiefen Eindruck und dreht den Rand frei (0724-01 zwei Iterationen bis zur Korrektur). Richtige Lösung=Offline-Backen: PIL das Porträtbild gerade rücken (± wenige Grad) und dann auf ein „Gesicht zentriertes Quadrat“ zuschneiden und als Asset speichern, NamePlate avatarImgStyle mit 100%/left:0/top:0 vollflächig direkt einfügen; globales Asset public/assets/author-avatar.png ist bereits vorhanden, direkt referenzieren |
| 41 | Engineering-Workflow | render-service segment ganzes Video Rendering meldet frame range 0-N is not inbetween 0-(N-1) | Die Start-/Endparameter von segment/splice sind inklusive Framenummern: ganzes Video = 0 (durationInFrames-1) (1355 Frame Composition übergibt 0 1354), direktes Übernehmen von durationInFrames verursacht Fehler |
| 42 | Designsprache | Benutzer sagt Untertitel „sehen nicht gut aus“ kann aber nicht sagen, was falsch ist | Zuerst prüfen, ob die englische Zeile mit einer chinesischen Schriftart gerendert wird – die lateinischen Zeichen chinesischer Schriftarten sind nur als Lückenfüller gedacht, Zeichenbreite und -abstand sind komplett falsch, das ist die Hauptursache für „kann nicht genau sagen, was seltsam ist“ (BilingualSub alte Version verwendete FONT.zh für en-Zeilen, 2026-07-26 bestätigt). Reparatur=Englische Zeilen müssen mit einer proportionalen westlichen Schriftart FONT.subEn (Inter) gesetzt werden; gleichzeitig die chinesische Zeile auf Schriftgewicht prüfen, Untertitelebene verwendet FONT.subZh (PingFang SC) 400 Light, nicht die 700 der Verpackungsebene. Zur Beurteilung der Schriftqualität muss das Bild 1:1 lokal ausgeschnitten werden, Miniaturansichten zeigen das nicht (wie #03); vor der Änderung mehrere Versionen desselben Frames als Vergleich anbieten, nicht selbst eine Version raten |
| 43 | Langfilm-Montage | qc-master null FAIL null WARN, Benutzer sagt jedoch „Qualität stark abweichend / Animationen werden hässlicher / Untertitel entsprechen nicht dem Skill“ | Technische Abnahme prüft „Ist das Video kaputt?“, nicht „Wurde die Basis des Skills verwendet?“ – zwei verschiedene Dinge, nicht das grüne Licht ersterer als Beweis für letzteres nehmen. 0727-01 bestätigt: 25 Segmente selbst gebaut, 324 Zeilen _kit.tsx Karten neu erstellt, Animationen nur quad Fade-In mit Verschiebung 0, design/motion null Referenzen, nur 8 von 25 Segmenten hatten Ausgänge, 77 Untertitel alle en leer zurückgesetzt auf einzeilig chinesisch; qc-master alle PASS trotzdem freigegeben. Reparatur=Montage ⓪ Prüfung node scripts/check-scenes.mjs src/koubo/scenes-<Filmname> (keine motion-Referenz / keine Ausgangs-Elemente = FAIL) + check-subs.mjs en-Fehler-Prüfung, beide nach dem Code-Schreiben und vor dem Rendering ausführen. Diagnose-Reihenfolge: Zuerst prüfen, welche Techniken fehlen, dann prüfen, ob die Parameter richtig sind – check-scenes ein Befehl zeigt sofort, ob das Rad neu erfunden wird, deckt aber nur die eine Art von „Hässlichkeit“ ab: Basis nicht verwendet; Farbschema/Rhythmus/Schriftart/Komposition haben jeweils ihre eigene Quelle (typography/rhythm/#42/layout), nicht einen einzelnen Pfad als Universal-Diagnose betrachten. ⚠️ Beigefügte Lehre: Damals wurde der check-subs-Befehl mit falschem Parameter übergeben (Filname statt Dateipfad) und meldete ENOENT, der Fehler wurde ignoriert und weitergemacht, daher wurden auch hängende einzelne Zeichen am Zeilenanfang und Überbreite 16,5 Zeichen übersehen – Validierungsskript-Fehler ≠ Validierung bestanden, wenn es nicht läuft, ist es nicht gelaufen |
Klassifikationsreferenz (nach Basis-Filmsystem reserviert): Rendering / Animations-Timing / Studio lokaler Betrieb / Export / Soundeffekte / Materialerfassung / Langfilm-Montage / Designsprache / Engineering-Workflow.
Warnzone (Fehlersammlungsverzeichnis 44 Einträge, Screenshot bereitgestellt vom Benutzer am 2026-07-16)
Regel: Dies ist eine Landkarte der Fallen, keine Fehlersammlung – nur Symptomname, keine Reparatur, die meisten haben wir noch nicht getroffen. Wenn eine dieser Fallen getroffen wird: Fix + menschliche Abnahme, dann hochstufen in die offizielle Tabelle oben. Wenn bereits mit unseren bestehenden Fehlern abgeglichen, ist die Zugehörigkeit direkt markiert.
| Kategorie | Falle (Originaltext) | Unser Status |
|---|---|---|
| Rendering | LOGO flackert / Video Standbild / Transparent ProRes schwarzer Rand / Animation oben links eingefroren / Bild verzerrt / Webseite Chrome / Gesicht verdeckt / Untertitel kollidieren / Emoji / Logo Schwarz auf Schwarz | Bereits abgedeckt: Untertitel kollidieren = #14 Überlappung; Emoji = #04 + Icon-Standard (lucide echte Icons); Gesicht verdeckt = Drei-Zonen-Verbot (layout.md); Logo Schwarz auf Schwarz = Logo dark/light Doppelversion Standard (texture.md). Restliche 6 nicht getroffen, Vorsicht: Video Standbild (OffthreadVideo hängt fest), Bild verzerrt (objectFit), Webseite Chrome (Screenshot mit Browser-Rahmen auf Karte) |
| Animation/Timing | Phase Index ohne break / Animation passt nicht zum Voiceover / spring overshoot | Bereits abgedeckt: Animation passt nicht zum Voiceover = §2.5 Wort-für-Wort-Ausrichtung + Hauptvisual auf SRT; spring overshoot = motion.md §11 Verbote. Phase Index ohne break nicht getroffen (switch case fehlt o.ä. Problem) |
| Studio/Lokaler Betrieb | Studio sofort geschlossen (SIGPIPE) / EMFILE Handle erschöpft / staticBase hash abgelaufen / HEVC schwarzer Bildschirm / id mit Unterstrich / Studio+still gleichzeitiger Crash | Alle nicht getroffen. Vorsicht bei zwei hohen Wahrscheinlichkeiten: HEVC schwarzer Bildschirm (iPhone-Bildschirmaufnahme-Material ist HEVC, vor der Aufnahme in H.264 konvertieren), Studio+still gleichzeitiger Crash (gleichzeitiges Ausführen von still/render bei geöffnetem Studio kann kollidieren – unser Workflow ist oft parallel, wenn getroffen, nicht zuerst am Code zweifeln) |
| Export | C-Laufwerk voll / OOM / Qualität unscharf / Rendering langsam / Encoded Fehlinterpretation | Bereits abgedeckt: Qualität unscharf = #08 (jpeg100+crf15); Encoded Fehlinterpretation = #09 Erfolgskriterium nur Log + Zeilen (gleichartig: Log-Ausdruck ≠ Erfolg). OOM/Rendering langsam nicht getroffen (bei 4K-Langfilmen auf parallele Frame-Anzahl achten) |
| Soundeffekte | impact-heavy über den ganzen Film / Jede Gruppe eigenes whoosh / Ton vor Bewegung | Bereits abgedeckt: impact-heavy über den ganzen Film = audio.md schwere SFX im gesamten Film ≤2 Stellen (Benutzer lehnte Eröffnungs-whoosh aus gleicher Quelle ab); Jede Gruppe eigenes whoosh = Serienschlag soll pro Item leichten Pop haben, nicht jede Gruppe einen schweren Akzent. „Ton vor Bewegung“ nicht getroffen, unklar, verdächtig (vermutlich SFX-Frame und Bewegungs-Frame zeitlich verschoben, bei Treffer definieren) |
| Materialerfassung | yt-dlp 403 / fetch kein Proxy / Wikimedia GFW / Firefox Cookie / PNG ist eigentlich HTML | Teilweise abgedeckt: yt-dlp Erfassungspipeline in broll.md (unser Download von Lovable hatte noch keinen 403, bei Treffer zuerst cookie/UA/Proxy-Dreierpack hinzufügen). „PNG ist eigentlich HTML“ typische Falle: Heruntergeladenes „Bild“ ist eigentlich eine Anti-Hotlinking-HTML-Seite – vor der Aufnahme mit file-Befehl überprüfen, diesen Schritt direkt als festen Bestandteil der Material-Pipeline übernehmen |
| Langfilm-Montage | Kapitel ohne Atempause / Host-Karte ↔ Chip kollidieren | Bereits abgedeckt: Kapitel ohne Atempause = motion.md §1/§2 Kapitel-Leerraum; Host-Karte ↔ Chip kollidieren = layout.md Regel 9 gegenseitig ausschließende Positionen (gleichartige Überlappung) |
| Designsprache | House Style nicht nachgebildet / kicker overclaim / Seitenverhältnis nicht berechnet / Untertitel wiederholen | House Style nicht nachgebildet = der gesamte Existenzgrund unseres design-system. kicker overclaim (kicker-Text übertreibt, was der Voiceover nicht sagt), Seitenverhältnis nicht berechnet (Material verzerrt), Untertitel wiederholen (Untertitel und MG-Text wiederholen denselben Satz) drei nicht getroffen – Untertitel wiederholen Vorsicht: unser Entscheidungsprinzip, dass chip und Stamp sich nicht wiederholen, ist dasselbe Prinzip |
| Offizielle Fallen (remotion-dev/skills dokumentiert, 2026-07-16 Abgleich, siehe docs/官方skills对照.md) | ① CSS transition/animation/Tailwind-Animationen = Rendering zwingend kaputt (offiziell FORBIDDEN, Codex neigt am ehesten dazu, sie einzumischen) ② ffmpeg Zuschnitt ohne Re-Encoding = erstes Frame Standbild (eine Ursache von „Video Standbild“ im Basisfilm, -c copy Zuschnitt verboten) ③ Sequence mit Medien ohne premountFor = erstes Frame ruckelt/schwarz ④ @remotion/transitions frisst Gesamtdauer (zwei Szenen überlappen, SRT-Hard-Alignment-System verschiebt gesamtes Video) ⑤ fetch externe Daten ohne delayRender = leere Frames wurden gerendert | ①②④⑤ nicht getroffen, Pre-Check vor dem Coden; ③ premountFor wird gemäß Regel verwendet (Scene06 verhindert erstes Frame schwarz) → operative Ableitung neue Falle #28 (premountFor und layout='none' Typen gegenseitig ausschließend) |
| Engineering-Workflow | Änderungsbereich ausgedehnt / Schriftgröße <48px / Automatisch 4K render | Änderungsbereich ausgedehnt = Negativbeispiel zur Disziplin „nur dieses Segment rendern/nur dieses Segment ändern“ der Segment-Werkstatt; Schriftgröße <48px (bei 1080p können Zuschauer Text unter 48px nicht lesen, dies muss von der minimalen Anmerkungsgröße 20-22px in specs.md unterschieden werden: er bezieht sich wahrscheinlich auf den Hauptinformationstext); Automatisch 4K render (unbestätigt automatisch großes Rendering starten, das die Maschine belastet) – diesen Punkt direkt als Disziplin übernehmen: Rendering nur im vom Benutzer/Plan bestätigten Umfang starten |