Files
WP-LIT-MCP/docs/superpowers/notes/2026-09-26-etappe-2b-abnahme.md
T
janniclas.loosenandClaude Opus 5.5 10c98cd3c6 docs: Divi guides shortform/placeholders, hints name the write tools; test: Divi write end-to-end; version 0.3.0
- Hints (PostPresenter::DIVI_NOTE, outline, catalog) and server instructions (tree_rev rule)
  name the Divi write tools; guides divi-shortform and divi-placeholders, additions to
  divi-structure, divi-attrs, overview (tool groups, 'nur lesen'), workflows, content-types.
- D7 wording and the S7 exception in readme, guides and spec 1.3/5.2; readme 0.3.0.
- ToolNamingTest: every referenced guide topic exists; overview lists exactly the topics.
- tests/Integration/divi-write-smoke.sh: all write tools via OAuth, editor without
  unfiltered_html with benign probes (S6), Divi's own save filters on the new fixture
  synthetic-divi-filters.html (S7); admin-render.php accepts the new wrap class.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01At3V6SjwbMe6eMzVGW3Hs7
2026-09-26 17:13:59 +02:00

113 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Etappe 2b – Manuelle Abnahme (Divi schreiben)
Vorbereitet von Task 10 (Hinweise, Guides, Version 0.3.0, Ende-zu-Ende-Test). Automatisch geprüft sind
bereits:
- alle Unit-Tests (`composer test`) und Lint (`composer lint`);
- die fünf Integrationsskripte `divi-write-smoke.sh`, `divi-read-smoke.sh`, `mcp-smoke.sh`,
`wp-basis-smoke.sh` und `media-admin-smoke.sh` (alle in `tests/Integration/`).
`divi-write-smoke.sh` prüft über den OAuth-Endpunkt:
- Einfügen, Ändern, Verschieben, Löschen und Duplizieren;
- Ersetzen mit Probelauf;
- `lit-content-create` mit Divi-Inhalt;
- den ersten Abschnitt auf einer leeren Seite;
- einen Redakteur ohne `unfiltered_html`: unberührte Bytes bleiben gleich, und es wird weder Skript,
Event-Handler, `javascript:` noch ein eingeschleustes Attribut gespeichert oder gerendert;
- Divis eigene Speicherfilter (Seite mit eigenen HTML-Attributen).
Details stehen im Report von Task 10 (`.superpowers/sdd/2026-09-26-etappe-2b-divi-schreiben/task-10-report.md`).
Die folgenden Punkte lassen sich nicht automatisch prüfen, weil sie den echten Divi Visual Builder und den
claude.ai-Connector brauchen. Jan-Niclas prüft sie selbst (Spec §1.3 Nr. 2, §13 „Bearbeitbarkeit im
Visual Builder“). Abweichungen als kurze Notiz zurückmelden; sie werden Folgeaufgaben (z. B. anders
gespeicherte Spaltenbreiten, D8).
## 1. Visual Builder: von Claude gebaute Seite
- [ ] Dieser Auftrag in claude.ai:
„Lege eine Entwurfsseite ‚Abnahme Divi‘ an mit Hero (Überschrift, Text, Button mit Preset), einer
Zeile 1/3 + 2/3 mit Bild und Blurb, einem Akkordeon und einem Kontaktformular.“
Erwartet:
- Claude liest vorher `lit-divi-design-system` und `lit-divi-catalog`;
- dann `lit-content-create` mit `divi` (oder eine leere Seite plus `lit-divi-insert`);
- die Antwort nennt `preview_url` und `edit_url`.
- [ ] Die Seite im Divi Visual Builder öffnen (`edit_url`) und prüfen:
- [ ] Alle Module erscheinen als **native Module**, nicht als Code-Modul.
- [ ] Die Admin-Labels folgen dem Muster „<Abschnitt> – <Modul>“, z. B. „Hero – Button“.
- [ ] Jedes Modul lässt sich anklicken, ändern und speichern, ohne Fehlermeldung des Builders.
- [ ] Die Spaltenbreiten stimmen (1/3 + 2/3), auch in der Spalteneinstellung des Builders.
- [ ] Farben aus `{{color:…}}` sind als **globale Farbe** verknüpft: der Farbwähler zeigt die globale
Farbe, nicht einen festen Hex-Wert.
- [ ] Das Button-Preset ist im Builder als Preset ausgewählt.
- [ ] Akkordeon-Einträge und Kontaktformular-Felder sind einzeln bearbeitbar.
- [ ] Eine zweite Seite nur mit `lit-divi-insert` aufbauen lassen: leere Seite anlegen, dann
„Füge einen Abschnitt ‚Start‘ mit Überschrift und Text ein“. Im Builder öffnen: der Abschnitt
erscheint normal und ist bearbeitbar (Ruling S9: Hülle `divi/placeholder` wie beim Builder).
## 2. Visual Builder: von Claude geänderte Seite
- [ ] Eine bestehende, im Builder gebaute Seite kopieren (`lit/post-duplicate`) und an der Kopie per
claude.ai einen Button-Text ändern, ein Modul verschieben und einen Abschnitt duplizieren lassen.
- [ ] Die Kopie im Builder öffnen und prüfen:
- [ ] Alle unveränderten Module sehen aus wie vorher (Einstellungen, Presets, globale Farben).
- [ ] Die geänderten Module sind bearbeitbar, und die Änderung ist sichtbar.
- [ ] Die Kopie eines Abschnitts heißt „<Label> (Kopie)“.
## 3. Zurück zu Claude nach einer Builder-Änderung
- [ ] Die Seite aus Schritt 1 im Builder ändern und speichern.
- [ ] Danach per claude.ai eine weitere Änderung verlangen. Erwartet:
- [ ] `rev_mismatch` erscheint nur, wenn Claude eine alte `tree_rev` benutzt.
- [ ] Nach erneutem Lesen (`lit-divi-outline`) gelingt die Änderung.
- [ ] Die im Builder gemachten Einstellungen bleiben erhalten.
## 4. Rückgängig
- [ ] Einen Abschnitt löschen lassen. Claude fragt nach (`confirm_required`) und löscht erst nach der
Bestätigung.
- [ ] Den Abschnitt über `lit/revision-restore` mit der gemeldeten `revision_id` zurückholen und im Builder
prüfen, dass er wieder vollständig da ist.
## 5. Text auf mehreren Seiten ersetzen
- [ ] „Ersetze auf allen Seiten ‚Termin‘ durch ‚Beratungstermin‘“. Erwartet:
- [ ] Claude zeigt erst den Probelauf (Treffer je Seite) und fragt nach.
- [ ] Erst danach ersetzt es.
- [ ] Im Protokoll-Tab (Einstellungen → LIT MCP → Protokoll) steht je geänderter Seite ein Eintrag mit
eigener Revision.
- [ ] Liegt ein Treffer in einem **globalen Modul**, ändert Claude ihn nicht, sondern nennt ihn
(`skipped_nodes`, „in der Divi-Bibliothek bearbeiten“).
## 6. Redakteur ohne `unfiltered_html`
- [ ] Mit einem Redakteurs-Konto verbinden; unter Einstellungen → LIT MCP → Zugriff muss die Rolle
freigegeben sein.
- [ ] Auf einer Seite eines Administrators einen Text ändern lassen.
- [ ] Die Seite im Builder öffnen. Erwartet:
- [ ] Eingebettete Inhalte des Administrators (z. B. iframe, eigenes HTML im Code-Modul) sind
unverändert.
- [ ] Die Änderung des Redakteurs ist da.
- [ ] Den Redakteur eigenes HTML/CSS/Attribute eines Moduls setzen lassen, z. B. „füge dem Button das
HTML-Attribut data-x hinzu“. Erwartet: Ablehnung mit „nur im Divi-Builder änderbar“.
## 7. Tool-Gruppen und „nur lesen“
- [ ] Unter Einstellungen → LIT MCP → Tools die Gruppe Divi auf „nur lesen“ stellen.
- [ ] Neu verbinden. Die Divi-Schreibwerkzeuge (`lit-divi-insert` usw.) fehlen; die Lesewerkzeuge sind
noch da.
- [ ] Die Einstellung zurücksetzen.
## 8. Builder-Fixtures aus 2a (falls noch offen; Ruling S20)
- [ ] Seiten mit **globalem Modul**, Preset, Variablen und Dynamic Content exportieren:
`tests/Integration/divi-export-page.php` (Anleitung in `2026-09-26-etappe-2a-abnahme.md` §1).
`composer test` bleibt grün.
- [ ] Auf einer Kopie einer solchen Seite `lit-divi-update` an einem normalen Modul ausführen. Das
globale Modul bleibt byte-identisch: Export vorher und nachher vergleichen.
- [ ] Hat die Seite Module mit eigenen HTML-Attributen oder einem eigenen HTML-Element (Erweitert →
Attribute/HTML), meldet die Antwort evtl. „Inhalt beim Speichern verändert“. Das ist dokumentiert
(Ruling S7: Divi normalisiert solche Seiten selbst). Prüfen, dass die Seite im Builder danach
einwandfrei ist.