Anschreiben mit Bitte, Vorrang, Lesereihenfolge und vollständiger
Dateiliste der Anlage 7 (nur Belege, keine Arbeitsnotizen). BN-01: doppelte
.env-Einträge bereinigt, kurzzeitig abgeschaltete Rechtebestätigung wieder
aktiv, keine Uploads in der Lücke.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
OpenAI: Zero Data Retention derzeit nicht beantragbar; DSE-Entwurf nennt die
Standardbehandlung der API (kein Training, bis zu 30 Tage
Missbrauchserkennung) und mögliche Verarbeitung in den USA auf Basis von
SCCs, keine EU-Datenresidenz. Alle Dienstleisterverträge bestehen seit vor
dem Go-Live; die Belege sind Neuausfertigungen vom 13.10.2026. Hetzner
Anlage 1 erweitert. Frage 5 um die Impressumsangabe nach § 18 Abs. 2 MStV
ergänzt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Screenshots und Verträge geprüft und in nachweise/ zusammengeführt;
Binärdateien per .gitignore ausgeschlossen (vertraulich, Kunden- und
Organisationsnummern, Größe). Vertragsübersicht mit Fassungen, Daten und
Drittlandgrundlagen. Versandfassung: DPF-Status Cloudflare vom 13.10.2026,
OpenAI-DPA unterzeichnet am 13.10.2026. Juli-Zahlen auf Live bestätigt.
Protokollzeile v1.9.0 im Git-Deploy-Dokument.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nachher-Liste vom 13.10.2026: ein Admin-Konto mit Passkey und TOTP,
Super-Admin, keine Editoren, Zugänge außerhalb der Anwendung nur beim
Inhaber. Versandfassung D3 und Klärung U13 nachgezogen. Tinker-Befehl für
die Juli-Kampagnen nutzt status->value (Enum).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Versandfassung mit Codeabgleich vom 13.10. korrigiert (Zugriffsprotokoll
des Beweisarchivs als Ziel, Admin-Bestand, Juli-Mails mit Zahlen und
Empfängerregel, C2PA als geplant, Gate-Dialog heute), Anlage 6 abgelegt.
Neuer Ordner rechtliches/nachweise mit Checkliste, Juli-Mailtexten,
OpenAI-Endpunkten, BN-01-Vorlage und BN-02-Ablauf inklusive Notfallzugang.
Vorfassungen, Codeauswertung, To-do-Liste und Rückfragen nach
archive/rechtliches-2026-10. Deploy-Notiz archive/betrieb/deploy-v1.9.0.md.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Label „Gebuchte Platzierung“ (en „Booked placement“) statt „Top-Platzierung“
auf Start- und Branchenseite. Die Erklärung „Das Unternehmen hat diesen Platz
gebucht …“ erscheint am Desktop beim Überfahren und auf Mobil per Tipp, ohne
den umgebenden Link zu öffnen; Screenreader lesen sie mit. Kopfzeile über dem
Aufmacher „Aktuell“ statt „Top-Auswahl“ (automatische Auswahl, keine
Redaktion). Preisseite nennt die Kennzeichnung (Rechtspaket U10).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- ErrorReportScrubber entfernt die Daten aller Breadcrumbs und bereinigt ihre
Nachrichten; Livewire-Breadcrumbs standardmäßig aus — das SDK hängt dort
Formularwerte und Properties an (Roadmap 4.9). Bestand in GlitchTip geprüft:
keine Formular- oder Passwortdaten.
- SessionRevocation::legacyCachedMark() entfernt (Übergang bis v1.6.0)
Changelog: Sicherheit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- git-deploy.md Abschnitt G: Rotieren, Sichern, Umschreiben, Prüfen,
Hash-Zuordnung, Push, Server, Forgejo/NAS, lokales Aufräumen
- Protokoll: Speicherbereinigung in Forgejo und auf dem NAS erledigt,
keine weiteren Klone, Live-Schlüssel bereits rotiert
- Agenten-Regel: keine personenbezogenen Daten oder Schlüssel ins Repository
- Roadmap: 1.1 und 1.2 erledigt, Context7 und lokales MySQL-Root unter 1.3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Zuordnung alter zu neuen Commit-Hashes in dev/archive/commit-map-2026-10-09.txt
- Git-Deploy-Protokoll: Eintrag und einmaliger Server-Abgleich (Tags mit
--force holen, gc), Speicherbereinigung in Forgejo und auf dem NAS
- README und Roadmap 1.1/1.4 nachgeführt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- dev/roadmap.md neu: alle offenen Punkte aus Plänen, Audits und Protokollen,
gegen Code und Git abgeglichen (Stand v1.7.0)
- Abgeschlossenes ins Archiv: 2026-09-01 → archive/2026-09-nutzergewinnung,
2026-09-11-audit → archive/2026-09-audit, lagacy-rechnungen →
archive/legacy-rechnungen, Deploy-Protokoll v1.1.0, Umami-Snippets,
Go-Live-Roadmap vom 20.07.
- Aktiv bleiben eigene Ordner bildrechte/ (Plan Fassung 2, Decision-Update)
und changelog/ (Decision-Update Changelog)
- dev/README.md als Ordnerkarte neu, Verweise und zwei Code-Kommentare auf
die neuen Pfade
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Auf Live meldete memberships:resync-auto nach v1.4.0 „vorher 19607, nachher 9":
syncMembershipsForEmail() entzog Konten ohne email_verified_at alle
automatischen Rechte, und 19.597 davon gehören Bestandskonten aus dem
Altsystem. Jetzt wird nur entzogen, was keine E-Mail-Grundlage mehr hat —
unabhängig vom Kontostatus (S-03 bleibt wirksam); neue Rechte weiterhin nur
für aktive, verifizierte Konten (F01).
memberships:resync-auto läuft in einer Transaktion, kennt --dry-run und rollt
zurück, wenn mehr als 5 % (mindestens 50) der Rechte wegfallen würden
(--force zum Erzwingen). Probelauf gegen die Live-Kopie: 19.607 → 19.316.
Wiederherstellung: storage/app/private/restore-company-user-auto-2026-10-07.sql
(nicht versioniert, INSERT IGNORE, idempotent).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Audit: dev/sicherheit/SICHERHEITSAUDIT-2026-10-07.md, Plan und Entscheidungen:
dev/sicherheit/ENTWICKLUNGSPLAN-SICHERHEIT-2026-10-07.md.
- S-01 Legacy-Rechnungen fremder Kunden nur mit billing:manage (auch Kundenroute).
- S-02 Kontaktzuordnung auf der Firmenanzeige verlangt companies:write, $id gesperrt.
- S-03 CompanyMembershipObserver: automatische Firmenrechte werden bei jeder
Adress-/Zuordnungsänderung sofort neu bewertet; memberships:resync-auto.
- S-04 Passwortwechsel beendet alle anderen Sessions (PasswordChanger), Reset
alle Sessions und offene Login-Links; Fortify PUT /user/password abgeschaltet.
API-Tokens bleiben bestehen.
- S-05 Google: email_verified Pflicht, feste Bindung über die Provider-ID;
Erstverknüpfung bestehender Konten außerhalb gmail/hd nur per Bestätigungslink
in derselben Browser-Session.
- S-06 Frischer Identitätsnachweis (Passwort, App-Code, E-Mail-Code oder
Passkey) vor E-Mail-Wechsel, erster 2FA-Einrichtung und Token-Erzeugung;
Hinweis-Mails an die (bisherige) Kontoadresse.
- Entscheidung 5: Passkeys (Fortify, @laravel/passkeys) für alle; Super-Admins
und Admins bestätigen die Session für den Admin-Bereich per Passkey oder
App-Code (EnsureStrongAdminAuthentication, Notfallschalter
AUTH_REQUIRE_STRONG_ADMIN); Reset des zweiten Faktors durch Super-Admins.
Neue Migration: create_passkeys_table. Suite 2.403 grün (1 übersprungen),
Larastan ohne Meldung.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Am 07.10.2026 hat das RefreshDatabase eines frischen Demo-Projekts (Test der
Vorlagen aus dev/git-deploy-monitoring) die lokale Datenbank `pressekonto` auf
global-mysql vollständig geleert (Binärlog binlog.000009, Pos. 566161486).
Ursache: docker-compose.yml setzte DB_* als Container-Umgebungsvariablen, die
in Laravel Vorrang vor jeder .env haben; die phpunit.xml des Demo-Projekts
erzwang kein SQLite. Die eigene Suite war nicht beteiligt (force="true" und
Guard in tests/TestCase.php greifen; Gegenprobe mit MySQL-Variablen grün).
- docker-compose.yml: DB_* entfernt (Werte identisch in .env), wirksam nach
Neuerstellen des Containers.
- Baukasten: „Testdatenbank absichern" (phpunit.xml mit force, Guard,
Gegenprobe) als Pflicht vor RefreshDatabase.
- .ai/rules/general.md und CLAUDE.md: fremde/frische Laravel-Projekte nur mit
SQLite :memory: testen; migrate hier erst nach migrate:status.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Vorlagen in einem frischen Laravel 12 eingebaut (30 Tests grün), deploy.sh
gegen ein simuliertes Repository durchgespielt (Deploy, Abbruch bei
Migrationen, Drift, Rollback, fehlender Worker). GlitchTip-Aufbewahrung heißt
seit Version 6 GLITCHTIP_RETENTION_DAYS — in der Projekt-Doku korrigiert.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Anlass 06.10.2026: Nach dem Deploy von v1.3.0 hat queue:restart den Worker
beendet, Supervisor lief nicht, über eine Stunde blieben KI-Prüfungen und
Mails liegen, ohne dass es auffiel.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>