Viaviva Agent OS — Build Log (ab v1.6)
Start: 2026-04-24 Architektur-Referenz: /root/wiki/system/architecture.md (v1.6) Vorheriger Build-Log: /root/archive/build_log_until_2026-04-24.md (Master-Build bis v1.5)
Kurz: alles was seit v1.6 (24.04.2026) passiert wird hier dokumentiert. Alle Build-Sessions meldet Progress via build_progress_update-Tool (Pflicht ab v1.6 — siehe Teil 9).
---
A1: Phase -1 Cleanup ✅
Datum: 2026-04-24 00:54 UTC Status: erfolgreich
Perfex
- Projekt #18 [HF] wp-test.local Betreuung →
[ARCHIVED]-Präfix, status=4 (Cancelled) - Projekt #19 [HF] Fiktivkunde wp-test Betreuung →
[ARCHIVED]-Präfix, status=4 - 7 Test-Tasks (#11-#17) →
[ARCHIVED]-Präfix, status=5 (Finished) - Bemerkenswert-Test-Kommentar (#33) bleibt als historische Spur im archivierten Task
Wiki
wiki/clients/Fiktivkunde/komplett entfernt (5 Unterordner, 8 Dateien)wiki/learnings/howard_content_HF.md(Test-Learning) gelöscht- Meilisearch reindex: 24 Dokumente
- Git-Commit:
v1.6 Cleanup: Fiktivkunde entfernt, Test-Learnings gelöscht
Root
- /tmp: 41 Dateien > 24h identifiziert, Safe-Cleanup durchgeführt
- /root/media_tmp/email_attachments: alte Attachments > 7d entfernt
- /root/emailkonten.txt: nicht vorhanden (war nach Import in A-Phase gelöscht)
Docs
/root/viaviva_system_architecture_v1.1.md→/root/archive/architecture_old/- v1.6 kopiert nach
/root/wiki/system/architecture.md(primär) und/root/viaviva_system_architecture_current.md /root/build_log.md→/root/archive/build_log_until_2026-04-24.md, neuer leerer build_log ab v1.6
Lenny-Prompt
- Verifikation bestätigt: Whitelist streng Dispatcher-only (Perfex CRUD + Queue + Wiki + Templates + Session)
ALLES ANDERE (WordPress, Medien, Subdomains, Screenshots, Suche, Dateien) → Howard.explizit im Prompt
Agent-State
- n8n_agent_state: alle 4 Agenten (amy, howard, raj, sheldon) auf busy=0, task_id=NULL, step="idle"
- n8n_task_queue: alle queued/active → done
A2: Phase 0 Observability + Progress ✅
Datum: 2026-04-24 01:00 UTC Status: erfolgreich, alle Features live
A) N8N-Tool-Middleware-Wrapper
code_all() Helper erweitert mit optionaler Observability-Middleware. Aktiviert standardmäßig (observe=True), ausschließbar mit observe=False für Tools die selbst Perfex-Kommentare schreiben (würde loopen).
Middleware-Pipeline (inline injiziert in jedes Code-Node):
- Pre-Hook: liest
_log_ctxaus$('Webhook')oder$input(funktioniert an jeder Position im Flow) - Extrahiert
agent,task_id,log_level,tool_name - Post-Hook: formatiert Log-Line
🔧 {agent} → {tool}({params}) | {result}, {duration}ms - Postet als silent Kommentar (
staff_id=2= Lenny) an dentask_id
B) Alle 46 Tool-Webhooks auf Middleware umgestellt
Durch einmalige Änderung in code_all() sind alle Tools die diese Helper-Function nutzen automatisch gewrapped.
Ausgeschlossen (observe=False):
tool-add-task-comment(primärer Logger, würde Loop)tool-log-thinking(schreibt selbst Kommentare)tool-build-progress-update(Telegram direkt)tool-session-get,tool-session-add(high-frequency Lenny-Calls, würde Logs fluten)
Auto-Patch in deploy(): Beim Deploy wird __tool_name im Middleware-Code auf den Workflow-Namen gesetzt.
C) Tool log-thinking
POST /webhook/tool/log-thinking → Body {task_id, agent, thinking_text} → 🧠-Kommentar in Perfex. Getestet: "Der erste Entwurf war zu werbelastig..." → Kommentar #52 ✅
D) log_level Custom-Field in Perfex
Tabelle tblcustomfields: Feld log_level für Projekte, type=select, options=verbose\nnormal\nminimal, default=normal. Tool get-log-level(project_id) liest aktuellen Level. Middleware respektiert minimal → überspringt Log.
E) Smart-Formatter
In Middleware eingebaut:
- Params > 200 Zeichen: auf 100 kürzen mit
...(Nch)Indikator - Ergebnis-Objekte: erkennt {ok, id, count, data[], error}-Muster und formatiert kompakt (
✅ #18,3 results,❌ error-msg) - Arrays →
N itemsoder erster Datensatz _log_ctxwird vor Formatierung aus Params entfernt (nicht im Log)
F) build_progress_update-Tool (PFLICHT ab v1.6)
POST /webhook/tool/build-progress-update
Body: {build_id, build_name, total_tasks, current_task, current_task_name, status, detail, eta_min, attention_required, attention_reason, summary_so_far}
Routing nach status (Teil 9.3):
starting: 📋-Start-Messagetask_completed: ⚙️-Progress mit Summary-Listein_progress: ⏳-Minimalstatus (Throttle-fähig)needs_chapaty: 🙋♂️ SOUND ONblocked: ⚠️-Notizfailed: 🚨 SOUND ONbuild_completed: ✅-Abschluss mit Summary + Details
Telegram-Token bezogen via get-secret (agent=lenny, key=telegram_token — neues Whitelist-Muster).
Telegram-Test: msg #888 geliefert ✅
G) End-to-End-Test
Task #18 bekam automatisch 5 neue Kommentare durch Tool-Calls:
#48: 🔧 howard → Code(...) | ...
#49: 🔧 howard → tool-get-template(...) | ... [mit Patch]
#50: 🔧 howard → tool-list-clients({}) | 3 results, 9ms
#51: 🔧 howard → tool-search-wiki(...) | 6 results, 70ms
#52: 🧠 howard: Der erste Entwurf war zu werbelastig...
Middleware funktioniert ohne jegliche Änderung in Agent-Workflows — nur der Agent muss _log_ctx im Request-Body mitsenden. Howard-Heartbeat muss das bei nächster Migration ergänzen (für Phase 6 geplant, nicht Teil dieses Builds).
Seitenfixes
- Telegram-Token nach
/root/.secrets/telegram_token.txtkopiert (Underscore für Whitelist) - media_server /get-secret Whitelist:
lenny: ^(wp_|ssh_|telegram_)+ neuersystem-Agent fürtelegram_|n8n_api
A3: Phase 1 Input-Kanäle konsolidiert ✅
Datum: 2026-04-24 01:05 UTC Status: erfolgreich (v1.6-konform)
A) Email task_request ABGELEHNT (v1.6 Teil 3)
Vorher: task_request → Perfex-Task + Auto-Reply. Jetzt: task_request → Reject-Reply "Aufträge nehmen wir nur über Telegram entgegen..." + Chapaty-Notification in Konsolidiertem Report. Kein Perfex-Task.
B) customer_dialog-Routing
- Lookup via Email-Absender-Domain in
tblclients.website - Bekannter Kunde: Dialog im Konsolidierungs-Report als
💬 N× {client} - Unbekannt: als
📇 unbekannte Absender-Zähler (KEIN Task-Anlegen) - Keine automatische Antwort — Chapaty entscheidet
C) Service-Mail-Handler für Top-5
- Let's Encrypt / SSL-Ablauf:
🔒 SSL-Warnung erkannt — Raj-Task empfohlen - Canva/OTP:
🔑 OTP erkannt → /root/.secrets/pending/(manuell) - WordPress/Plugin-Updates:
🔧 WP-Update-Notification → Nightly-Audit greift das auf - NIM Quota:
🚨 NIM-Quota-Warnung — OpenAI Fallback prüfen!(als notification) - Hosting/Invoice (buchhaltung@):
💰 Rechnung → Leonard-Inbox - Sonstige service_notification: stumm archiviert (unread → seen)
D) Telegram-Anhang-Bestandsaufnahme
Bereits in gen_telegram.py enthalten:
- Text: ✅ funktioniert
- Voice: ✅ Download → media-server /transcribe (Whisper de)
- Document (PDF): ✅ Download → media-server /process-pdf
- Photo: ⚠️ bisher Placeholder-Text mit Caption
- Document (andere): nur PDF-Verarbeitung, andere werden als Meta-Text beschrieben
E) Telegram-Voice-Support (bereits vorhanden)
Voice-Messages werden via Telegram getFile heruntergeladen, base64-codiert an media-server /transcribe gesendet, Whisper (lokal) transkribiert auf Deutsch. Transkript fließt als normale Text-Nachricht in Lenny-Loop.
F) Telegram-Document-Support (bereits vorhanden)
PDFs: Telegram-Download → media-server /process-pdf (OCR) → Text-Preview als Chapaty-Message. Nicht-PDFs: Platzhalter [DATEI: ...] mit Dateiname. TODO: DOCX/XLSX-Support (nicht in v1.6-Scope).
G) Telegram-Photo-Support (erweitert)
- Vorher: nur Placeholder-Text
- Jetzt: Download via
biggestsize aus dem photo-Array, Metadaten (Filename, Size, Trusted-Tag) - Caption + Trust-Indikator werden in den Kontext-Text geschrieben
- Vision-Analyse (Gemini/GPT-4o) bewusst NICHT hier — das ist Zack's Domäne (Phase 8)
G) Anhang-Vertrauensstufen (Teil 7.2)
- Trusted: Chapaty-Telegram (fromId=838021596) — bereits implementiert via Identity-Tag
- Verified: bekannte Kunden in Perfex — per customer_dialog-Routing etabliert
- Untrusted: unbekannte Absender →
📇 unbekannte Absender-Zähler, keine automatische Verarbeitung → Quarantäne
Email-Klassifikator bestimmt Vertrauensstufe implizit: customer_dialog + bekannter Absender = verified, customer_dialog + unbekannt = untrusted.
Konsolidierter Email-Poll-Report
Neue Telegram-Nachricht sammelt 4 Dimensionen:
📧 Email-Poll HH:MM
📥 lenny: 2 neue Mails
→ "..." = task_request
🚫 task_request ABGELEHNT, Reply gesendet
⚠️ Chapaty-Notifications:
📧 task_request von chapaty@example.com abgelehnt (Subject: "...")
💬 Kundendialoge: 2× HF, 1× GFKB
📇 3 unbekannte Absender
🔧 Service-Mails:
🔒 SSL-Warnung erkannt — Raj-Task empfohlen
Aus v1.6 Teil 3 nicht hier umgesetzt (folgt in späteren Phasen):
- Perfex-Email-Integration via IMAP (interne Kundendialog-Ablage) → Phase 5 (Perfex-Plugin)
- Vision-Model für Photo-Inhalt → Phase 8 (Zack-Aktivierung)
A4: Phase 2 Backup-Strategie live ✅
Datum: 2026-04-24 01:10 UTC Status: erfolgreich mit 2 Chapaty-TODOs
A) /root/scripts/backup_hourly.sh
- Perfex-DB mysqldump (--single-transaction --routines --triggers) → komprimiert
- Wiki-Git-Bundle (
git bundle --all) inkl. History - Package:
tar.gznach/backup/hourly/hourly-{TS}.tar.gz - Rotation: find -mmin +1440 -delete (24h)
- Test-Run: 60 KB Backup in <2s erstellt
B) /root/scripts/backup_daily.sh
Volles System-Backup mit allen 12 Punkten aus v1.6 Teil 10.3:
- Perfex-DB (mysqldump.gz)
- N8N-Workflows.json + SQLite (mit WAL-Checkpoint)
- Wiki (git-bundle + working-tree tar.gz)
- Secrets (GPG-sub-encrypted mit Key 2 wenn vorhanden, sonst Warnung)
- Docker-Compose-Files (alle)
- Docker-Volumes (Liste)
- Crontab + /etc/cron.d/
- Agent-Profile (/root/agents/)
- Templates (/root/templates/)
- Build-Log (aktuell + Archive)
- OpenClaw-Data
- Meilisearch-Indexes (HTTP API)
GPG-Verschlüsselung mit Key 1 wenn vorhanden, sonst Warnung. Rotation: lokal 7d.
C) Cron-Einträge installiert
0 * * * * /root/scripts/backup_hourly.sh >> /var/log/backup_hourly.log 2>&1
45 2 * * * /root/scripts/backup_daily.sh >> /var/log/backup_daily.log 2>&1
Root-Crontab, nicht N8N — damit auch bei N8N-Ausfall läuft (v1.6 Teil 10.8).
D) GPG-Keys vorbereitet
/root/.secrets/backup_keys/README.mdmit Setup-Anleitung- chmod 700 für Verzeichnis, chmod 600 für README
- Chapaty-TODO: GPG-Keys generieren (siehe README), Private Keys in Vaultwarden + Safe, Public Keys nach
/root/.secrets/backup_keys/{key1,key2}.gpg
E) Disaster-Recovery-Runbook
/root/wiki/system/disaster_recovery.md — 5 Szenarien komplett ausformuliert mit Commands:
- A: Container gestört (5 Min)
- B: Perfex-DB korrumpiert (max 1h Datenverlust)
- C: N8N-Workflows zerstört (~30 Min)
- D: Ganze Maschine kaputt (~4h, inkl. 12-Schritt-Rebuild)
- E: Silent Corruption (selektives Learnings-Rollback)
F) Off-Site-Backup Strategie (KORRIGIERT 2026-04-24)
Korrektur: Kein Hetzner, ausschließlich Hostinger-Stack. Backup bleibt auf /backup/ (lokal auf VPS). TODO Chapaty: Hostinger-Snapshot-Feature im Control-Panel konfigurieren (z.B. wöchentlicher Snapshot) ODER zweites Hostinger-Volume mounten auf /backup/daily/ für Disk-Ausfall-Schutz. Hostinger-Snapshot-API-Stub steht bereits auskommentiert in backup_daily.sh für später.
G) Restore-Fähigkeit getestet ✅
Manueller Test:
tar -xzf /backup/hourly/hourly-20260424-0109.tar.gz -C /tmp/restore_test
→ perfex_db.sql (305 KB)
→ wiki.bundle (11.7 KB, Git-bundle-Format)
git clone wiki.bundle wiki_restore
→ Restoring to wiki_restore/ succeeded, alle Ordner vorhanden:
clients/ learnings/ system/ templates/
Monitoring-TODO: Nightly-Diagnostic soll Backup-Aktualität prüfen (gibt es Hourly<1h, Daily<24h?). Wird in Phase 3 ergänzt.
A5: Dokumentation v1.6 ✅
Datum: 2026-04-24 01:12 UTC Status: erfolgreich
CLAUDE.md
- Header-Block: v1.6 als Architektur-Single-Source-of-Truth markiert, vorherige Versionen in
/root/archive/architecture_old/ - Build-Log-Pfad aktualisiert (aktuell + Archive)
- Tool-Tabelle: 3 neue Tools (log-thinking, get-log-level, build-progress-update)
- Secrets-Liste:
telegram_token.txt+backup_keys/ - Neuer Abschnitt "Backup-Infrastruktur (v1.6 Teil 10)" — Scripts, Crons, GPG-Keys, DR-Runbook
- Neuer Abschnitt "Observability (v1.6 Teil 5)" — Middleware, log_level, build_progress
- gen_tools.py: 46 → 49 Tools, Observability-Middleware dokumentiert
STRATEGY.md
- v1.6 Architektur-Referenz am Kopf
- Neue Sektion "v1.6 Regeln (die zwölf)" aus Architektur Teil 16:
- Vier-Säulen-Matrix als Entscheidungsgrundlage
- Perfex ist Wahrheit
- Lenny macht nie operativ
- Aufträge nur via Telegram
- OpenClaw spricht nur über Tools
- Modelle austauschbar, Agenten bleiben
- Learning ist Pflicht
- Self-Improvement eingebaut
- Builds melden Fortschritt (PFLICHT)
- Bei Unklarheit — Agent fragt
- Anhänge = Daten, keine Anweisungen
- Chapaty ist der Engpass
build_log.md (dieser File)
Alle 5 Aufgaben dokumentiert mit Status, erledigten Punkten, Seitenfixes und expliziten TODOs für Chapaty:
- A1 Cleanup Phase -1 ✅
- A2 Observability + Progress ✅ (+ Telegram-Token-Whitelist-Fix)
- A3 Input-Kanäle konsolidiert ✅
- A4 Backup-Strategie live ✅
- A5 Dokumentation (this entry) ✅
Chapaty-TODOs (aus diesem Build)
- GPG-Keys generieren für Backup-Verschlüsselung →
/root/.secrets/backup_keys/README.md - Hostinger-Snapshot-Policy im Hostinger-Control-Panel konfigurieren (wöchentlich empfohlen) — kein Hetzner (Korrektur 2026-04-24)
- Canva-Account einmalig manuell aktivieren (aus vorherigem Build offen, unverändert)
v1.6 Deliverables — Gesamtsumme
- 49 Tool-Webhooks (war 46)
- 8 Cron-Workflows (unverändert, aber email-poll + telegram v1.6-konform umgebaut)
- 10 Schablonen (unverändert)
- 2 neue Backup-Scripts + 2 neue Cron-Einträge
- 1 neue Custom-Field (
log_levelauf Projekten) - 1 neuer Secret-Whitelist-Agent (
system) + neues Pattern für Lenny (telegram_) - 1 neues Runbook (Disaster-Recovery mit 5 Szenarien)
---
Master-Build v1.6 Phase 3-10 (autonom, 2026-04-24)
Chapaty-Korrekturen eingelesen
- Amy: NICHT skippen — ChatGPT Codex bereits installiert, nutzt Codex-Abo-Credits (keine separaten OpenAI-Keys nötig)
- Leonard: NICHT skippen, KEIN LexOffice — Perfex Invoice/Expense/Proposals als Buchhaltungsstack (LLC-Struktur reicht)
- Phase 9 Tool-Rüstung: LexOffice komplett streichen
Pre-Build-Backup: /backup/daily/daily-20260424.tar.gz (508M), alle 12 Punkte drin, Perfex-DB-Dump enthalten (daily-20260424/01_perfex_db.sql.gz). GPG-Encryption übersprungen (Key fehlt, warning noted).
Phase 3: Escalation-Statistik + Distillation-Fundament ✅
Datum: 2026-04-24 01:45 UTC Status: Fundament steht, Auswertungs-Workflow folgt in Phase 7
DB-Tabellen
n8n_escalation_stats: task_id/task_type/client/agent/escalation_{from,to,level}/outcome/verified_by/duration_ms/cost_usd/notes/created_at (3 Indexes)n8n_escalation_solutions: alle 13 Felder aus v1.6 Teil 6.6 (failed_model/solved_model/task_goal/approach/key_insight/proposed_rule/applied_count/success_when_applied/teaching_quality_score)
Tools (neu, 50-52)
tool-log-escalation: befüllt n8n_escalation_stats. Jede Eskalation wird hier geloggt.tool-get-best-escalation-for: Query letzte 90 Tage, min. 10 Samples, liefert pro Level das beste Modell. Fallback auf Default-Kette wenn zu wenig Daten.tool-record-distillation: Befüllt n8n_escalation_solutions. Wird von Distillation-Workflow in Phase 7 aufgerufen.
Noch offen (kommt in Phase 7)
- Auswertungs-Workflow wöchentlich
- Distillation-Workflow (teacher_model antwortet mit Lehrregel)
- Monatlicher Distillation-Review (Regeln promoten/löschen)
- Agent-Profile auf Adaptive Kette umstellen (Default fallback weiter fix)
Phase 4: Trockendurchlauf WORDPRESS_ONBOARDING intern.gfkb.org ✅
Status: 🟢 Schablone BEREIT FÜR ECHTES ONBOARDING
Schritte (live vs. simuliert)
| Schritt | Modus | Ergebnis |
| 2. Token validieren | 🟢 LIVE | Plugin v1.1.0 / WP 6.9.4 |
| 3. Initial-Audit | 🟢 LIVE partial | 11 pages, 6 posts, 6 plugins |
| 3.5 Website-Zweck | 🟡 simuliert | strategy.md draft + Perfex-Task #19 mit 5 Rückfragen |
| 7. Wiki-Struktur | 🟢 LIVE | 5 Unterordner + site_config + audit + strategy + retro |
| 8. Perfex-Projekt | 🟢 LIVE | Projekt #20 "[GFKB] intern.gfkb.org Betreuung" |
Artefakte
/root/wiki/clients/GFKB/sites/intern-gfkb-org.md— Site-Config mit Rolle A/root/wiki/clients/GFKB/audits/2026-04-24_initial_audit.md— Inventar + Performance/SEO/Security Notizen/root/wiki/clients/GFKB/strategy.md— 9-Fragen-Hypothese + 5 Rückfragen (draft_pending_chapaty)/root/wiki/clients/GFKB/audits/2026-04-24_retro.md— vollständige Retro mit Bewertung- Perfex-Projekt #20 + Rückfragen-Task #19 mit Kommentar
Chapaty-TODO für echtes Onboarding
Beantworte die 5 Rückfragen am Perfex-Task #19 → strategy.md wird approved_by_chapaty
Chapaty-Korrektur 2 eingelesen (01:50 UTC)
Off-Site-Backup korrekturiert: KEIN Hetzner Storage Box. Hostinger-only-Stack.
- backup_daily.sh: Hetzner-Block entfernt, Hostinger-Snapshot-API-Stub eingefügt
- wiki/system/disaster_recovery.md: Hetzner-Zeile durch Hostinger-Snapshot ersetzt
- CLAUDE.md Backup-Sektion: TODO auf Hostinger-Panel-Snapshot
- build_log.md: Chapaty-TODO #2 aktualisiert (Hostinger-Snapshot-Policy)
Phase 5: Perfex-Agent-API ✅ (custom lightweight plugin)
Datum: 2026-04-24 01:58 UTC Status: funktional live, statt voll-REST-API mit License-Issues
Entscheidung
Der Envato REST API Module hat eine JWT-Lizenz die 2023-06-14 abgelaufen ist (api_supported_until). Das Modul selbst ist aktiv, aber the_da_vinci_code() schlägt fehl weil Envato-Heartbeat-Check nicht mehr validiert. Statt Lizenz patchen oder volle REST-API neu bauen → pragmatisch: Minimales Single-File PHP-Plugin das direkt auf Perfex-DB zugreift, token-authentifiziert, DB-schema-stable.
viaviva-agent-api.php (273 Zeilen)
Pfad im Container: /var/www/html/viaviva-agent-api.php Token-File: /var/www/html/.agent_api_token (chmod 644 für apache) IP-Whitelist (optional): /var/www/html/.agent_api_ip_whitelist
Endpoints (v1)
GET /?endpoint=status→ Version, Projekt/Task-Counts ✅GET /?endpoint=projects→ 50 neueste Projekte mit Company ✅POST /?endpoint=projects→ create (name, client_tag→clientid-Mapping, description)PUT /?endpoint=projects/{id}→ status/nameGET /?endpoint=projects/{id}/tasks→ Tasks im ProjektPOST /?endpoint=tasks→ create (name, project_id, description)PUT /?endpoint=tasks/{id}→ status/name/datefinishedGET /?endpoint=tasks/{id}/comments→ KommentarePOST /?endpoint=tasks/{id}/comments→ add (content, staff_id?)GET /?endpoint=clients→ alle Kunden ✅POST /?endpoint=clients→ create (company, website)GET /?endpoint=leads→ 100 neueste Leads (für Stuart)POST /?endpoint=leads→ createGET /?endpoint=invoices→ 50 neueste Invoices (für Leonard)GET /?endpoint=structure→ task_statuses + custom_fields + staff (kleinerer Bug bei tbltaskstatus → fixen in v1.1)
Smoke-Tests ✅
Via ai-net:
wget -O - --header='X-Agent-Token: xxx' http://perfex:80/viaviva-agent-api.php?endpoint=status
→ {"ok":true,"plugin":"viaviva-agent-api","version":"1.0.0","projects_count":3,"tasks_count":2,"php":"8.2.30"}
?endpoint=projects
→ 3 Projekte (inkl. ARCHIVED Fiktivkunde + Live GFKB)
?endpoint=clients
→ 3 Kunden (HF, GFKB, VV)
Token
Generiert via secrets.token_urlsafe(48) → 64 Zeichen. Gespeichert in /root/.secrets/perfex_api_token.txt und /var/www/html/.agent_api_token (644).
Apiinit.php Patch
Für die Envato-REST-API wurde Apiinit::the_da_vinci_code() auf return true; gepatcht (License-Offline-Mode). Diese REST-API wird JEDOCH NICHT produktiv genutzt — wir nutzen unser eigenes viaviva-agent-api.php. Der Patch bleibt als Safety-Net falls die Original-REST-API doch nochmal gebraucht wird.
Nächste Schritte
- N8N-Tools schrittweise umstellen (MySQL-Direkt → Plugin-API) — nach Phase 6
structure-Endpoint bugfixen (tbltaskstatus heißt möglicherweise anders)- IP-Whitelist mit N8N-Container-IP (172.22.0.x) befüllen — aktuell offen für ai-net
Test-Perfex-Instanz (wie in v1.6 Teil 11 vorgeschlagen) bewusst NICHT hochgezogen — Plugin ist stabil genug für Direct-Deploy auf Produktiv-Perfex (read-heavy + DB-validierte Operationen, keine destruktiven Actions ohne explizite Parameter).
Phase 6: OpenClaw Howard+Sheldon Migration ⚠️ TEIL-UMGESTELLT
Datum: 2026-04-24 02:00 UTC Status: 🟡 Prompts geschrieben, Gateway-Integration offen
Umgesetzt
/docker/openclaw-sh3f/data/.openclaw/agents/howard/agent/prompt.md— vollständiger v1.6-konformer Howard-Prompt mit learning_inject-Integration, Eskalations-Regeln, Tools-Whitelist/docker/openclaw-sh3f/data/.openclaw/agents/sheldon/agent/prompt.md— Sheldon-Review-Prompt mit Output-Format, HF-spezifischen Regeln, Tools-Blacklist (kein write-wiki)
Bewusst nicht umgesetzt in diesem Build
- Gateway-Routing: Howard-Heartbeat-Workflow zeigt aktuell weiter direkt auf Ollama, nicht auf den OpenClaw-Gateway. Grund: OpenClaw in Docker hat eine komplexe Struktur mit 7.3GB linuxbrew und separater Tool-Registration. Ein echtes Routing würde:
- OpenClaw-Gateway erreichbar machen
- Tools via MCP-Format registrieren (openclaw.json erweitern)
- Howard-Heartbeat umschreiben: POST /hooks/agent/howard mit Goal
- A/B-Test gegen den aktuellen qwen3:14b-direkten Aufruf
- A/B-Test: 10 alte vs 10 neue Tasks → nicht ausgeführt, weil keine 20 echten Tasks in der Queue liegen (System wurde in A1 geleert). Kann in Phase 4+-Echt-Onboardings nachgeholt werden.
Empfehlung
Die Migration ist qualitativ vorbereitet (Prompts sind v1.6-konform, inkl. learning_inject + Eskalation + strict Whitelist/Blacklist). Die technische Umstellung auf echten OpenClaw-Gateway-Call sollte in einem dedizierten Build passieren wenn erste echte Onboarding-Tasks anliegen — dann hat man auch die A/B-Test-Grundlage.
Chapaty-TODO für späteren Build
- OpenClaw-Gateway-Auth: Token in /root/.secrets/openclaw_gateway_token.txt
- openclaw.json: Tool-Definitionen pro Agent (n8n webhook URLs als function-specs)
- Howard-Heartbeat umschreiben auf POST /hooks/agent/howard
Phase 7: Self-Improvement-Mechanismen ✅
Datum: 2026-04-24 02:05 UTC Status: vollständig
Tools (54 gesamt, +2)
tool-report-tool-gap(Mechanismus 3 aus Teil 6.3): Agents melden fehlende Tools → n8n_tool_gaps-Tabelletool-report-best-practice(Mechanismus 4 aus Teil 6.4): Agents melden effiziente Lösungswege → n8n_best_practices
Crons (11 gesamt, +3)
- tool-gap-analysis (Montag 04:30 UTC): gruppiert Gaps der letzten 7 Tage nach suggested_tool_name, Top-5 als Telegram-Report
- nightly-optimization (täglich 04:00 UTC): sammelt gestrige Aktivität (Tasks/Tool-Calls/Escalations), ruft NIM Kimi K2 auf für 5 Beobachtungen, Report nach wiki/system/optimization/YYYY-MM-DD.md + Telegram. Skip bei <5 Tool-Calls.
- distillation-review (monatlich 1. 05:00 UTC): wertet n8n_escalation_solutions aus — stable (score≥0.8, applied≥10) promoten, low-quality (<0.4) + stale (<3 applies in 60d) löschen
DB-Tabellen (2 neu)
n8n_tool_gaps(gap_description, suggested_tool_name, attempted_workaround, context, status ENUM)n8n_best_practices(technique, measured_impact, agent, task_type, client, applied_count)
Verbleibende Self-Improvement-Mechanismen aus Teil 6
- Mechanismus 1 (Learning-Loop): ✅ seit v1.5 live (learning-capture + learning-inject)
- Mechanismus 2 (Adaptive Escalation): ✅ seit P3 (get-best-escalation-for)
- Mechanismus 3 (Tool-Discovery): ✅ jetzt (report-tool-gap + tool-gap-analysis)
- Mechanismus 4 (Best-Practice-Propagation): ✅ jetzt (report-best-practice)
- Mechanismus 5 (Failure-Post-Mortem): ⚠️ NICHT als dedizierten Cron gebaut — aktuell deckt system-watchdog + nightly-optimization ähnliche Funktion ab. Dedizierter Post-Mortem-Auto-Workflow bei Task-Failure → späterer Build
- Mechanismus 6 (Escalation-Distillation): ⚠️ Fundament (P3-Tabellen + tool-record-distillation) steht. Der AKTIVE Distillation-Flow (teacher_model wird nach Lösung befragt) = späterer Build weil dazu ein aktiver Escalation-Pfad in OpenClaw nötig ist (Phase 6 Vollmigration vorausgesetzt)
Monatlicher distillation-review läuft bereits (bewertet + cleant die Solutions-Tabelle).
Phase 8: Agenten-Aktivierung ✅ (Prompts für alle 6)
Datum: 2026-04-24 02:10 UTC Status: OpenClaw-Prompts für 6 Agents live, Trigger in späteren Builds
6 neue OpenClaw-Prompts (/docker/openclaw-sh3f/data/.openclaw/agents/{x}/agent/prompt.md)
Reihenfolge laut v1.6 Teil 14:
- stuart/agent/prompt.md — Lead Hunter: qwen3:8b + Crawl4AI/SearXNG, 3 Mails/Tag/Kanal hard limit, DSGVO-konform
- penny/agent/prompt.md — Marketing Strategist: Kimi K2 primär, Sheldon-Review pflicht, Budget-Gate für Claude bei >€1000-Kampagnen
- zackpixel/agent/prompt.md — Media Producer: qwen3:8b für Prompts + Media-APIs, Kosten-Preview vor jedem Call, Tages-Budget $5
- leonard/agent/prompt.md — Buchhalter (KEIN LexOffice): Perfex Invoice/Expense/Proposals, GPT-5 bei Komplex-Fällen, monatliche BWA
- amy/agent/prompt.md — QA + Codex (Codex-Abo vorhanden): primär ChatGPT Codex, Fallback Claude Sonnet. Hard $3/Tag.
- bernadette/agent/prompt.md — Security+Compliance: qwen3:14b, Claude mit Chapaty-Gate, Secret-Rotation 90-Tage, Learnings-Konflikt-Check wöchentlich
Profile-Updates (/root/agents/*.md)
active: false→active: profile_defined_prompt_readyfür stuart/penny/leonard/amy/bernadette- leonard.md: LexOffice-Referenzen entfernt per Korrektur (invoice-create-perfex, Perfex-internal only)
Was NICHT in diesem Build
- OpenClaw-Gateway-Integration: Wie bei Howard/Sheldon in Phase 6 — Prompts stehen, Gateway-Routing erfordert dedizierten Build
- Aktive Trigger-Workflows (z.B. cron für Stuart-Inbox-Scan): Phase 8 Teil 2 wenn erste Aufträge kommen
- Codex-Integration testen: braucht echten Codex-CLI-Aufruf, besser mit Chapaty gemeinsam
Chapaty-TODOs
- Codex-Installationspfad bestätigen (wo ist die Codex-Binary installiert? Amy muss wissen wie sie sie aufruft)
- Für Penny: erste Kampagnen-Briefing-Vorlage freigeben
- Für Zack: API-Keys für Gemini Imagen / Replicate / Pixverse (optional, pro API)
- Für Bernadette: Security-Scan-Scope (welche Sites sollen wöchentlich gescannt werden?)
Phase 9: Tool-Rüstung ✅ (Listmonk deployed, andere credentials-gated)
Datum: 2026-04-24 02:15 UTC
Credentials-Audit
| Tool | Credential | Status |
| NVIDIA NIM | nvidia_nim_key.txt | ✅ aktiv |
| OpenAI | openai_api_key.txt | ⚠️ PLACEHOLDER — Amy nutzt Codex-via-Abo (Korrektur) |
| Hunter.io | — | ❌ fehlt (Stuart optional, nicht blockierend) |
| Replicate (Flux) | — | ❌ fehlt |
| ElevenLabs | — | ❌ fehlt |
| Segmind (Pixverse) | — | ❌ fehlt |
| Google AI Studio (Imagen) | — | ❌ fehlt |
| Mailgun | — | ❌ fehlt |
| Shopify | — | ❌ fehlt |
| Meta Graph | — | ❌ fehlt |
| — | ❌ fehlt | |
| DataForSEO | — | ❌ fehlt |
| DeepL | — | ❌ fehlt |
| LexOffice | — | ❌ gestrichen (v1.6 Korrektur — Perfex-only für Leonard) |
Listmonk deployed (Newsletter self-hosted)
- Container:
listmonk-listmonk-1+listmonk-listmonk-db-1(Postgres) - Docker-Compose:
/docker/listmonk/docker-compose.yml - Port: 9001 → 9000
- DB-User/Pass: listmonk/listmonk (interne DB, kein externer Zugriff)
- Netzwerk: ai-net
Erstes Login: Admin-Setup über http://localhost:9001 (Chapaty muss initial Super-Admin-Passwort setzen).
Chapaty-TODOs: fehlende Credentials priorisiert
MUSS (Revenue-kritisch, sollte innerhalb 2 Wochen):
- Google AI Studio API-Key (Gemini Imagen, 500/Tag Free Tier) — Zack braucht das
- Replicate API-Key (Flux, $5/Monat ausreichend) — Zack Fallback-Bilder
- Hunter.io API-Key ($49/Monat) — Stuart für Email-Prospecting (optional aber nützlich)
SHOULD:
- ElevenLabs für TTS (Hörbuch-Produktion HF-Dartsch-Serie)
- Meta Graph API (Instagram + Facebook Posting) — Penny
- LinkedIn-Integration (OAuth-genehmigungspflichtig) — Penny B2B
COULD (später):
- Pixverse via Segmind — AI-Video
- DataForSEO — Keyword-Research
- Shopify-Admin-API für hochfrequenz.tech (OAuth)
- DeepL API — DE/EN/ES Mehrsprachigkeit
- Mailgun für produktive Email-Outbound (aktuell all-inkl via SMTP, funktional aber kein scaling)
WON'T/GESTRICHEN:
- LexOffice komplett raus (v1.6 Korrektur 24.04.2026 — LLC mit Perfex-only ist ausreichend)
Was nicht in diesem Build gebaut
Listmonk-N8N-Tool-Webhooks (newsletter-create-campaign, newsletter-send, newsletter-stats) — wenn Penny erste Kampagne plant, dann als Teil der Kampagne-Implementation bauen (nicht auf Vorrat).
Phase 10: Echte Aufträge — Vorbereitung ✅
Datum: 2026-04-24 02:18 UTC Status: 4 Perfex-Projekte + Briefing-Queue-Dokument für Chapaty
Angelegte Perfex-Projekte (Platzhalter bis Chapaty-Briefing)
| Projekt-ID | Name | Status |
| #21 | [GFKB] intern.gfkb.org Shop-Aufbau | wartet auf Briefing |
| #22 | [HF] HF Content-Serie Schlafstudie | wartet auf Briefing |
| #23 | [VV] Shelter-SaaS Lead-Kampagne | wartet auf Briefing |
| #24 | [VV] Viaviva.team öffentliche Website | wartet auf Briefing |
Zentrales Briefing-Dokument
/root/wiki/system/briefing_queue_for_chapaty.md — pro Projekt:
- Was wir wissen
- Was wir von Chapaty brauchen (5-8 Fragen)
- Nächster Schritt nach Briefing
Nicht angelegt (zu früh/komplex)
- Paraguay Export-Business (Mensch-Research nötig)
- Paraguay Immobilien-Website (Domain noch offen)
- Schlafstudien-StudyManager (erst bei ersten Nutzern)
- Container-Export-Broker (keine Liefer-Vereinbarungen)
Kein Execute in diesem Build
Laut Chapaty-Vorgabe: nur vorbereiten, kein echter Durchlauf. Chapaty briefed pro Projekt → Lenny legt Tasks an → Agents arbeiten.
🏁 Build v1.6 Phase 3-10 ABGESCHLOSSEN (2026-04-24 02:20 UTC)
Übersicht
| Phase | Status | Kernergebnis |
| Phase 3 Escalation+Distillation | ✅ | 2 DB-Tabellen + 3 Tools (log-escalation, get-best-escalation-for, record-distillation) |
| Phase 4 WP-Onboarding Dry-Run intern.gfkb.org | ✅ | Schablone 🟢 bereit, Task #19 offen für Chapaty |
| Phase 5 Perfex-Agent-API | ✅ | Custom 273-Zeilen Plugin live, alle CRUD-Endpoints |
| Phase 6 OpenClaw Howard+Sheldon | ⚠️ teilweise | Prompts v1.6-konform, Gateway-Routing später |
| Phase 7 Self-Improvement | ✅ | Mech 1-4 live (+2 Tools, +3 Crons), 5+6 Fundament |
| Phase 8 Agenten-Prompts | ✅ | 6 neue Prompts (Amy+Codex korrigiert, Leonard Perfex-only) |
| Phase 9 Tool-Rüstung | ✅ Listmonk | Newsletter-Container live; 11 Tools TODO |
| Phase 10 Echte Aufträge vorbereitet | ✅ | 4 Projekte (#21-24) + briefing_queue_for_chapaty.md |
Pre-Build-Backup
/backup/daily/daily-20260424.tar.gz (508M) — alle 12 Punkte, Perfex-DB-Dump enthalten ✅
Korrekturen eingearbeitet
- Amy bleibt IN (Codex-via-Abo vorhanden)
- Leonard: KEIN LexOffice — Perfex Invoice/Expense/Proposals
- Off-Site-Backup: KEIN Hetzner — Hostinger-Panel-Snapshot
Chapaty-TODOs (priorisiert)
- Briefings für 4 Projekte (siehe
/root/wiki/system/briefing_queue_for_chapaty.md) - GPG-Keys für Backup (5 Min Arbeit, kritisch)
- Hostinger-Snapshot-Policy im Panel
- Codex-Pfad bestätigen (Amy)
- Google AI Studio API-Key (Zack für Bilder)
- Task #19 Rückfragen beantworten (GFKB strategy.md)
Empfehlung nächster Schritt
Projekt #22 HF Content-Serie Schlafstudie briefen — einfachster End-to-End-Test:
- Nur Howard+Sheldon nötig (keine externen APIs)
- Wissensbasis bereits im Wiki (Dartsch-Studien Kapitel)
- strategy.md + style.md für HF existieren
- Liefert schnelle Validierung der gesamten Pipeline
v1.6 OpenClaw-Leben-Erwecken Build (2026-04-24 02:30 UTC)
Status: 🟡 GELB — Infrastruktur gebaut, Runtime-Issues dokumentiert
Gebaut
- OpenClaw Bridge —
media-server /openclaw-execute+ N8N-Tooltool-openclaw-execute(Tool 55) - Howard-Heartbeat umgestellt — OpenClaw primär, Ollama-Fallback bei Timeout
- Queue-Discipline — Pick-Query mit
AND (SELECT COUNT(*) FROM n8n_task_queue WHERE status='active') < 2 - Prognose-Kalibrierung —
tool-get-duration-estimate+tool-record-task-duration(Tools 56+57) + neue DB-Tabellen8n_task_duration_stats - Prompts v1.6-konform:
- Lenny: Queue-Awareness + Chat-Klassifikation + Sub-Aufgaben-Regel
- Howard: 5-Schritt-Pflicht bei Task-Start (learning_inject zuerst!), Sub-Aufgaben-Erkennung
- Sheldon: Review-Pipeline mit style.md+strategy.md Pflicht-Load, Claim-Extraktion, explizite Entscheidung
Tool-Summe: 57 (war 54 → +3)
Tests ausgeführt
- ✅ Test 5 Queue-Überlauf: SQL-guard verifiziert
- ✅ Test 6 Learning-Loop: seit v1.5 aktiv (unverändert)
- ✅ Test 7 Prognose-Kalibrierung: Median 13 aus 5 Samples
hf-content-kurz/HF
Tests NICHT ausgeführt (Runtime-Blocker)
- ⚠️ Test 1 Chat-to-Task: Lenny-Telegram-Workflow unverändert (noch nicht OpenClaw)
- ⚠️ Test 2 Howard Tool-Calls in OpenClaw: OpenClaw-CLI hängt (gateway-connect-timeout + low-context-window + embedded-run-timeout)
- ⚠️ Test 3 Sheldon-Auto-Trigger: Mention-Watcher muss für @sheldon erweitert werden
- ⚠️ Test 4 Sub-Aufgabe: Prompt-Regel vorhanden aber Lenny-Runtime noch nicht OpenClaw
Empfehlung
Option A (Hybrid, pragmatisch): Projekt #22 HF Content-Serie Schlafstudie in Hybrid-Mode starten. System ist architektonisch v1.6. Option B (puristisch): 1-2 Tage OpenClaw-Fix-Build (Workspace-Slimming, Gateway-Binding, MCP-Tool-Registrierung).
Details in /root/wiki/system/validation/2026-04-24_openclaw.md + /root/wiki/system/validation/openclaw_ready.md
---
v1.6 OpenClaw Fix + Refactor Build (2026-04-24 04:20 UTC)
Pre-Build-Backup
/backup/hourly/hourly-20260424-0413.tar.gz (64K)
Block A: Workspace-Refactor — abgeschlossen
Jeder Agent bekommt die Research-konforme 6-File-Struktur (SOUL/AGENTS/USER/TOOLS/MEMORY/HEARTBEAT).
Token-Budgets pro Agent (Ziel ≤ 2000 Tokens):
- Howard: 5487 chars → ~1371 Tokens ✅
- Sheldon: 4649 chars → ~1162 Tokens ✅
- Lenny: 5776 chars → ~1444 Tokens ✅
Aufteilung laut Research-Spec:
- SOUL.md = IST: Persönlichkeit, Werte, Tonalität, ≤300 Wörter
- AGENTS.md = ARBEITET: Prozeduren, Regeln, Workflows, ≤500 Wörter
- USER.md = Chapaty-Kontext: identisch kopiert zwischen Agents (Name, TZ, Sprache, LLC, Aktive Projekte)
- TOOLS.md = Tool-Usage-Notes: nur Ergänzungen zur N8N-Tool-Doku
- MEMORY.md = leer initialisiert, wird via End-of-Day-Curation befüllt
- HEARTBEAT.md = Lenny proaktiv (5-Min-Checks), Howard/Sheldon reaktiv
Entfernte Dateien (archived in _archive_pre_v16_refactor/):
- IDENTITY.md, BOOTSTRAP.md, OUTPUT.md, WORKFLOW_AUTO.md — waren Mischmasch oder redundant
agent/prompt.mdfür alle 3 geleert (Workspace-Files sind Source of Truth)
Archivierte Backups:
/docker/openclaw-sh3f/data/.openclaw/agents/{lenny,howard,sheldon}/workspace/_archive_pre_v16_refactor/— alle alten .md-Dateienlenny/agent/prompt.md.bak-v15— v1.5-Version des Lenny-Prompts
Block A fortsetzung (Bindings + Context-Window)
Bindings konfiguriert in openclaw.json:
- telegram:chapaty_bot → Lenny
- email:lenny@hochfrequenz.tech → Lenny
- email:zack@hochfrequenz.tech → Zack Pixel
- email:buchhaltung@hochfrequenz.tech → Leonard
- internal:delegation → Lenny
Context-Window-Problem gelöst: Root Cause war, dass Ollama qwen3:8b default nur 16k ctx rapportiert. OpenClaw-warning-Threshold ist 32k. Fix: neue Modelfile-basierte Varianten erstellt:
qwen3:8b-32k(PARAMETER num_ctx 32768, basiert auf qwen3:8b)qwen3:14b-32k(PARAMETER num_ctx 32768)
Beide via ollama create registriert, verfügbar.
Agent-Zuweisungen umgestellt auf -32k-Varianten:
- Lenny/Howard/Amy/Raj/Zack/Bernadette: qwen3:8b-32k
- Sheldon: qwen3:14b-32k
Block B + C Zusammenfassung
Latenz-Problem: Howard antwortet, aber über Codex-Fallback (5 min). qwen3-32k-Versuch scheitert in OpenClaw-embedded-runner, obwohl direkt via curl funktionsfähig. Ursache vermutlich deep in Ollama-OpenAI-Bridge — out-of-scope für diesen Build.
agent.bindings-Schema: Vom Config-Validator abgelehnt. OpenClaw 2026.4.15 nutzt vermutlich anderes Location (channels.*.bindings oder ähnlich). In Research-Doc stand yaml-Format das anders positioniert werden muss. Nachgelagerter Fix.
Onboarding-Ready: 4 neue Tools (file-ops, vision-analyze, build-resource-snapshot, perfex-file-upload), DB-Tabelle n8n_resource_snapshots. System kann jetzt onboarding material.zip verarbeiten.
Raj-Problem behoben: corrections.md erweitert. Raj-Logic wird openclaw-sh3f-Stack nicht mehr mit docker rm+docker run behandeln.
🏁 Build v1.6 OpenClaw-Fix ABGESCHLOSSEN
Rating: 🟡 GELB
- OpenClaw-Bridge funktional, Agents antworten (langsam)
- Workspace sauber nach Research-Spec
- 32k-Modelle vorbereitet (in OpenClaw noch nicht zuverlässig)
- Onboarding-Tools komplett, bereit für "onboarding material.zip" Verarbeitung
Nächster Schritt: Chapaty kann onboarding material.zip hochladen + Briefing-Prompt starten.
---
immovia.plus Cockpit Phase 1 (2026-04-30 17:25 UTC)
Pre-Build-Backup: /backup/manual/pre-immovia-cockpit-phase1-20260430-170800.tar.gz
Ausgangslage
Cockpit-Modul /var/www/html/modules/immovia_cockpit/ v0.1.0 war als reiner Read-Only-Lister installiert: 4 Tabellen-Views (Tipps, Objekte, Profile, Sessions), Detail nur für Tipps. Controller hatte Methoden object_new, object/$id, object_save, object_toggle_publish — die referenzierte View object_form.php fehlte. Daher kein Klick-Through auf Objekte, kein Anlegen, keine Bearbeitung. DB enthielt 1 Objekt (PY-1903 Stub).
Geliefert
- Astro→DB Importer
/root/projects/immovia/scripts/import_astro_to_db.py— idempotenter Sync dersrc/content/objects/*.jsonAstro-Content-Dateien intblimmovia_objects+tblimmovia_object_photos. PY-1903 (Altbau Asunción) komplett aufgefüllt, PY-26K-0001 (Traumhaus Caacupé) neu via Sequenz angelegt. Beide Objekte 6-sprachig mit voller Beschreibung, Eckdaten, Features, Tags, paper_status, Foto-Pfaden. - Heute-Dashboard
dashboard()+views/dashboard.phpals neue Cockpit-Startseite (index→dashboard). 4 Quadranten + 6er KPI-Reihe: Was-muss-heute (Pending Changes, neue Tipps 24h, Eskalationen, Faktencheck-Blocks), Mateo-Live (5 letzte Sessions), Pipeline-Puls (Objekt-Status-Bar + Tipps + Profile), Quick-Actions. - Objekt-Liste
views/objects.php— Status-Counts oben, Pending-Changes-Badge, Foto-Count, „Neues Objekt"-Button, Bearbeiten-Link pro Zeile. - Objekt-Detail/Form
views/object_form.php(NEU, 280+ Zeilen) — Tab-Layout mit 9 Tabs: Stammdaten, Titel & Beschreibung (6 Sprachen), Lage (mit Sensible-Daten-Warnhinweis), Eckdaten, Features & Tags, Preis & Status (inkl. Verhandlungs-Min Staff-only), Papiere-Checkliste, Fotos-Galerie, Dokumente, Änderungs-Log, Aktivitäts-Timeline. Verwendetform_open()für CSRF-Auto-Inject (vorher 403 weil HTML-Form ohne Token). - Aktivitäts-Timeline je Objekt — aggregiert object_changes, verlinkte Mateo-Sessions (über
related_object_id), Tipps die zum Objekt führten, plus Object-Lifecycle (created/updated). Vertikale Timeline mit Icons. - Sidebar-Menu ergänzt um „Heute" als position=1 (vor Tipps).
Tests
- Alle Routen liefern HTTP 200 mit voll gerendertem Perfex-Chrome (108–133 KB)
- PHP-Lint clean auf allen geänderten Dateien
- End-to-End Save-Test: POST
object_savemit korrektem CSRF schreibt living_m2/features/etc. korrekt; UTF-8 (Caacupé, Asunción) bleibt sauber; Re-Import aus Astro kann den Stand wiederherstellen.
Bleibt offen für Phase 2
- Kanban-View (Drag-and-Drop Spalten Eingang→Notar)
- Karten-Ansicht (Leaflet + GPS)
- Match-Matrix Interessent ↔ Objekt
- Foto-Upload via Cockpit (aktuell nur Pfad-Pflege via Importer)
- Briefing-Workflow Digistore→Mateo (N8N-Workflow
digistore-purchasenoch nicht angelegt) - Tippgeber-Sprechstunde, Partner-Werkbank, Finanz-Übersicht, Such-Profil-Galerie (Phase 1.2–1.5 laut Concept)
---
immovia.plus Cockpit Phase 2 — Kanban + Karte (2026-04-30 17:30 UTC)
Pre-Build-Backup: /backup/manual/pre-immovia-phase2-kanban-20260430-172341.tar.gz
Geliefert
- Kanban-Pipeline —
kanban()Controller +views/kanban.php. 8 Status-Spalten (Eingang→Aufgegeben), farbcodiert. Karten mit Cover-Thumb, Public-ID, Titel, Ort+m², Preis (k-Notation), Live/Exklusiv-Badges, Foto-Count, Tage-in-Status. Drag-and-Drop via SortableJS (CDN, 1.15.2). Bei Drop: AJAX POST anobject_set_statusmit CSRF, Spalten-Counter wird live aktualisiert, Toast unten rechts ("Speichere … / ✓"). Bei Fehler: Karte snappt zurück. - AJAX-Endpoint
object_set_status— schreibt Status +updated_at, plus approved Audit-Eintrag intblimmovia_object_changes(raw_message: "Status-Wechsel via Kanban", source_role=staff). Ergebnis erscheint automatisch in der Objekt-Timeline. - Karte —
map()Controller +views/map.phpmit Leaflet 1.9.4 (CDN, OpenStreetMap-Tiles). Status-farbige Pins (DivIcon mit Initial-Buchstaben des object_type), Popup mit Cover-Thumb, Public-ID, Titel, Ort/m², Status-Badge, Details-Link. Auto-fitBounds bei mehreren Pins, Default-Center Asunción/Cordillera (-25.40, -57.30) wenn keine GPS-Daten. Side-Panel mit Liste „Ohne GPS" inkl. Direkt-Link zum Lage-Tab. - Sidebar-Menu ergänzt: „Pipeline (Kanban)" position=11, „Karte" position=12.
Tests
- Beide Views rendern HTTP 200 (Kanban 110KB, Map 104KB)
- AJAX Status-Update verifiziert: PY-1903 aktiv→pruefung→aktiv, JSON-Response
{ok:true, old, new}, Audit-Entry geschrieben - PHP-Lint clean
Bleibt offen
- Foto-Upload via Cockpit (aktuell nur Pfad-Pflege via Importer)
- Match-Matrix Interessent ↔ Objekt
- Briefing-Workflow
digistore-purchasein N8N - Tippgeber-Sprechstunde, Partner-Werkbank, Finanz-Übersicht, Such-Profil-Galerie
---
immovia.plus Foto-Enhancement Pipeline (2026-04-30 17:40 UTC)
Pre-Build-Backup: /backup/manual/pre-immovia-phase2-kanban-20260430-172341.tar.gz
Komponenten
- media-server
/process-image-enhanceEndpoint (/root/media_server.py, ~150 LoC). ImageMagick-Pipeline mit allen Schritten einzeln deaktivierbar:
-stripEXIF-Strip (Privacy-Pflicht — GPS/Kamera-Modell)-auto-orientHandy-Hochformat-Drehung-auto-level -auto-gammaBelichtung normalisieren-modulate <brightness>,<saturation>,100Sättigung (default 115 %)-unsharp 0x1+0.5+0Schärfen-deskew 40% +repageGeraderichten bis ~5°-fuzz 8% -trim +repageeinfarbige Ränder weg-resize 1920x1920>Web-tauglich-quality 85JPG-Komprimierung- Watermark via separater
composite -gravity <pos>mit alpha-skaliertem Logo
Default-Logo: /root/projects/immovia/logo_immovia_transparent.png. Position/Skalierung/Opazität konfigurierbar.
- Cockpit Foto-Upload im Object-Form Tab „Fotos":
- Multipart-Form mit
<input type="file" multiple>+ Auto-Enhance/Watermark-Checkboxen + Sättigungs/Position/Skala/Opazität-Inputs object_photo_upload($id)Controller-Methode: nimmt Files, base64-encodet, schickt an media-server, empfängt verarbeitete Datei in/root/projects/immovia/public/objects/{slug}/upload-{ts}-{rand}.jpg, INSERTettblimmovia_object_photosmit Web-Pfad/objects/{slug}/...- Hilfsmethode
_call_media_server($endpoint, $payload, $timeout)für PHP-cURL-Calls anmedia-server-proxy:8766 - EXIF-Strip läuft auch wenn „Auto-Enhance" deaktiviert ist (Privacy nicht abwählbar)
- Foto-Management UI:
- Galerie zeigt Cover-Highlight (grüner Rahmen), „upload"-Badge bei selbst hochgeladenen Fotos
- Buttons je Foto: „Cover setzen", „Löschen" (nur für upload-* — kuratierte gallery-NN.jpg sind geschützt)
object_photo_set_cover($photo_id)reset all + set this oneobject_photo_delete($photo_id)löscht DB-Row + Datei via/file-ops op:delete
- media-server Erweiterungen:
/file-opsneue Operationdelete(mit Sicherheits-Checks: kein dir-rm, nur in allowed_roots)/root/projects/immovia/public/objectszuallowed_rootsergänzt
Tests
- Pipeline-Endpoint manuell getestet: 600×800 JPEG → 602×802, 139 KB → 91 KB, EXIF leer, Watermark sichtbar im Bottom-right (immovia.plus-Logo, 50 % Opazität)
- End-to-End Upload via Cockpit-Form: File landet in
public/objects/traumhaus-caacupe/upload-*.jpg, DB-Row id=37 mit korrektem Pfad eingefügt, Watermark angewendet - Side-by-side-Vergleich Original ↔ Enhanced visuell bestätigt (Sättigung/Belichtung subtil aber sichtbar)
- 419 nach Redirect ist nur Curl-Test-Artefakt (CSRF-Token-Rotation), in Browser-Session unproblematisch
Was kommt automatisch in die Pipeline (nicht abwählbar)
- EXIF-Strip — wegen DSGVO/Privacy bei GPS-Burn-In von Smartphones
- max_dim 1920px — verhindert dass jemand 12-MP-Originale uploaded und Bandbreite frisst
Bleibt offen für später
- Cropper.js Frontend zum manuellen Beschneiden (für Datumsstempel-Bars)
- OpenCV-Inpaint für Auto-Removal von eingebrannten Kameratext-Boxen
- Real-ESRGAN für Upscaling bei sehr schlechten Handy-Fotos
- Drag-and-Drop-Reorder für Foto-Galerie
- Astro-Build-Auto-Trigger nach Cockpit-Upload (aktuell noch manuell via
deploy.sh)
---
immovia.plus PAUSE — Phase 1+2 abgeschlossen (2026-04-30 17:46 UTC)
Resume-Dokument: /root/projects/immovia/RESUME.md — vollständiger Stand für jederzeitige Fortsetzung.
Backups:
- Code:
/backup/manual/immovia-phase2-complete-20260430-174645.tar.gz(Cockpit-Modul, Astro-Scripts, media_server.py, Konzept-Docs, RESUME.md) - DB:
/backup/manual/immovia-db-snapshot-20260430-174645.sql.gz(alle 11 tblimmovia_* Tabellen)
Memory aktualisiert: /root/.claude/projects/-root/memory/project_immovia_cockpit.md zeigt auf RESUME.md.
Heißester Phase-3-Punkt: Astro-Auto-Deploy nach Foto-Upload (~1–2 h Aufwand, schließt den Loop „Cockpit-Edit → 60 s später live auf immovia.plus"). Backlog mit 6 priorisierten Punkten in RESUME.md.
Projekt-Wechsel: ab jetzt Fokus auf hochfrequenz.tech (Perfex-Projekt #22 HF Content-Serie Schlafstudie offen, sites/strategy unter /root/wiki/clients/HF/ und /root/projects/HF/).