🕑 Änderungsprotokoll

Chronologisches, append-only Protokoll aller Änderungen am Wiki. Neueste Einträge oben.

Format pro Eintrag:

## [YYYY-MM-DD] <typ> | <Titel>
- Kurzbeschreibung
- Neu: <Liste neuer Seiten>
- Aktualisiert: <Liste berührter Seiten>

Typen: ingest · ingest-auto · ingest-auto-undo · auto-ingest-blocked · query · lint · edit · meta

Praktischer Filter:

grep "^## \[" content/log.md | tail -10    # letzte 10 Einträge
grep "^## \[.*ingest"   content/log.md      # nur Ingests

[2026-04-29] feat | /api/ingest committet auf Azure direkt nach GitHub (atomarer Tree-API-Commit)

  • Problem auf Azure: Der Backend-Container hat kein gemountetes Repo (/repo existiert nicht), Filesystem-Schreiben würde ins ephemerale Container-Volume gehen und beim nächsten Restart verschwinden. /api/health zeigte repo_root_exists: false.
  • Lösung: Form-Submissions schreiben jetzt nicht lokal, sondern erzeugen einen einzelnen, atomaren Git-Commit über die GitHub Tree API. Datei + .context.md-Sidecar landen in einem einzigen Commit unter raw/.inbox/ — direkt im Repo. Kein persistenter Storage nötig, kein späterer Sync nötig. Bonus: gleicher Mechanismus, den §5.4 für den Auto-Ingest vorsieht — der Code ist schon einsatzbereit für Häppchen 2 Schritt 5.
  • Steuerung: Neue Env-Var INGEST_TARGET (filesystem Default, github für Azure). Lokales Docker-Compose bleibt unverändert auf Filesystem-Pfad — kein neuer Workflow für Entwickler.
  • Token-Setup: Backend-Container braucht GITHUB_TOKEN (fine-grained PAT, Resource-Owner ADVIA-Innovation, Repo joule-wiki, Permissions Contents:Read+Write). Detaillierte Anleitung in AZURE-DEPLOYMENT.md.
  • Atomarität: Tree-API-Pfad legt erst Blobs an, dann einen neuen Tree (mit base_tree-Merge), dann genau einen Commit, dann Branch-Ref-Update. Bei Fehler in irgendeinem Schritt bleibt der Branch unverändert.
  • Filename-Konvention: Beide Pfade nutzen jetzt YYYY-MM-DD_<slug>_HHMMSS.<ext> — das HHMMSS-Suffix verhindert Kollisionen ohne API-Existenzcheck. Frühere Pattern (YYYY-MM-DD_<slug>.ext) bleibt im Repo lesbar, neu eingereichte Files haben das Suffix.
  • Aktualisiert: backend/main.py (commit_to_github, INGEST_TARGET-Switch, Health zeigt die neuen Felder), backend/requirements.txt (httpx), AZURE-DEPLOYMENT.md (Env-Var-Tabelle + neuer az-update-Befehl).
  • Nächster Schritt: PAT generieren, auf Azure-Backend setzen, Test-Submission probieren — sollte als Bot-Commit auf main erscheinen.

[2026-04-29] edit | Azure-Deployment funktionsfähig gemacht (Port-Fix + Nginx-Proxy für /api/*)

  • Problem: Auf der Azure-URL https://joule-wiki-app-wiki.bluemushroom-…azurecontainerapps.io/ lieferte /api/ingest 404, weil (a) der Wiki-Container (Nginx) keine Reverse-Proxy-Regel für /api/* hatte und (b) der Backend-Container auf Port 8082 lauschte, Azure aber --target-port 8000 konfiguriert hatte.
  • Fix Backend-Port: backend/Dockerfile bekommt eine BACKEND_PORT-Env-Var (Default 8082), CMD läuft als sh -c damit die Variable zur Laufzeit aufgelöst wird. Damit kann Azure denselben Port nutzen wie das lokale Compose-Setup.
  • Fix Nginx-Proxy: docker/nginx.conf proxiet /api/* an http://joule-wiki-app-backend (Container-App-interner Hostname). Lokal harmlos, weil Caddy die Requests vorher abfängt.
  • Doku angeglichen: azure-setup.sh setzt jetzt --target-port 8082, AZURE-DEPLOYMENT.md zeigt korrekten Port in der Architektur-Übersicht.
  • Aktualisiert: backend/Dockerfile, docker/nginx.conf, azure-setup.sh, AZURE-DEPLOYMENT.md.
  • Manueller Schritt erforderlich (einmalig, weil der GitHub-Action-Deploy nur das Image, nicht die Container-App-Konfig anfasst): az containerapp update --name joule-wiki-app-backend --resource-group joule-wiki-rg --target-port 8082.
  • Nächster Schritt: nach dem Deploy testen — https://joule-wiki-app-wiki.…/api/health muss {"status":"ok"} liefern, danach der Submit über /api/ingest.

[2026-04-29] edit | Aequitas-Logo im Wiki + Einreichen-Beschreibung aktualisiert

  • Logo: Aequitas-Wordmark als SVG (quartz/static/aequitas-logo.svg + aequitas-logo-dark.svg) erscheint jetzt oberhalb des PageTitle in der Sidebar. Hellmodus zeigt schwarzes „EQUITAS” mit orangem „A”-Akzent, Darkmodus invertiert auf hellgraue Letter. SVG ist eine Approximation — sobald das offizielle Aequitas-Logo als Datei vorliegt, einfach die beiden Dateien in quartz/static/ ersetzen, der CSS-Pfad bleibt gleich.
  • Custom-Styles: Logo-Einbindung über quartz/styles/custom.scss, die Page-Title-Schrift auf eine Subtitle-Größe reduziert (1.05rem, secondary-Farbe).
  • Startseite: content/index.md — Sektion „Dokument einreichen” komplett neu geschrieben. Web-Formular (/api/ingest) ist jetzt der primäre Weg, raw/.inbox/-Variante als Power-User-Pfad explizit gekennzeichnet. Hinweis auf §5.4-Auto-Ingest („sobald aktiv”) als Vorausschau.
  • Aktualisiert: quartz/styles/custom.scss, content/index.md (Frontmatter aktualisiert: 2026-04-29).
  • Neu: quartz/static/aequitas-logo.svg, quartz/static/aequitas-logo-dark.svg.

[2026-04-29] edit | Manueller Ingest in das Wiki-Frontend integriert

  • Ziel 1 erreicht: Quellen-Einreichung läuft jetzt unter einer URL zusammen mit dem Wiki — http://localhost:8080/api/ingest. Kein separater Port 8081 mehr nötig im Alltag. Caddy routet Wiki und Backend nebeneinander, wie in §5.4 vorgesehen.
  • Backend: POST /api/ingest und GET /api/ingest (Form) im FastAPI-Backend implementiert. Logik 1:1 aus der bisherigen ingest-app/app.py portiert (slugify, collision_safe_path, MIME-Whitelist, 50-MB-Limit, Pflicht-Kontextfeld ≥10 Zeichen, *.context.md-Sidecar). Das Backend mountet /repo, schreibt nach /repo/raw/.inbox/ — auf dem Host ist das exakt der raw/.inbox/-Ordner.
  • Branding: Templates tragen die Aequitas-AG-Identität (Orange #EE7A1A als CTA, Navy #1A3A60 für Headlines/Footer, weißer Header mit „AEQUITAS AG · Joule-Wiki”-Wordmark — orange „A”-Akzent wie im Logo). Sobald ein offizielles Logo-SVG/PNG im Repo liegt, wird der CSS-Wordmark gegen <img> ausgetauscht.
  • Wiki-Verzahnung: quartz.layout.ts zeigt jetzt im Footer auf jeder Wiki-Seite den Link „Quelle einreichen” → /api/ingest. Damit erreicht jeder Mitlesende das Formular mit einem Klick.
  • Smoke-Test: backend/tests/smoke_test_ingest.py — 8 Tests (health, GET-Form rendert, URL-Einreichung, kurzer Kontext → 400, leere Payload → 400, URL ohne Protokoll → 400/422, PDF-Upload-Pfad, ungültiger MIME → 415). Läuft via python -m pytest backend/tests/smoke_test_ingest.py -v gegen den laufenden Stack.
  • Neu: backend/templates/upload.html, backend/templates/success.html, backend/tests/smoke_test_ingest.py.
  • Aktualisiert: backend/main.py (501 → echter Code), backend/requirements.txt (jinja2 ergänzt), backend/Dockerfile (kopiert templates/ ins Image), quartz.layout.ts (Footer-Link).
  • Bewusst NICHT angefasst: ingest-app/ bleibt als Legacy-Profil im docker-compose.yml stehen, bis Martin das neue Formular in der Praxis bestätigt hat. Erst dann wird der alte Container in einem Folgecommit entfernt.
  • Nächster Schritt (Häppchen 2 Schritt 4 oder 5): entweder /api/ask mit Anthropic-Anbindung füllen, oder direkt zum Auto-Ingest nach §5.4 — dein Ziel 2.

[2026-04-26] ingest | NextLytics — Agentic AI meets SAP BW (Open-Source-MCP-Wettbewerbssicht)

  • Anlass: Martin schickt die URL https://www.nextlytics.com/de/blog/agentic-ai-meets-sap-bw direkt im Chat. Kein Inbox-Upload, weil das Backend zwar steht (Schritte 1–4), aber der erste echte Anthropic-Aufruf wegen Key-Problemen noch aussteht.
  • §5.1.1-Entscheidung: Voll-Ingest, aber explizit als Wettbewerbssicht. Direkter Joule-Bezug der Quelle ist gering (<10 %), aber das Thema „ABAP/BW MCP Server” haben wir am 24.04. neu im Wiki — die Open-Source-Welt ist dessen Pendant und gehört zur Vollständigkeit dazu. Quelle-Seite trägt am Kopf einen [!warning]-Block, der den geringen Joule-Bezug, den Wettbewerbs-Frame und die ausgelassenen Inhalte (rein BW-technische Details wie aDSO-Anlage, Push API, Routinen-Coding) explizit ausweist.
  • Neu (Quelle): content/quellen/nextlytics-bw-modeling-mcp-2026-04.md mit drei verlinkten GitHub-Repos (marianfoo/sap-ai-mcp-servers, oisee/vibing-steampunk, dnic-dev/bw-modeling-mcp).
  • Neu (Konzept): content/konzepte/open-source-mcp-im-sap-oekosystem.md — Phänomen-Seite (allgemein, nicht projektspezifisch). Erklärt das Muster, listet die drei aktuellen Projekte als Beispiele, ordnet gegen Joule und Microsoft Copilot ein.
  • Aktualisiert: content/konzepte/abap-mcp-server.md (neuer Abschnitt „Open-Source-Pendant” + zweite Quelle), content/produkt/varianten/joule-for-developers.md (neuer Abschnitt „Wettbewerbskontext” mit Vergleichstabelle Joule/Open-Source auf 6 Achsen, Frontmatter-Quelle ergänzt), content/konzepte/adoptionslage.md (neuer Abschnitt „Neuer Faktor 2026: Open-Source-MCP”, Tag open-source ergänzt), content/konzepte/index.md, content/navigation.md, content/quellen/index.md.
  • Datei-Bewegung: URL-Einreichung als raw/presse/2026-04-23_nextlytics-agentic-ai-bw.url.md direkt im Zielordner abgelegt (nicht erst in .inbox/, weil keine Ingest-App-Einreichung erfolgte). NextLytics ist externer SAP-Partner → presse/, nicht sap-offiziell/.
  • Offen: Open-Source-Lizenzen der drei Projekte vor Kundenempfehlung prüfen. Test-BW-Sandbox finden, an dem bw-modeling-mcp evaluiert werden kann. Bei den Anschluss-Artikeln des NextLytics-Autors (Token-/Performance-Daten) am Ball bleiben.

[2026-04-25] meta | CLAUDE.md §5.4 ergänzt — Auto-Ingest-Regeln + .gitignore für .env

  • Anlass: Vorbereitung auf den vollautomatischen Pipeline-Modus (Wiki-Widget → Backend → Anthropic-API → Auto-Commit). Bevor der Code geschrieben wird, schreiben wir die Sicherheitsklammern in CLAUDE.md fest, damit Auto-Ingests klar von interaktiven Ingests abgegrenzt sind und ein Zurückrollen jederzeit möglich bleibt.
  • Aktualisiert: CLAUDE.md (neuer §5.4 mit acht Unterabschnitten: Atomarität, Schreibrechte-Whitelist, reife-Deckel, Pflicht-Frontmatter ingest: auto/ingest_run_id, Undo-Endpoint nur für jüngsten ingest-auto:-Commit, Duplikat-Schutz, §5.1.1-Grauzonen, harte Verbote), content/meta/schema.md (Spiegel von §5.4 + Datum aktualisiert), content/log.md (neue Typen ingest-auto, ingest-auto-undo, auto-ingest-blocked in der Format-Beschreibung), .gitignore (.env, .env.* blockiert; .env.example whitelisted; .venv//venv//.pytest_cache/ ergänzt).
  • Offen: §5.4 ist Konvention, noch nicht Code. Backend-Implementierung (FastAPI + Claude Agent SDK + Caddy + Wiki-Widgets) folgt als Häppchen 2.

[2026-04-24] ingest | SAP-Community — Our 2026 Roadmap for Joule for Developers ABAP AI

  • Anlass: Neue URL-Einreichung in raw/.inbox/ über die Ingest-App MVP (Einreicher-IP 172.18.0.1 = Docker-Bridge-Gateway, d.h. der Anwender im Intranet). Erster Ingest im Dauerbetrieb der Ingest-App; damit ist der Upload-→-.inbox-Weg auch im normalen Betrieb (nicht nur im Ersteinsatz vom 17.04.) bestätigt.
  • Voll-Ingest (keine Kuratierung, §5.1.1 nicht einschlägig): Der Blog-Post behandelt ein bisher nur thin abgedecktes Thema. joule-for-developers.md hatte sogar explizit den Platzhalter „Zu ergänzen: Our 2026 Roadmap for Joule for Developers ABAP AI” — genau diese Quelle schließt die Lücke.
  • Neu (Quelle): content/quellen/sap-community-joule-devs-roadmap-2026.md mit [!note]-Hinweis zur JS-Rendering-Lücke (wie bei der Q1-2026-Quelle) und Meilenstein-Vermerk zur Ingest-App.
  • Neu (Konzept): content/konzepte/abap-mcp-server.md — neuer Baustein im SAP-Vokabular: Tool-Schicht nach Model Context Protocol für agentische ABAP-Entwicklung in VS Code (GA Q2 2026). Abgrenzung zu Joule Studio, GenAI Hub, A2A-Protokoll, ABAP Language Server.
  • Aktualisiert: content/produkt/varianten/joule-for-developers.md (Platzhalter entfernt; neue Abschnitte Werkzeug-Integration und Architektur-Eckpunkte 2026; Multi-LLM-Liste mit 8 Partnern; Frontmatter-Datum + Quelle), content/produkt/roadmap.md (Q2 2026 konkretisiert mit VS-Code-GA, ABAP MCP Server, Side-by-side, Multi-LLM; Q3 2026 entsprechend geschärft; Promo-Ende September 2026 ergänzt), content/konzepte/sap-genai-hub.md (offene Frage zu Partner-LLMs für den Entwickler-Kontext beantwortet — 8 Partner; Business-AI-Kontext bleibt offen; neuer Tag multi-llm), content/konzepte/index.md (neuer Eintrag abap-mcp-server in der Sektion „Architektur und Bausteine”), content/navigation.md, content/quellen/index.md.
  • Datei-Bewegung: raw/.inbox/2026-04-24_community-sap-com-t5-technology-blog-posts-by-sap-our-2026-r.url.mdraw/sap-offiziell/2026-04-24_community-joule-devs-roadmap.url.md (SAP-Community-Blog im Bereich „Technology Blog Posts by SAP” zählt als sap-offiziell, weil die Autoren SAP-Mitarbeiter sind).
  • Offen: Original-Volltext oder Reader-View des Community-Blogs in raw/sap-offiziell/ einlagern (Quelle-Seite auf reife: reif heben); technisches Deep-Dive-PDF von SAP zum ABAP-MCP-Server-Tool-Inventar abwarten; Eclipse-Parity-Frage bei Gelegenheit gegenüber SAP klären; On-Premise-Rollout-Reihenfolge nachhalten.

[2026-04-24] ingest | SAP GenAI Hub (Hartig-Artikel, 2026) + Q4-2025-Release-Referenz

  • Anlass: Zwei neue Dateien in raw/.inbox/ — der Hartig-PDF-Ausdruck zum SAP GenAI Hub und eine .txt mit der URL https://news.sap.com/germany/2026/02/sap-business-ai-highlights-des-q4-2025-release/.
  • Kuratierung statt Voll-Ingest für die Q4-2025-URL (nach Schema §5.1.1): Die SAP-News-Seite zu den Q4-2025-Highlights ist eine Folgeausgabe des bereits als Q1-2026-Release ingesteten Formats. Keine eigene Quelle-Seite; die .txt wird als Referenz archiviert und im Log vermerkt. Falls bei späterer Auswertung Q4-2025-spezifische Fakten auftauchen, fließen sie in bestehende Wiki-Seiten ein.
  • Voll-Ingest für den Hartig-PDF-Ausdruck: Die Quelle öffnet erstmals im Wiki die BTP-Ebene unterhalb von Joule und Agenten. Drei-Säulen-Strategie (Joule / Embedded AI / AI Foundation), GenAI Hub als gesicherte LLM-Zugriffsschicht mit Orchestration Service, RAG und flexiblem LLM-Routing inkl. Private-Cloud- und On-Premise-Option.
  • Neu (Quellen): content/quellen/sap-genai-hub-hartig-2026-04.md (mit [!warning]-Hinweis zur noch offenen Publikationsquelle des PDF-Ausdrucks).
  • Neu (Konzepte): content/konzepte/sap-genai-hub.md, content/konzepte/sap-ai-foundation.md, content/konzepte/retrieval-augmented-generation.md (schließt den bisherigen Rot-Link in grounding).
  • Aktualisiert: content/produkt/was-ist-joule.md (Drei-Säulen-Einordnung, Architekturbild um GenAI Hub + AI Foundation erweitert, btp-ai-core-Rotlink im Architektur-Abschnitt durch die beiden neuen Seiten ersetzt), content/konzepte/grounding.md (Rotlink auf RAG aufgelöst, Abschnitt „Grounding vs. RAG” ergänzt), content/konzepte/agent-builder.md (neuer Abschnitt „Wie Agenten LLMs erreichen”), content/konzepte/joule-studio.md (AI-Foundation-Geschwisterbezug zu GenAI Hub), content/konzepte/index.md (neue Sektion-Einträge, RAG aus „offenen Kandidaten” entfernt, embedded-ai ergänzt), content/navigation.md, content/quellen/index.md.
  • Datei-Bewegung: raw/.inbox/START-Der SAP GenAI Hub_...210426-153621.pdfraw/presse/2026-04-21_sap-genai-hub-hartig.pdf; raw/.inbox/httpsnews.sap.comgermany202602sap-b.txtraw/sap-offiziell/2026-02_q4-2025-release-url.txt (Referenz-Schnipsel, keine eigene Quelle-Seite); alter Trace raw/.inbox/2026-04-17_sap-joule-q1-2026-ingest.mdraw/interne-notizen/ (wurde beim Ersteinsatz der Ingest-App nicht mitbewegt).
  • Offen: Herkunft des Hartig-PDFs identifizieren und im Frontmatter von sap-genai-hub-hartig-2026-04.md nachtragen. Beim nächsten Lint: Abgrenzung btp-ai-core (Platzhalter) vs. neu angelegte sap-ai-foundation klären — entweder redundant löschen oder als bewusste Infrastruktur-Gegenperspektive schärfen. Q4-2025-News-Seite bei nächster Gelegenheit gezielt gegen sap-business-ai-q1-2026 diffen, um etwaige zusätzliche Q4-Fakten nachzutragen.

[2026-04-17] meta | Schema §5.1.1 ergänzt — Kuratierung statt Voll-Ingest

  • Anlass: Entscheidung nach dem ersten Briefing-Ingest, dass tägliche/wöchentlich wiederkehrende Formate keine eigene Quelle-Seite pro Ausgabe bekommen, sondern als kuratierte Extrakte in bestehende Wiki-Seiten einfließen. Zusätzliche Regeln: <20 % Joule-Bezug → nur extrahieren, nicht volltext-ingesten; vertrauliche Inhalte → [!warning]-Callout am Kopf.
  • Aktualisiert: CLAUDE.md (neuer Unterabschnitt §5.1.1), content/meta/schema.md (Spiegel), content/quellen/ki-marktbriefing-2026-04-15.md (Referenz-Quelle-Hinweis für das wiederkehrende Format).
  • Einreicher-Kommunikation nachgezogen: raw/README.md und content/meta/raw-anleitung.md bekommen jetzt den Abschnitt „Wiederkehrende Formate” mit dem pragmatischen Hinweis an Einreicher, das Format im Kontextfeld kenntlich zu machen.

[2026-04-17] ingest | KI-Marktbriefing (ADVIA, 15.04.2026) — Ersteinsatz der Ingest-App

  • Erstes reales End-to-End-Szenario der Ingest-App: Martin hat ein PDF per Drag&Drop ins Upload-Formular gezogen, Kontext-Pflichtfeld ausgefüllt, Datei + Kontext-Notiz landeten sauber in raw/.inbox/. MVP bestanden.
  • Inhalt des PDFs: ADVIA-internes, vertraulich gekennzeichnetes KI-Marktbriefing von Martin Behn an die Geschäftsführung. Schwerpunkt: allgemeiner KI-Markt, nur teilweise Joule-relevant.
  • Kuratierung statt Voll-Ingest: Nur Joule-relevante Kennzahlen und der EU-AI-Act-Aspekt wurden ins Wiki übernommen. Modell-Benchmarks, OpenAI-Umsatzzahlen, IEA-Energie und PwC-75/20-Konzentration wurden bewusst nicht ins Wiki gezogen, um das Fokus-Profil nicht zu verwässern. Vier ADVIA-Handlungsimpulse (EU-AI-Act-Angebot, „KI-Piloten die fliegen”, Upskilling, Green AI) bleiben in der Quelle-Seite dokumentiert, aber nicht als eigene Wiki-Produktseiten angelegt — das sind Geschäftsführungs-Themen, nicht Joule-Produktwissen.
  • Neu: content/quellen/ki-marktbriefing-2026-04-15.md (mit Vertraulichkeits-Warnung am Kopf), content/konzepte/eu-ai-act.md (Deadline 2. August 2026, Bußgelder bis 35 Mio. €/7 %, Joule-spezifische offene Fragen an SAP).
  • Aktualisiert: content/konzepte/adoptionslage.md (neuer Kennzahlen-Block: 95 % GenAI-Piloten scheitern, 56 % CEOs ohne messbaren Nutzen, 27 % Arbeitsplatz-Disruption, 2,5 Mrd. $ globale GenAI-Ausgaben 2026), content/konzepte/index.md (neue Sektion „Regulatorik & Compliance”), content/quellen/index.md, content/navigation.md.
  • Datei-Bewegung: raw/.inbox/2026-04-17_ki-briefing-15-04-2026.pdf + .context.mdraw/interne-notizen/ (neuer Unterordner, passt lt. Raw-Anleitung zu internen ADVIA-Dokumenten).
  • Offen: Primärquellen einlagern (EU-AI-Act-Originaltext, PwC-Studie, Deloitte-Studie, MIT-Report — alle im Briefing zitiert). Klären, ob das Briefing ein wiederkehrendes Format ist — wenn ja, Konvention festlegen, dass tägliche Briefings nicht jedes für sich als volle Quelle ins Wiki kommen.

[2026-04-17] edit | Ingest-App MVP implementiert

  • ingest-app/-Container komplett gebaut (FastAPI 0.115 + Python 3.12-slim, ca. 170 Zeilen Python + 230 Zeilen HTML/CSS/JS).
  • Endpunkte: GET / → Redirect auf /upload, GET /upload (HTML-Formular mit Drop-Zone + URL-Feld + Pflicht-Kontextfeld), POST /upload (Datei ODER URL, Kontext Pflicht ≥10 Zeichen), GET /health.
  • Sicherheits-Minimum: MIME-Whitelist (pdf, docx, pptx, xlsx, md, txt, png, jpg, mp3, mp4), 50-MB-Limit, Dateinamen-Slugify gegen ../-Tricks, Kollisionsbehandlung (_2, _3, …).
  • Layout: jede Einreichung produziert YYYY-MM-DD_<slug>.<ext> + *.context.md mit Frontmatter (eingereicht_von, eingereicht_am, zugehoerige_datei). URL-Einreichungen landen als .url.md mit quelle_url:-Frontmatter.
  • 10/10 Smoke-Tests grün (GET-Form, zu kurzer Kontext → 400, URL-OK, PDF-OK, .exe → 415, leerer Upload → 400, URL ohne Protokoll → 400, Kollision → _2, /health, / → 307).
  • Neu: ingest-app/app.py, ingest-app/templates/upload.html, ingest-app/templates/success.html, ingest-app/Dockerfile, ingest-app/requirements.txt, ingest-app/.dockerignore.
  • Aktualisiert: docker-compose.yml (dritter Service ingest-app, Port 8081, Volume ./raw/.inbox:/app/inbox), content/meta/ingest-pipeline.md (Fahrplan abgehakt, Start-Anleitung ergänzt).
  • Nächster Schritt: Lokaler Testlauf bei Martin (docker compose up --build ingest-app), anschließend IT-Gespräch zu DNS-Alias joule-wiki.local im ADVIA-Intranet.

[2026-04-17] meta | Ingest-Pipeline-MVP festgezurrt

  • Drei offene Fragen aus der Skizze entschieden: DNS = joule-wiki.local (intern, kein öffentliches DNS), Auth = bewusst keine im MVP (Intranet-Vertrauen reicht, SSO ist Phase 2), Kontextfeld = Pflicht (≥10 Zeichen, Frontend + Backend-Validierung).
  • Begründung Pflichtfeld: Kontext zur Quelle ist beim Einreichen frisch — spart bei der späteren Ingest-Verarbeitung Rückfragen und eliminiert „was soll das hier eigentlich?”-Uploads.
  • Aktualisiert: content/meta/ingest-pipeline.md (Entscheidungs-Abschnitt ersetzt die offenen Fragen; Flow Schritt 4+5 mit Pflicht-Logik; URL-Alias konkretisiert), content/log.md.
  • Nächster Schritt: ingest-app/-Container implementieren (FastAPI + Dockerfile + HTML-Formular, ~1 Tag).

[2026-04-17] meta | MVP-Skizze für Ingest-Pipeline (Drag&Drop + URL-Upload)

  • Anlass: Martin-Frage, ob Quellen per Drag&Drop, Mail oder URL direkt ins Wiki eingereicht werden können, inkl. direkter Bearbeitung.
  • Entscheidung: Dreiphasiger Fahrplan. MVP fokussiert auf Drag&Drop + URL-Eingabe, ohne Auth, ohne Mail, ohne autonome Bearbeitung — landet nur in raw/.inbox/, Claude wird weiterhin manuell angestoßen.
  • Neu: content/meta/ingest-pipeline.md (Architektur-Skizze, Scope-Abgrenzung, Fahrplan, offene Fragen).
  • Aktualisiert: content/navigation.md (Meta-Sektion um Ingest-Pipeline-Seite ergänzt).
  • Offen: Antwort zu den drei Fragen im Dokument (DNS-Alias, Auth, Kontextfeld-Pflicht), anschließend Implementierung des ingest-app/-Containers (~1 Tag).

[2026-04-17] edit | Meta-Seiten angelegt, Browser-404 auf Root-Dokumente behoben

  • Ursache des Problems: CLAUDE.md, README.md und raw/README.md liegen außerhalb von content/ — Quartz rendert sie nicht. Direkte Wikilinks aus content/index.md liefen deshalb auf 404.
  • Lösung: Wiki-Spiegel unter content/meta/ angelegt.
  • Neu: content/meta/index.md, content/meta/schema.md, content/meta/mitmachen.md, content/meta/raw-anleitung.md.
  • Aktualisiert: content/index.md (drei Links: raw/READMEmeta/raw-anleitung, CLAUDE.mdmeta/schema, README.mdmeta/mitmachen), content/navigation.md (Meta-Sektion auf die gespiegelten Seiten umgestellt).
  • Offen: Die Original-Root-Dateien (CLAUDE.md, README.md, raw/README.md) und ihre Wiki-Spiegel synchron halten — siehe [!note] Spiegelseite am Kopf jeder Meta-Seite.

[2026-04-17] ingest | SAP-News-Originalzitate Q1 2026 eingearbeitet

  • Anlass: Martin-Anfrage, den Inhalt von https://news.sap.com/2026/04/sap-business-ai-release-highlights-q1-2026/ direkt im Wiki auszuwerten. Die Seite selbst bleibt JS-gerendert; Suchindex-Auszüge liefern jedoch zitierbare O-Töne. Zusätzlich als zweite SAP-Originalquelle den Integration Guide (help.sap.com, 2026-04-09) verlinkt.
  • Neue Fakten: Joule ist in Q1 2026 neu eingebettet in SAP Datasphere (Tasks + Erklärungen), SAP Intelligent Clinical Supply Management (Natural-Language-Abruf), SAP Signavio (AI-gestützte BPMN-Simulation, 50 % schneller zum Insight) und SAP LeanIX (Architektur-Insights). Zusätzlicher, in Q1 2026 neu hervorgehobener Referenzagent: Project Setup Agent für S/4HANA Cloud Public Edition. Zur Tender Analysis Agent: SAP-Formulierung „boosting customer revenue growth”.
  • Aktualisiert: content/quellen/sap-business-ai-q1-2026.md (Original-Zitate, neue Integrationstabelle, vierter Referenzagent, Signavio-50-%-Zeile, zweite SAP-Originalquelle verlinkt), content/produkt/roadmap.md (Project Setup Agent + neue Integrationstabelle), content/konzepte/agent-builder.md (Project Setup Agent + Umsatzwachstum bei Tender Analysis), content/entitaeten/produkt-datasphere.md (stub → entwurf mit Q1-2026-Einbettungsabschnitt), content/navigation.md, content/entitaeten/index.md.
  • Neu: content/entitaeten/produkt-signavio.md, content/entitaeten/produkt-leanix.md.
  • Offen: Originaltext-PDF von news.sap.com und Integration Guide in raw/sap-offiziell/ einlagern; Capability-Matrix aus dem Guide ableiten; SAP-News „Welcome to the (Process) Conversation” (2026-02) als Signavio-Zweitquelle einhängen.

[2026-04-17] ingest | SAP Business AI Q1 2026 (Details)

  • Anlass: Artikel mit Zusammenfassung der SAP-Q1-2026-Kommunikation in der raw/.inbox/ abgelegt.
  • Methodische Klarstellung: Im Wiki-Text wird ausschließlich die SAP-Primärquelle zitiert (news.sap.com/2026/04/sap-business-ai-release-highlights-q1-2026/). Der zuführende Drittartikel wird nicht im Wiki erwähnt — die Trace-Datei bleibt ausschließlich in raw/.inbox/, die nicht gerendert wird.
  • Neu (Quellen): content/quellen/sap-business-ai-q1-2026.md.
  • Neu (Konzepte): content/konzepte/agent-to-agent-protokoll.md, content/konzepte/ai-units-lizenzmodell.md, content/konzepte/adoptionslage.md.
  • Neu (Entitäten): content/entitaeten/rise-with-sap.md, content/entitaeten/grow-with-sap.md, content/entitaeten/sap-ecc.md.
  • Aktualisiert: content/produkt/was-ist-joule.md (Q1-2026-Reichweitentabelle, A2A-Verweis, Verfügbarkeits-Sektion), content/entitaeten/produkt-sap-joule.md (Schnell-Fakten-Tabelle mit Q1-2026-Zahlen, Zugang, Lizenzmodell), content/produkt/roadmap.md (Q1-2026-Abschnitt komplett neu), content/konzepte/joule-studio.md (GA-Status Q1 2026, Verweise A2A + Units), content/konzepte/agent-builder.md (Stand Q1 2026, drei Referenzagenten, A2A-Verweis), content/produkt/varianten/joule-for-developers.md (Verweis auf Units ab Oktober 2026), content/konzepte/index.md, content/entitaeten/index.md, content/navigation.md.
  • Kernfakten: 40+ Agenten, 2.400+ Skills, 35 Lösungen, 3 LLM-Familien (GPT 5.2 / Gemini 3.0 Pro / Claude Opus 4.6), Agent-to-Agent-Protokoll über SAP AI Agent Hub, Joule Studio GA, drei Referenzagenten (Cash Management, Tender Analysis, Catalog Optimization), AI Units (7 €/Unit · 100-Units-Mindestpaket · 150–200 % Überverbrauch), RISE/GROW-exklusiv, ECC-Support-Ende 2027-12-31.
  • Offen: Rebuild des Docker-Containers (docker compose up --build wiki), SAP-PDFs in raw/sap-offiziell/ einlagern, DSAG-Originalumfrage-PDF anhängen.

[2026-04-17] lint | Reife-Angaben in Einklang mit Navigation gebracht

  • 6 Seiten von reife: stubreife: entwurf angehoben, weil der Inhalt über Platzhalterniveau hinausgeht und die Navigation sie bereits so markiert hatte.
  • Aktualisiert: produkt/varianten/joule-for-consultants.md, produkt/varianten/joule-for-developers.md, produkt/roadmap.md, konzepte/joule-studio.md, konzepte/agent-builder.md, konzepte/grounding.md.
  • Entitäten-Platzhalter (S/4HANA, SuccessFactors, Ariba, Datasphere, SAP Build, SAP SE) bleiben bewusst auf stub — inhaltlich tatsächlich nur Platzhalter.

[2026-04-17] ingest | SAP-Joule-Produktseite (sap.com)

  • Quelle: offizielle SAP-Joule-Produktseite, ergänzt durch WebSearch-Snippets (die Haupt-URL ist JS-gerendert und liefert bei statischem Fetch leere Inhalte — siehe Hinweis in der Quellenseite).
  • Raw: raw/sap-offiziell/2026-04-17_sap-joule-offizielle-seite.md
  • Neu: content/quellen/sap-joule-produktseite-2026-04.md, content/produkt/varianten/joule-for-developers.md, content/produkt/varianten/joule-for-consultants.md, content/produkt/roadmap.md, content/konzepte/joule-studio.md, content/konzepte/agent-builder.md, content/konzepte/grounding.md, content/entitaeten/produkt-sap-joule.md, content/entitaeten/org-sap-se.md, content/entitaeten/produkt-s4hana.md, content/entitaeten/produkt-successfactors.md, content/entitaeten/produkt-ariba.md, content/entitaeten/produkt-datasphere.md, content/entitaeten/produkt-sap-build.md.
  • Aktualisiert: content/produkt/was-ist-joule.md (stub → entwurf, Zitate und Reichweitenzahlen ergänzt), content/navigation.md (alle neuen Seiten eingepflegt).
  • Kernfakten: Joule Q1 2026 live in 35 SAP-Lösungen; drei Varianten (allgemein, Joule for Developers, Joule for Consultants); Developer-Variante bis September 2026 kostenlos.
  • Offen: Ersatz der WebSearch-Snippets durch die eigentlichen SAP-PDFs (help.sap.com / SAP-News Q1-Kommunikation) — erhöht die reife der betroffenen Seiten auf „reif”.

[2026-04-17] meta | Wiki initialisiert

  • Grundstruktur angelegt, Schema in CLAUDE.md definiert, einladende Startseite geschrieben.
  • Neu: CLAUDE.md, README.md, content/index.md, content/navigation.md, content/log.md, content/produkt/index.md, content/projekte/index.md, content/entitaeten/index.md, content/konzepte/index.md, content/quellen/index.md, content/produkt/was-ist-joule.md, raw/README.md.
  • Gebaut mit Claude (Cowork) nach dem Karpathy-LLM-Wiki-Pattern.
  • Offen: Quartz-Setup, erste echte Quelle, Team-Onboarding.