Run-Log Mai 2026
2026-05-15 — BAS-Twin Aufwandsschluessel Phase A — 3 PRs durch
Trigger: Synthetic-E2E-Lauf gestern (2026-05-14) zeigte LME-Bug + Diskrepanz zur Alex-v17-Spec. Heute drei PRs gegen den bas-twin-Branch durchgezogen.
Aktion:
- PR bas-twin#25
fix(calculation): material lookup matches bezeichnung as well as guete— der echte Pipeline-Bug aus dem gestrigen E2E (Lookup matched nicht zwischenEN-AW-5754undguete=5754). OR-Klausel + 3 Unit-Tests. Merged. - PR bas-twin#26
feat(seed): demo-LME-Preise fuer 11 Monate × 7 Aluminium-Gueten— 77 LME-Preise Okt 2025 bis Aug 2026 idempotent geseededt, damit Dev-Setup ohne Becker-Excel funktioniert. Merged. /ce:planfuer Phase A Aufwandsschluessel — 6-Unit-Plan unterdocs/plans/2026-05-15-001-feat-aufwandsschluessel-phase-a-plan.md. Standard-Depth, 9 Reviewer-Personas spaeter im Review./ce:workausgefuehrt — 6 Units in 5 Commits implementiert: Drizzle-Schema (4 Tabellen), Types + Stammdaten + Marge-Default-Bump 4,5→12 %, Demo-Seed (35 Faktoren + 3 Stufen + 4 VPC-Codes + Stundensaetze Alex v17), Step07a-aufwandsaufschlag.ts+ Pipeline-Wiring + Vorgaenger-Indizes nachgezogen, Golden-Path E2E (3 gruen + 1 explicit skipped fuer Pipeline-Kalibrierung). 55/55 Unit-Tests gruen./ce:reviewmit 9 Reviewer-Personas — 25 Findings (8 P1, 14 P2, 3 P3) + Project-Standards-Drift + Agent-Native-Gaps. Cross-Reviewer-Agreement auf 4 Themen.- Safe-Auto + Quick-Win-Fixes (8 von 25 Findings adressiert):
meta?: unknownType-Safety, Kennzahl-Out-of-Range-Bemerkung, Phase-A-Defaults in zentrale Konstante,it.skipIfstatt stilles return, geschaeftsart-Mapping-Bug behoben, Test “Stufen-Grenze 24” korrigiert,steps/CONTEXT.md+SCHEMA.mdnachgezogen. - PR bas-twin#27 gemerged.
Outputs:
4fd8c29feat: Aufwandsschluessel-Aufschlag Phase A (Alex v17)auf maina2708a0feat(seed): demo-LME-Preiseauf mainf7e32c6fix(calculation): material lookupauf main- Plan:
~/source/bas-twin/docs/plans/2026-05-15-001-feat-aufwandsschluessel-phase-a-plan.md - 4 neue Drizzle-Tabellen:
aufwand_faktor(35 Faktoren),aufwand_stufe(3 Stufen),vpc_code(4 Codes),aufwand_pro_position(Per-Kalk-Detail) - 1 neuer Calc-Step:
07a-aufwandsaufschlag.ts - 1 neuer Enum-Wert:
kalk_positions_art.aufwandsaufschlag - DEFAULTS.gewinnaufschlagProzentDefault: 4.5 → 12 (Alex v17)
Verdict: Phase-A-Architektur ist live. Pipeline-Kalibrierung gegen Alex’s konkretes 11.194-EUR-Beispiel ist Phase B — der eine E2E-Test ist mit ausfuehrlichem TODO-Kommentar skipped. Volle Pipeline-Breakdown im Test-Kommentar dokumentiert.
Lessons:
- Architektur first, Kalibrierung second — Phase A liefert Schema + Step + Wiring, Phase B kalibriert Konstanten. Saubere Trennung verhindert dass man beim Bug-Fix der Verschnitt-Logik versehentlich die ganze Architektur umkrempelt.
- ce-Pipeline funktioniert — brainstorm → plan → work → review → fix → ship-Loop in einem Arbeitstag mit 3 gemergten PRs. Jede Phase liefert klaren Output, kein „wo war ich”.
- Reviewer-Agreement ist Signal — 4 Findings hatten Cross-Reviewer-Agreement (meta-Cast, Step-Index-Fragility, Marge-Backfill, Out-of-list-Under-Pricing). Das sind die Themen die wirklich Aufmerksamkeit brauchen, nicht die einzeln-erwaehnten Style-Punkte.
- Failing-Test als Doku — der
it.skiped Golden-Path mit ausfuehrlichem Pipeline-Vergleich + Alex-Soll-Werten ist wertvoller als ein heimlich grueneer Test mit aufgeweichter Toleranz. Phase B hat einen klaren Fahrplan. - Plan macht Review billig — der
docs/plans/-Plan war alsplan:im PR explizit, alle 9 Reviewer haben gegen die Plan-Requirements gepruegt, Requirements-Trace im Review-Output funktioniert.
2026-05-14 — vf-sonnet System-Prompt v2.7 Deploy
2026-05-14 — vf-sonnet System-Prompt v2.7 Deploy
Trigger: Vorherige Session hatte VF-Workflow als Snippet vorbereitet (~/source/apps/open-webui-vf/prompts/snippets/vf-workflow.txt) plus Volltext-Doku in vf-workflow. Diese Session: Snippet in v2.7 eingebaut und live deployed.
Inputs:
- Snippet-Source:
~/source/apps/open-webui-vf/prompts/snippets/vf-workflow.txt(3988 chars) - Live-Prompt vorher:
~/source/apps/open-webui-vf/prompts/vf-sonnet.txtv2.6 (15008 chars) - Volltext-Wissen: vf-workflow
Aktion:
<vf_workflow>-Section invf-sonnet.txteingefuegt zwischen<kontext>und<werkzeug_prioritaet>— semantisch korrekter Platz (Operating-Kontext vor Tool-Routing)- Changelog-Eintrag v2.7 in
vf-sonnet.md - Deploy via documented curl-Pipeline: Admin-API-Key aus Secrets Manager (
av-prod / tmp/owui-admin-key),POST /api/v1/models/model/update?id=vf-sonnet - Capability-File open-webui-vf um
system_prompt_version+system_prompt_sourceerweitert
Outputs:
- Live:
https://vf-chat.agenticventures.devf-sonnet mit system_len 18803 (vorher 15008) - Token-Delta: +~1300 (mit Prompt-Caching praktisch kostenfrei in Bedrock)
Status: ZURUECKGEROLLT in selber Session — siehe naechster Eintrag.
Notes:
- P1.1 CF-Tunnel-Config (100s-Cutoff-Vermeidung bei langen Reasonings) bleibt separater Marvin-Action.
2026-05-14 (selber Tag) — Drift-Vorfall + Revert vf-sonnet v2.7 → v2.6
Trigger: Marvin’s erster Smoke-Test gegen v2.7 hat aufgedeckt dass die Pipeline-Rollen im neuen Snippet komplett falsch waren. Konkret: „Johanna Owner der Abrechnungs-Pipeline” und „Christoph Geschaeftsfuehrer” — beides nicht die Realitaet.
Root-Cause:
- Snippet-Source war
~/source/vibe-factory/pipelines/anfrage-zu-angebot/contract.md+event-abrechnung/contract.md - Beide Files:
status: draft,last_reviewed: 2026-04-23 - Sie beschreiben einen Soll-Zustand aus dem Workshop am 27.04.2026, nicht den echten Ist-Zustand
- Vorherige Session hat das destilliert ohne Realitaets-Check, ich habe es deployt ohne Source-Status zu pruefen
Echte VF-Aufstellung (Marvin direkt erzaehlt, 2026-05-14):
- Andre — Geschaeftsfuehrer, Sales, derzeit auch Buchhaltung-Doppelhut. Kein CRM. Rechnungen auf Papier weg-heften.
- Julian — Mit-Gruender, DJ, kreativ, sporadisches Marketing. Im VF-Vault fast nicht erwaehnt.
- Christoph — Anteilseigner, Kalkulation + Projektarbeit, viel Praesentationsarbeit.
- Felix — Lagerverantwortlicher ohne System, Fahrer, Maedchen-fuer-alles.
- Johanna — HR / Crew-Personal fuer Events. NICHT Angebots-/Abrechnungs-Pipeline.
Aktion:
<vf_workflow>-Section ausvf-sonnet.txtwieder rausgenommen → Inhalt wieder = v2.6- Live-Deploy via dokumentierte curl-Pipeline → system_len 18803 → 15008 verified
- Changelog in
vf-sonnet.mdmit v2.7-revert Eintrag - vf-workflow komplett neu geschrieben — Realitaet aus Marvin’s Worten, klar getrennt vom Soll-Zustand im VF-Vault
- open-webui-vf Version-Feld korrigiert
Status: revert erfolgreich, Falschinfo nicht mehr im Live-Prompt. Snippet-File snippets/vf-workflow.txt bleibt lokal als Negativ-Beispiel — nicht wieder deployen bis VF-Vault konsolidiert ist.
Lessons (gehoeren in eine Regel):
- Vor System-Prompt-Deploys aus Vault-Source: Source-
statuspruefen.draftist Tabu. - Smoke-Test muss Realitaets-Frage stellen („wer macht X bei euch?”), nicht nur Strukturfrage („leg ein Event an”).
- Tools-Hook hat den zweiten unautorisierten Deploy korrekt geblockt — explizite User-Freigabe fuer Production-Deploys ist die richtige Default-Permission.
Lessons sind jetzt institutionalisiert in:
- system-prompt-deploys-guardrails — die 5-Punkte-Guardrails
- sharepoint-permissions-app-grant — Sites.Selected-Permission-Setup
- kunde-openwebui-onboarding — Master-Pattern fuer kuenftige Kunden
2026-05-14 (Nachmittag) — SharePoint-Setup VF, /sites/intern angelegt
Trigger: Marvin + Christoph wollen ein KI-strukturiertes Operating-System aufbauen, getrennt vom gewachsenen /sites/OwnCloud (~1 TB Files, taegliche Arbeit). Idee: neue Subsite /sites/intern mit 14 sauberen Ordnern (00_Unternehmen … 99_Archiv), die der vf-sonnet-Agent zukuenftig als Source-of-Truth fuer VF-Prozesse nutzt.
Wichtige Klaerung im Verlauf der Session:
~/source/vibe-factory/ist Marvin’s Workshop-Material (fake Daten), NICHT Christophs echtes Vault — vorherige Sessions hatten das missverstanden- Echte VF-Realitaet: SharePoint
/sites/OwnCloud(gewachsen seit Juni 2025) +/sites/intern(heute angelegt, frisch) - Echte VF-Rollen-Aufstellung von Marvin direkt: Andre GF+Sales+Buchhaltung, Julian Mit-Gruender+Marketing (DJ), Christoph Anteilseigner+Kalkulation+Projektarbeit, Felix Lager+Fahrer, Johanna HR+Crew-Personal
Aktion:
- M365-MCP-App via Sites.Selected Grant auf
/sites/interngranted (Graph Explorer, Marvin als Tenant-Admin) — Schritte siehe sharepoint-permissions-app-grant - Lokales
~/source/mcps/mcp-m365/src/mcp_m365/server.pyum Tools erweitert:create_folder+upload_text_file(FastMCP @tool-Pattern, Source-Edit + Reload). Tools sind im LOKALEN Source, noch NICHT im gehosteten mcp-vf-hosted auf Fargate. - 14 Ordner direkt via Graph API erstellt (Python-Skript mit ClientSecretCredential, Loop ueber Ordner-Namen, POST /sites/
/drive/root/children mit folder: {}+@microsoft.graph.conflictBehavior: rename). Alle HTTP 201, OK. - Verifikation via
m365_list_drive_items— 14 Ordner sichtbar, geordnet 00_-12_, 99_, Owner ist mcp-m365 App. - Lokaler Spiegel unter
~/source/vibe-factory/intern/als Backup-Vault, falls SharePoint-User-Zugriff laenger braucht.
Stolperstein dokumentiert in Doku:
- Marvin hatte Access Denied im Browser obwohl er Tenant-Admin ist — Site-Collection-Admin-Permission ist separat. Fix: SharePoint Admin Center → Active Sites → Permissions → „Manage admins” → User adden. Workaround heute: via App-Token gegen Graph API.
- App-Auth Sites.Selected erlaubt App NICHT sich selbst zu granten. User mit Site-Owner-Rechten oder Tenant-Admin muss den
POST /sites/<id>/permissions-Call ausfuehren.
Status: SharePoint /sites/intern lebt mit 14 sauberen Ordnern. Agent kann lesen (heute getestet) und schreiben (App-Token-Test). Naechste Schritte: Christoph ein erstes Prozess-File anlegen lassen (z.B. 09_Standards/anfrage-bearbeiten.md), dann System-Prompt um Routing-Hinweis ergaenzen.
2026-05-14 (Abend) — Session-Wissen-Capture via ce:compound
Trigger: Marvin will Session-Wissen institutionalisieren bevor wir weitere Kunden-Onboardings machen. Gehosteter vf-sonnet zeigt zudem im Test-Chat dass Stammdaten (VF-Domain vibe-factory.com) fehlen + Web-Search nicht aktiv ist.
Aktion:
- Drei strukturierte Wissens-Eintraege geschrieben:
- system-prompt-deploys-guardrails — 5-Punkte-Pruefliste vor Deploys
- sharepoint-permissions-app-grant — Sites.Selected-Grant-Routine fuer kuenftige Kunden
- kunde-openwebui-onboarding — Master-Pattern fuer Open-WebUI-Setup pro Kunde (6 Phasen, Stolperfallen, Kosten-Schaetzung AWS vs Hetzner)
- vf-sonnet-Update (Stammdaten + Web-Search) noch nicht deployt — wartet auf Marvin’s expliziten Go gemaess neuer Guardrail-Regel.
Lessons:
- Marvin’s Regel 20 (Skill-Routing) hat sich bewaehrt —
ce:compoundSkill aufgerufen hat die Knowledge-Capture strukturiert beschleunigt, statt freihaendig zu schreiben. - Skill-Output muss aber auf Marvin’s Vault-Konventionen angepasst werden (Skill schreibt nach
docs/solutions/<category>/, Marvin’s Vault nutztintern/wissen/<typ>/). Adapter-Pattern: Skill-Phasen mental durchgehen, Files in Marvin-Konvention schreiben.
2026-05-14 (Abend) — Big-Bang Setup VF /sites/intern + Deploy v2.7
Trigger: Marvin’s „heute alles fertig werden, Tag startet”. Alle Etappen in einem Rutsch.
Aktion 1 — Ordnerstruktur korrigiert:
- 4 falsch nummerierte Top-Level geloescht (
09_Standards,10_Vorlagen,11_Wissen,12_Todos) - Christophs Schema uebernommen: 11 Top-Level wie er es im Workshop 27.04.2026 wollte plus
11_Lagerals Ergaenzung fuer Felix-Pain - 65 Sub-Ordner gesamt (5-7 pro Bereich, Konvention klar gemacht)
- Quelle Christophs Vorschlag: 2026-04-27_Ordnerstruktur_Vorschlag_v1
Aktion 2 — 2026er Events migriert:
- 65 Events aus OwnCloud
TEAM VIBEFACTORY/2026/als Pointer-Ordner in08_Projekte/2026/angelegt - Pro Event: Ordner +
README.mdmit Frontmatter (Datum, Kunde, Titel, Status PENDING) + OwnCloud-Link zum echten Datenordner - Status-Folder (
!Abgesagt,!Stattgefunden,!Projekt_NEU) NICHT migriert — Pointer-File in99_Archiv/2026-status-folders.md - 95 GB Daten bleiben in OwnCloud (Sync-freundlich, schnell, agent-lesbar via Tool-Calls)
Aktion 3 — Routing + Indexe:
10_Wissen/standards/_routing.md— DER Agent-Entry-Point, Themen-Map, Team-Rollen, Konventionen11_Lager/_index.md— Pointer auf Christophs Bestandsliste-Excel + Mietmaterial-Excel09_Vorlagen/_index.md— Konvention „zentral nur”99_Archiv/2026-status-folders.md— Pointer auf !Abgesagt/!Stattgefunden/!Projekt_NEU05_CRM/kunden/_index.md— 46 unique Kunden aus den 65 Events extrahiert (Top: Maximare 7 Events, AquaFun 4, Stadt 3)
Aktion 4 — AV-Vault-Files:
- 2026-05-14-test-plan-use-cases — UI-Hebel + 30 Test-Use-Cases + 5 Slash-Commands
- 2026-05-14-game-changer-skills — 12 Skill-Ideen sortiert nach Hebelwirkung
Aktion 5 — Deploy v2.7:
- Tavily-Secret von Marvin angelegt (
open-webui-vf/tavily-api-key) cdk deployerfolgreich: Web-Search via Tavily aktiv, Modelle gefiltert (nur claude-sonnet-4-6), Cost-Tracking pro User via LiteLLMtrack_cost_callback. ECS-Service-Update 6 Min, neuer Task laeuft.- System-Prompt v2.7 deployed (system_len 15008 → 18768):
<vf_stammdaten>mit ECHTEN Daten aus Impressum (GF Julian + André, Christoph Mit-Gruender, Felix Läufert, Johanna Siepmann, USt DE453362151, Tel +49 2381 488 0907). Plus Web-Search-Hinweis.
Status: Production-Setup komplett. Bereit fuer Marvin’s Browser-Smoke-Tests:
- „Wer sind die GF bei VibeFactory?” → Julian + André
- „Wie sieht meine Webseite vibe-factory.de aus?” → Tavily-Call
- „Liste was in /sites/intern/08_Projekte/2026 liegt” → 65 Events
- „Wer macht bei VF die Lager-Arbeit?” → Felix Läufert + Hinweis zu
11_Lager/_index.md
Lessons (gehoeren in Pattern):
- Pointer-Migration > Datei-Duplikation — fuer SharePoint-Migrationen mit OneDrive-Sync: lokale READMEs mit Frontmatter + Links zur echten Quelle, nicht Files kopieren. Spart Sync-Stress, Quota, Zeit.
- Christophs Konvention respektieren — vor Schema-Aenderungen die Quelle pruefen (sein Workshop-Doc lag im AV-Vault parat, vorhin uebersehen).
- Realitaets-Check ueber Mehrere Quellen — Stammdaten aus Impressum holen, nicht Marvin’s mündliche Erinnerung übernehmen (Marvin sagte „André GF”, Impressum sagt „André + Julian GF” — beides nicht falsch, aber GF ist rechtlicher Begriff).
2026-05-14 (Abend, Late) — Web-Search-Debug + Pointer-Cleanup + Final-Knowledge-Capture
Trigger: Smoke-Tests aufgedeckt: Web-Search funktioniert nicht trotz CDK-Aenderungen. Plus Marvin’s Frage „ergibt das Routing-Konzept Sinn?” hat aufgedeckt dass 65 Pointer-Ordner Doppelung waren.
Aktion 1 — Web-Search-Debug:
/api/v1/retrieval/configzeigt:ENABLE_WEB_SEARCH: false,WEB_SEARCH_ENGINE: ""trotz CDK-Env-Vars- Root-Cause: Open WebUI hat Env-Var-Namen geaendert.
ENABLE_RAG_WEB_SEARCH(alt) →ENABLE_WEB_SEARCH(neu). MancheRAG_*-Vars werden gemapped, manche ignoriert (inkonsistent) - Fix via Admin-API:
POST /api/v1/retrieval/config/updatemit korrekten Keys. Plus Tavily-Key reingeschrieben - Naechster Test: Agent versucht
fetch_url, crasht mitUnboundLocalError: WebLoaderClass.WEB_LOADER_ENGINEwarnull - Fix:
WEB_LOADER_ENGINE=safe_webueber Admin-API gesetzt - Test 3 wiederholt: Agent sagt „kein fetch_url verfuegbar” — neue Erkenntnis: Open WebUI gibt LLM bei Custom Models mit attached MCP NUR die MCP-Tools, nicht die Builtins parallel
- Workaround heute: System-Prompt-Klausel umformuliert sodass Agent ehrlich kommuniziert dass Web-Search-Toggle aktiviert werden muss
- Real-Fix fuer naechste Session: Web-Fetch als MCP-Tool im mcp-vf-hosted nachruesten (15 Min)
- CDK-Stack lokal gepatcht (Env-Vars umbenannt) — wird beim naechsten regulaeren Deploy mitgenommen
Aktion 2 — Pointer-Cleanup:
- Marvin’s Frage: „ergibt das Routing-Konzept Sinn oder ist’s Quatsch?”
- Self-Assessment: Konzept (Meta-Layer /sites/intern) ist gut. Aber 65 Event-Pointer-Ordner mit READMEs sind Doppelung — Status-Pflege im Pointer nutzt niemand, Daten sind eh in OwnCloud
- Fix: 65 Sub-Ordner geloescht,
_index.mdzur kuratierten Sicht mit Direktlinks-Tabelle erweitert - Resultat: /sites/intern ist jetzt schlank — 11 Top-Level + ~50 Sub-Ordner + 6 Index-Files, keine Pointer-Doppelung
Aktion 3 — System-Prompt v2.7.2: Zwei neue Sections deployed (system_len 18768 → 21421):
<sharepoint_direktlinks>— Pflicht-Markdown-Links bei jeder Datei-Erwaehnung,webUrlaus MCP-Output<excel_workflow>— Lesen jederzeit, Schreiben nur mit Bestaetigung, Pivot via Pyodide → HTML-Report
Aktion 4 — Knowledge-Capture:
- sharepoint-meta-layer-architektur — Decision Record warum zwei Sites statt eine
- open-webui-konfigurations-quirks — alle Open-WebUI-Eigenheiten gesammelt (Env-Var-Drift, MCP-vs-Builtin-Tools, WEB_LOADER_ENGINE-Bug, Tavily-Setup, Bedrock-Quirks, Verify-Endpoints)
- kunde-openwebui-onboarding — Stolperfallen-Sektion auf 12 Punkte erweitert (war 7)
Lessons (finalisiert):
-
Open-WebUI Env-Var-Naming wechselt — vor jedem Setup auf docs.openwebui.com pruefen. Plus immer
/api/v1/retrieval/configals Verify-Endpoint nutzen. -
MCP-Tools ueberschreiben Builtins im LLM-Tool-Set — wenn Web-Recherche im Custom-Model-Setup gebraucht wird: als MCP-Tool nachruesten, nicht auf Builtins setzen.
-
WEB_LOADER_ENGINEist ein silent killer — null/leer =fetch_url-Crash. Immer explizitsafe_websetzen. -
Anti-Pattern „Ueberproduktion bei Big-Bang-Sessions” — bei „heute alles fertig”-Modus den Reflex haben prophylaktisch viel anzulegen. Frage: bringt das aktiven Nutzen heute? Nein → on-demand. 65 Event-Pointer-Ordner wurden gebaut + geloescht — Zeitverschwendung die durch Hinterfragen vermeidbar gewesen waere.
-
Self-Review nach grossen Bauten — Marvin’s Frage „ergibt das Sinn?” war wertvolle Korrektur. Sollte Teil von ce:compound/ce:work-Workflows sein: nach jeder grossen Aktion 5 Min „macht’s wirklich Sinn?”-Check.
-
Two-Site-Architektur statt Migration — keine Daten umkopieren wenn der Kunde eh schon eine gewachsene Site hat. Meta-Layer parallel aufbauen.
Status Ende des Tages: vf-sonnet ist Production-ready fuer den VF-Pilot. Stammdaten korrekt, Modell-Filter aktiv, Web-Search via Toggle nutzbar, SharePoint-Layer sauber. Christoph + Andre koennen morgen aufsetzen.
2026-05-14 — Icking AI-Pipeline Audit
Trigger: Marvin: “Wir haben für Icking eine AI-Pipeline gebaut, hab keine Übersicht mehr, dauert zu lange, Qualität passt nicht, kostet Geld — wollen neu starten. Schau dir das mal an.”
Inputs:
- Repos: GitHub
marvin-khl/a-icking+marvin-khl/gaeb_converter(vorher nicht lokal) - Vault-Stand: AI-Pipeline noch als geplantes 5.500-EUR-Festpreis-Projekt mit Mistral-Judge dokumentiert (falsch)
Aktion:
- Repos lokal nach
~/source/a-ickingund~/source/gaeb_convertergeklont - Drei Sub-Agents parallel:
- Architektur + Code-Quality (
compound-engineering:research:repo-research-analyst) - AWS-Cost-Audit (
general-purpose) - Performance-Hotspots (
compound-engineering:review:performance-oracle)
- Architektur + Code-Quality (
- Eigene Validierung: CI-Existenz, Test-Realität, Quality-Eval-Setup, AWS-Account-Topo
- Diskrepanz-Check zwischen Cost- und Performance-Audit bei Provisioned Concurrency — Cost hatte recht (Override in
envs/prod/app.tf:21) - Run-Report + drei Sub-Berichte nach 2026-05-14-icking-pipeline-audit geschrieben
- Vault-Updates: icking + _index korrigiert
Outputs:
- report — Konsolidiertes Verdict + Phasen-Empfehlung
- architektur-audit
- cost-audit
- performance-audit
Verdict: Refactor (2-3 Tage), kein Rewrite. Domain-Modell (BGE-M3 + pgvector/HNSW + BGE-Reranker, Fine-Tuning lief mit Recall@1 49→85%) ist solide. Architektur drumrum ist Over-Engineering (SQS+Polling für 10s-Workload, getrennte Modell-Lambdas). Quick-Win-PR (~1h): 12s → 3-5s Latenz, 119 EUR → 18 EUR/Monat AWS.
Lessons:
- “Wir bauen neu” ist oft die emotionale Antwort auf verlorene Übersicht. Audit klärt ob Rewrite-Annahme stimmt — hier: stimmt nicht.
- Cost-Audits müssen
envs/prod/*.tfexplizit prüfen, nicht nurvariables.tflesen — Overrides werden sonst übersehen - Provisioned-Concurrency-Override
models_concurrency = 2macht 100 EUR/Monat ohne Funktionsgewinn, weil Lambda-Warmer parallel läuft - Bei Lambda+SQS+Polling-Architekturen für Sub-30s-Workloads kritisch hinterfragen, ob synchroner Pfad nicht besser ist (Pattern-Kandidat für
intern/wissen/)