Plattformkarte · Orientierung · gemessen am 2026-09-03
samfrons/messai.ai · feat/corpus-derived-recommendations
Ein Repository, vier Vercel-Zonen, neun Open-Source-Pakete, ein Postgres.
Jede Oberfläche, die MESSAI ausliefert, was sie speist und was noch nicht in Betrieb ist. Anfragen kommen über apps/web herein und werden nach URL-Pfad an site, lab und api umgeschrieben. Nur apps/api schreibt in Postgres. Alles links der Zonen ist eine Person oder ein Skript; alles rechts davon ist Zustand oder ein Modell.
Batch-Arbeit hat keinen Worker-Host: Skripte laufen auf einem Operator-Rechner oder in der wöchentlichen Claude-Routine. Die BullMQ-Box ist ruhendes Gerüst. Blaue Karten sind Vercel-Zonen, grüne gemeinsame Bibliotheken oder Live-Dienste, bernsteinfarbene Skripte, gestrichelte ruhen.
Jede Anfrage kommt über das Vercel-Projekt messai-ai (apps/web) herein, dem / gehört und das alles andere an die drei anderen Zonen umschreibt.
- Einstieg
- apps/web/next.config.js
- Rewrite-Map
- apps/web/multi-zone-rewrites.json
- Blöcke
- api 36 · lab 10 · site 17 Einträge
Ein kanonischer RAG-Chat-Endpunkt mit der vollständigen Tool-Registry (Chat-Aufspaltung am 2026-05-12 behoben). Die Tools lesen die DB und die berechneten JSON-Artefakte.
- Bibliothek
- @messai/ai-chat
- Embeddings
- HF Inference Router, live
Lokaler Supabase-CLI-Stack (Postgres 17 + Studio + Auth + Realtime + Storage) seit 2026-05-07. Docker Compose für die ML-Engine auf :8001. Der PDF-Speicher auf der Festplatte ist seit 2026-08-14 ein Cache von R2 (pnpm papers:hydrate).
Oberfläche für Marketing und Dokumentation. Kein DB-Zugriff, keine API-Routen.
- Seiten
- 25 .astro (gemessen am 2026-09-03)
- Dev-Port
- 4321
- Rewrite-Block
- site · 17 Einträge
Besitzt /, /research, /papers, /parameters, /protocols, /admin, /dashboard, /hunter, /insights, /datasets, /experiments, /runs, /survey. Die einzige Zone mit Rewrites. Liest die DB in Server-Komponenten; jeder Schreibzugriff ist ein fetch an /api.
- Seiten
- 84 (gemessen am 2026-09-03; Doku nennt 81 @ 2026-07-07)
- Bundler
- webpack – Turbopack hängt sich an diesem Modulgraphen auf
- Build
- ~5 min
- Dev-Port
- 3000
/lab/*, /lab/dac (elektrochemischer DAC-Arbeitsbereich, 2026-08-25), /models/*, /predictions/*, /methodology, /parameters/sweep. Besitzt den schweren 3D-Baum.
- Seiten
- 16 (Doku nannte 10 @ 2026-07-06)
- Dev-Port
- 3002
- Rewrite-Block
- lab · 10 Einträge
Alle /api/*-Handler. Schwere Server-Abhängigkeiten liegen hier: Sentry, AI SDK, bullmq, ioredis, AWS SDK (R2), pdf-parse. Einzige Zone, die in Postgres schreibt.
- Routen
- 224 (gemessen am 2026-09-03; 206 @ 2026-05-20)
- Caching
- force-dynamic als Standard; 12 ISR-Routen mit revalidate=60
- Build
- ~3,2 min
- Dev-Port
- 3003
- Neuestes
- Admin-Lückensuche über OpenAlex + GapSearchRun (2026-09-03, nur im Feature-Branch – noch nicht auf development)
NextAuth v4 mit dem Prisma-Adapter (zwei Adapter installiert – ein bekannter P1-Aufräumpunkt). Sitzungen, Konten und Verifizierungstokens sind Prisma-Modelle.
Alles, was mehr als eine Zone nutzt, liegt hier; Apps importieren nie aus dem src/ einer anderen App. Angebunden über tsconfig-Pfade, transpilePackages und workspace:*-Abhängigkeiten.
libs/shared/ui@messai/ui – Designsystem + Tailwind-Preset, nur scharfe Eckenlibs/shared/ml@messai/ml – runFullPrediction, Routing pro Klasse, Leser für Priors v2libs/shared/ai-chat– Chat-Tools, Live-Embedding über den HF-Routerlibs/shared/electrochemistry– analytisches predictForSystem, 5 Physikfamilienlibs/shared/dac– elektrochemisches DAC-Modell (2026-08-25)libs/shared/electrode-3d,mes-3d,component-catalog– 3D-Rezepte + Katalogdatenlibs/feature/lab-cad,libs/feature/research-agents
Ein einziger Prisma-Client. Server-Kontexte importieren @messai/database/server; einen db-Export gibt es nicht. Außerhalb von Server-Modulen nur client-sichere Zod-Schemas.
- Modelle
- 117 · 85 Enums · 51 Migrationen
- Schema
- prisma/schema.prisma
Vorab gebaute Ausgaben der Qualitäts- und ML-Skripte, in git committet und statisch ausgeliefert. API-Routen unter research/* und parameters/[slug]/* lesen zuerst aus der DB und nutzen diese als Fallback (ISR 60 s).
hierarchical-priors-v2.json– ausgeliefert von /api/ml/predicthierarchical-priors-v1.json– Parameterseiten, Abwasser-Overlayresearch/calibration.json(npe-health.jsonwird hier erwartet, fehlt aber)protocols/protocol-snapshot.json– 53 Schritte / 68 Kanten
Die gesamte Korpusbeschaffung, Extraktion, Qualitätsaktualisierung und alle Modell-Refits sind eigenständige Skripte, die von Hand oder von der wöchentlichen Claude-Routine gestartet werden. Es gibt keinen Worker-Host.
- Schreibsperre
- resolveDbTarget() · scripts/lib/db-target.ts
- Ziele
- local | staging | prod (--expect-ref)
Hat zwei Cron-Jobs in GitHub Actions abgelöst (npe-nightly, ml-retrain), die ~1.350 min/Monat verbrauchten. Läuft in einer Claude-Remote-Umgebung; committet nur npe-health.json, wenn sich die Datei geändert hat. Im Repository existiert keine npe-health.json, es ist also noch kein committeter Lauf gelandet; der Commit vom 2026-09-03, der Schritt 5b ergänzte, war ein Dry-Run.
- 1 Bayes-Abhängigkeiten installieren (PyMC, sbi, torch)
- 2 Simulator-Hürde Liu-Logan ±25 % – harter Abbruch
- 3 SBC-Audit N=500
- 4 npe-health.json zusammenstellen
- 5 Qualitäts-Refresh + Kalibrierung + GP-SCM-Fit; 5b zweistufiger Effekt-Refit + Dry-Run der OpenAlex-Lückensuche (ergänzt 2026-09-03)
- 6 Sammler für platform-health
- Spezifikation
- docs/routines/weekly-ml-audit.md
Keine CI für Lint, Test oder Build. Validiert wird lokal über husky pre-commit/pre-push und pnpm pre-deploy. Drei Workflows bleiben, alle von Hand ausgelöst.
changesets.yml– Versions-PRssync-public-mirrors.yml– open-source/* nach Messai-io/MESS-* pushen, npm/PyPI über OIDC veröffentlichenfit-priors-v2.yml– OOM-sicherer Priors-Refit
Ein Schema, drei Umgebungen (lokal :54322, Staging, Prod). Gepoolte DATABASE_URL :6543 für die App, DIRECT_URL :5432 für Migrationen und Massenoperationen. Staging und Prod teilen sich den Pooler-Host – Schreibzugriffe sind über die Projekt-Ref abgesichert.
- Publikationen
- 23.568 lokal · 23.569 Prod (2026-07-06/07)
- EPD-Zeilen
- 196.522 · 25.988 modellierbar (2026-07-07)
- Vektorspalte
- ResearchPaper.abstract_embedding · bge-large 1024d
- tote URLs
- STAGING_DATABASE_URL, PRODUCTION_DATABASE_URL (db.prisma.io)
Das lokale papers/pdf-storage/objects/ ist nur ein Cache. Vor jedem Job, der PDFs von der Festplatte liest, den Cache füllen.
- Cache füllen
- scripts/papers/hydrate-pdfs-from-r2.ts
- Prüfen
- scripts/storage/r2-verify-backups.ts
- Spalte
- ResearchPaper.r2Key
Nur ein Gerüst. Die Prozessoren sind TODOs (Embeddings schreiben Math.random(), extract_parameters liefert 1250). Es gibt keinen Worker-Host, und Vercel kann keinen dauerhaften Worker betreiben. Der Entwurf vom 2026-05-30 löst es zugunsten von GitHub-Job-DAG + after() ab.
Chat und Extraktion laufen über das Vercel AI Gateway mit Anbieter-Fallback gateway → gemini → groq → ollama (lokal). Die Extraktion kostet ~0,05–0,10 $ pro Publikation.
- Extraktor
- scripts/extraction/simple_value_extractor.ts
- Umgebung
- AI_GATEWAY_API_KEY, GOOGLE_GENERATIVE_AI_API_KEY, GROQ_API_KEY
Die semantische Suche bettet die Anfrage live über router.huggingface.co ein, dann folgt pgvector-Kosinus auf abstract_embedding. Das Batch-Backfill nutzt stattdessen den Docker-TEI-Dienst.
- Aufrufstelle
- libs/shared/ai-chat/src/lib/embed.ts
- Umgebung
- HUGGINGFACE_API_KEY
Strukturelles kausales Modell auf Basis von Gauß-Prozessen über dem benannten Parameter-DAG. Erreichbar aus /api/ml/predict hinter dem hybrid-Opt-in über GP_SCM_SERVICE_URL. Ein leerer Wert hat es im Juli 2026 für ~7 Wochen lahmgelegt; der Client nennt diesen Fall jetzt in seinem Fallback-Grund. Ob die Fly-App läuft und die Prod-Umgebung nicht leer ist, wurde von diesem Rechner aus nicht geprüft. Trainiert mit scikit-learn, nicht torch. Das ausgelieferte Pickle enthält keinen einzigen von null verschiedenen Physik-Mittelwert, daher war nach dem Fit vom 2026-07-31 kein Redeploy nötig.
- ausgeliefertes pkl
- gp-scm-fitted-named-db-2026-06-07.pkl
- Trainer
- services/ml-engine/train_gp_scm.py
FastAPI + Python: Batch-Embeddings (HF TEI), Nougat-OCR, gefittete pgmpy-Posteriors (gecachtes JSON, kein Live-Server), NPE-Simulator, Trainer für hierarchische Priors, Conformal-Kalibrierung. Läuft aus docker-compose.ml.yml mit eigenem postgres/redis/mlflow für Experimente.
- Dockerfiles
- Dockerfile · .gpscm · .nougat · .npe
Anfrage- und Batch-Pfade · 26 Kanten
| Von | Nach | Pfad | Art |
|---|---|---|---|
| Browser der Forschenden | apps/web | HTTPS messai.io | Live-Anfragepfad |
| apps/web | apps/site | Rewrite /about /learn … | Live-Anfragepfad |
| apps/web | apps/lab | Rewrite /lab /models … | Live-Anfragepfad |
| apps/web | apps/api | Rewrite /api/* · alle Schreibzugriffe | Live-Anfragepfad |
| KI-Chat & Agenten | apps/api | POST /api/chat | Live-Anfragepfad |
| apps/web | @messai/database | Lesezugriffe im Server | Lesen in Server-Komponente / zur Build-Zeit |
| apps/lab | @messai/database | Lesezugriffe im Server | Lesen in Server-Komponente / zur Build-Zeit |
| apps/api | @messai/database | Lesen + Schreiben | Live-Anfragepfad |
| @messai/database | Supabase Postgres | Prisma · gepoolt :6543 | Live-Anfragepfad |
| apps/api | Cloudflare R2 | PDF-Bytes | Live-Anfragepfad |
| apps/api | Upstash Redis + BullMQ | einreihen (Mock) | ruhend |
| apps/api | AI Gateway | Chat + Tools | Live-Anfragepfad |
| apps/api | HF Inference Router | Anfrage einbetten | Live-Anfragepfad |
| apps/api | GP-SCM auf Fly.io | ?hybrid=true | Live-Anfragepfad |
| apps/api | Berechnete JSON-Artefakte | JSON-Fallback · ISR 60 s | Lesen in Server-Komponente / zur Build-Zeit |
| apps/web · lab · api | gemeinsame @messai/*-Libs | importiert @messai/* | Lesen in Server-Komponente / zur Build-Zeit |
| apps/api | next-auth | Sitzungen | Live-Anfragepfad |
| Operator-Skripte | Supabase Postgres | Sync-Skripte · DIRECT_URL :5432 | Batch oder Skript |
| Operator-Skripte | Cloudflare R2 | Cache füllen / migrieren | Batch oder Skript |
| Operator-Skripte | AI Gateway | LLM-Aufrufe der Extraktion | Batch oder Skript |
| Wöchentliche Claude-Routine | Berechnete JSON-Artefakte | Refits → committet JSON | Batch oder Skript |
| Wöchentliche Claude-Routine | GP-SCM auf Fly.io | GP-SCM-Fit | Batch oder Skript |
| GitHub Actions | Berechnete JSON-Artefakte | fit-priors-v2 | Batch oder Skript |
| GitHub Actions | ML-Engine | workflow_dispatch | Batch oder Skript |
| ML-Engine | Supabase Postgres | Batch-Embedding → pgvector | Batch oder Skript |
| Berechnete JSON-Artefakte | apps/web | statisch /data/* | Lesen in Server-Komponente / zur Build-Zeit |
Vier Bahnen, von oben nach unten zu lesen. Jedes Skript läuft standardmäßig als Dry-Run und braucht --apply --target, um zu schreiben. Geplant laufen die Bahnen 3 und 4: Die wöchentliche Claude-Routine fittet Priors, Effekte, Kalibrierung und GP-SCM neu. Recherche, Download und LLM-Extraktion werden noch von Hand gestartet; der GitHub-Job-DAG, der sie automatisieren würde, ist ein Entwurf, kein Code.
Die einzige Stufe, bei der nichts von selbst ankommt – daher Polling. Der wöchentliche Schritt 2 findet neue DOIs seit dem Cursor; search-gaps-openalex.ts (2026-09-03) schreibt Lückenabfragen nach papers/acquisition/gaps-<date>.json, und die Admin-Route protokolliert einen GapSearchRun.
- Skripte
- search_openalex_underrepresented.py · search-gaps-openalex.ts
- Quell-Tag
- ResearchPaper.source = openalex-weekly
Begrenzt auf 2.000 pro Stufe und Lauf. curl_cffi gibt sich als Chrome aus, um an 403-Antworten von MDPI/Wiley/ACS/Elsevier vorbeizukommen. 2.075 Publikationen ohne DOI bleiben auf diesem Weg unerreichbar.
- Skripte
- download_paperscraper.py · download_curl_cffi.py · download_unpaywall.py · xml_to_pmc_pdf.py
Inhaltsadressiert über pdfHash. Seit 2026-08-14 liegen die Bytes auf R2, und der lokale Speicher ist ein Cache; migrate-local-to-r2.ts / backfill-r2-keys.ts halten ResearchPaper.r2Key befüllt.
Maßgebliche Quelle für PDF-Bytes.
Legt ResearchPaper-Zeilen an oder verknüpft sie. Die Schreibsperre gilt wie in der ganzen Pipeline: Dry-Run, außer mit --apply --target {local|staging|prod}; Prod verlangt --expect-ref.
Knotenpunkt des Schemas. Enthält pdfStoragePath, r2Key, aiSummary, Taxonomiespalten (primarySystemType TEXT), Demo-Inhalte und die pgvector-Spalte abstract_embedding.
Holt die benötigten PDFs aus R2 in den lokalen Cache, bevor eine Extraktionskohorte läuft.
Nougat läuft als nächtlicher Batch über pnpm nougat-batch. 1.444 BioC-PMC-XML-Dateien werden von einem vorhandenen Parser geparst, aber noch nicht neu extrahiert (kostengebunden, ~70–150 $).
- Server
- services/ml-engine/nougat_server.py
- Ausgabe
- papers/nougat/<doi>.mmd
Der aktive Extraktor (v1.6-Orchestrator seit 2026-05-08 veraltet). Schreibt JSON unter papers/extracted/<aa>/<sha>/; jeder Lauf muss damit enden, dass sein Sync mit 0 endet (Regel §7). 9.511 Publikationen erledigt, Stand letzter Volllauf.
- Fallback
- docs/extraction/provider-fallback-2026-05-09.md
- Smoke-Test
- scripts/extraction/phase6-smoke-test.ts
Fünf aufeinanderfolgende Jobs auf dem lokalen Korpus, abschließend Job E, der alle vier Artefakttypen in die DB synchronisiert. Ollama-gestützt mit Anbieter-Fallback; das Manifest übersteht SIGTERM.
- Runbook
- docs/runbooks/overnight-pipeline.md
Noch vorhanden und lauffähig; fest codiert auf claude-sonnet-4-6 (P1-Aufräumpunkt). Befüllen ExtractedTableData / ExtractedFigureData / ExperimentalContext.
Schreibt Zeilen mit vollständiger Herkunft. audit-disk-vs-db.ts lässt pre-deploy bei Drift, die nur auf der Festplatte besteht, fehlschlagen. Launch-Blocker-Felder (derivationMethod, uncertainty±, catholyteBuffer) sind echte Spalten, kein JSONB.
Extrahierte Werte pro Publikation mit Bedingungen, kanonischem Slug, SI-normalisiertem numericValue, verifierPassed. Der begrenzende Faktor für die Modellierbarkeit ist die Abdeckung der Kanonisierung, nicht die Extraktion.
Typisierte Nebentabellen, über paperId verknüpft. ConditionSet führt phAnolyte/phCatholyte/Referenzelektroden als Spalten; ReactorGeometry hat ~47 typisierte Spalten.
Idempotent, standardmäßig Dry-Run. Volumenbezogene Dichten werden eigenen Arten zugeordnet, damit sie in den Priors nie mit flächenbezogenen Werten gepoolt werden. Die Weitergabe läuft lokal → Staging → Prod, additiv und mit Ref-Prüfung.
- Normalisierer
- scripts/quality/normalize-to-si.py
- Kanonisierung
- canonicalize-name.ts
Schritte 6–9 von refresh-all. v2 ist Student-t, pro Klasse stratifiziert, nutpie-Sampler; der vollständige Fit muss den OOM-sicheren Batch-Runner nutzen. Niemals ein Artefakt aus dem FAST-Modus ausliefern. v1 und v2 müssen gemeinsam neu gefittet werden.
- Batch-Lauf
- training/run_priors_v2_batched.py
- Benchmark
- bes-benchmark-v1 (publikationsdisjunkt, 2026-09-02)
Effekte werden jetzt aus der DB gefittet, nicht nur aus der Tabellen-CSV, und Lückeneinträge speisen die OpenAlex-Lückensuche. Die Korrelationsmatrix des Wissensgraphen ist nach Slug indiziert, Pearson + Spearman.
Batch-Backfill der pgvector-Spalte. Ist der Dienst nicht erreichbar, wird das Embedding stillschweigend übersprungen, und nichts versucht es erneut.
12/27 MFC-Knoten nach dem Present-Parent-Fix gefittet; der begrenzende Faktor ist die Abdeckung mit gemeinsamen Daten.
Von der Routine nur bei inhaltlicher Änderung nach main committet; ein Commit deployt alle vier Vercel-Projekte.
runFullPrediction liest Priors v2, Conformal-Kalibrierung, OOD-Erkennung und die Physikvalidierung zur Laufzeit. Nicht-MFC-Klassen gehen an das analytische Vorhersagemodell; MFC behält den datengestützten Pfad.
Semantische Suche: Live-Embedding der Anfrage → pgvector-Kosinus → Zeilen laden. Neue Extraktionen erscheinen sofort; vorab gebaute Artefakte brauchen ein Redeploy oder pnpm regenerate.
Der Entwurf in docs/corpus-refresh-architecture.md. Nicht umgesetzt: Das Workflows-Verzeichnis enthält nur changesets, sync-public-mirrors und fit-priors-v2. Beschaffung und Extraktion bleiben manuell; geplant laufen nur Refits (wöchentliche Claude-Routine).
Pipeline-Kanten · 26 Kanten
| Von | Nach | Pfad | Art |
|---|---|---|---|
| OpenAlex | PDFs beschaffen | neue DOIs | Batch oder Skript |
| PDFs beschaffen | In den kanonischen Speicher überführen | downloaded/ | Batch oder Skript |
| In den kanonischen Speicher überführen | R2 | Upload · r2Key | Batch oder Skript |
| R2 | Publikationen → DB synchronisieren | Manifest | Batch oder Skript |
| Publikationen → DB synchronisieren | ResearchPaper | einfügen / verknüpfen | Batch oder Skript |
| R2 | PDFs in den Cache laden | in den Cache laden | Batch oder Skript |
| PDFs in den Cache laden | Parsen | PDFs | Batch oder Skript |
| Parsen | v2-Wertextraktor · Nachtjobs | .mmd / Text | Batch oder Skript |
| Parsen | Legacy-Skripte für Claude/Gemini | ad hoc | ruhend |
| v2-Wertextraktor | Extraktionen → DB synchronisieren | values_v2.json | Batch oder Skript |
| Nachtjobs A–E | Extraktionen → DB synchronisieren | Job E | Batch oder Skript |
| Legacy-Skripte | Extracted{Table,Figure,Paper}Data | Tabellen · Abbildungen · Kontext | ruhend |
| Extraktionen → DB synchronisieren | ExtractedParameterData · Nebentabellen | Zeilen + Herkunft | Batch oder Skript |
| ExtractedParameterData | refresh-all.sh | liest EPD · schreibt Slug, SI-Wert, verifierPassed | Batch oder Skript |
| refresh-all.sh | Refit von Priors & Kalibrierung | Schritte 6–9 | Batch oder Skript |
| Refit von Priors & Kalibrierung | Effekte innerhalb von Publikationen + Wissensgraph | danach | Batch oder Skript |
| Effekte innerhalb von Publikationen + Wissensgraph | GP-SCM-Fit | danach | Batch oder Skript |
| ResearchPaper | embed_papers.py | Abstracts | Batch oder Skript |
| Refit von Priors & Kalibrierung | Berechnete Artefakte (git) | Priors · Kalibrierung | Batch oder Skript |
| Effekte innerhalb von Publikationen + Wissensgraph | Berechnete Artefakte (git) | Effekte · dag | Batch oder Skript |
| GP-SCM-Fit | Routen in apps/api | pkl → Fly | Batch oder Skript |
| Berechnete Artefakte (git) | Routen in apps/api | JSON-Fallback | Lesen in Server-Komponente / zur Build-Zeit |
| ExtractedParameterData | Routen in apps/api | Lesen zuerst aus der DB | Live-Anfragepfad |
| Routen in apps/api | UI · apps/web · apps/lab | fetch /api/* | Live-Anfragepfad |
| embed_papers.py | UI · apps/web · apps/lab | pgvector-Kosinus | Live-Anfragepfad |
| Effekte innerhalb von Publikationen + Wissensgraph | OpenAlex | Lückeneinträge → Lückensuche (5b) | Batch oder Skript |
Seit der Konsolidierung am 2026-04-25 liegt jedes Paket in diesem Repository; die öffentlichen Messai-io-Repositorys sind schreibgeschützte Spiegel, die beim Release von Hand gepusht werden. mess-parameters ist das Schwergewicht: Das Produkt liest seine Ontologie zur Build-Zeit, und die DB synchronisiert extrahierte Werte dorthin zurück. Dataset-Blobs gelangen nie in git oder npm: Der Katalog liefert Manifeste aus, die Bytes liegen auf dem Hugging Face Hub.
open-source/ · 9 Pakete · workspace:*
| Paket | Version · Lizenz · Dateien | Was es ist | Spiegel · Verweise |
|---|---|---|---|
| mess-parameters | v0.3.0 · CC-BY-4.0 · 1.444 | Standardisierte Parameter-Ontologie und Analysewerkzeuge: 835 Parameter in 15 Kategorien. data/parameter-definitions-rich.json (für Fixtures auf v0.2.0 fixiert) plus SCIENTIFIC_INTEGRITY.md (VK der Leistungsdichte ≈ 1.285 %).
| @messai-io/mess-parameters github.com/Messai-io/MESS-Parameters 349 Verweise im Haupt-Repository |
| mess-materials | v0.2.0 · CC-BY-4.0 · 104 | DFT-berechnete Materialeigenschaften für Elektroden, Membranen und Katalysatoren mit Herkunft aus dem Materials Project, Pourbaix-Stabilität, Elastizität.
| @messai-io/mess-materials github.com/Messai-io/MESS-Materials 69 Verweise im Haupt-Repository |
| mess-microbes | v0.1.0 · MIT · 41 | Kuratierte, für MES relevante Mikroorganismen: Elektrogene, Elektrotrophe, Gemeinschaftspartner und bewusste Negativkontrollen. Katalog = 28 Mikroben (korrigiert 2026-06-30).
| @messai-io/mess-microbes github.com/Messai-io/MESS-Microbes 34 Verweise im Haupt-Repository |
| mess-datasets-catalog | v0.1.0 · CC-BY-4.0 · 612 | Katalog und Klassifikationen offener MES-Datensätze (Zenodo, Figshare), per Slug mit Parametern und Materialien verknüpft. Nur Metadaten; Blobs auf dem HF Hub.
| @messai-io/mess-datasets-catalog github.com/Messai-io/MESS-datasets 6 Verweise im Haupt-Repository |
| mess-simulations | v0.1.0 · MIT · 31 | Physikbasierte Simulations- und Modellierungswerkzeuge für MES. | @messai-io/mess-simulations github.com/Messai-io/MESS-Simulations 4 Verweise im Haupt-Repository |
| mess-agents | v0.1.0 · MIT · 27 | Framework zur Orchestrierung von Multi-Agenten-Forschung. | @messai-io/mess-agents github.com/Messai-io/MESS-Agents 1 Verweis im Haupt-Repository |
| mess-hypotheses | v0.1.0 · MIT · 28 | Identifikation von Forschungslücken und Hypothesengenerierung. Noch bindet kein Chat-Tool es ein (P2-Lücke). | @messai-io/mess-hypotheses github.com/Messai-io/MESS-Hypotheses 1 Verweis im Haupt-Repository |
| mess-learning | v0.1.0 · CC-BY-4.0 · 22 | Lerninhalte und Rechner. | @messai-io/mess-learning github.com/Messai-io/MESS-Learning 1 Verweis im Haupt-Repository |
| mess-methods | python · pyproject · 32 | Python-Paket mit MES-Methoden (tests/, src/). Wird vom Spiegel-Workflow auf PyPI veröffentlicht. | PyPI mess-methods github.com/Messai-io/MESS-Methods 1 Verweis im Haupt-Repository |
Das Produkt liest Pakete zur Build-Zeit (Fixtures), beim Seeding (Materialien, Mikroben) und zur Laufzeit (Dataset-Manifeste → HF Hub).
ParameterDefinition wird in der DB bearbeitet und nach mess-parameters zurücksynchronisiert; Materialien und Mikroben werden aus ihren Paketen befüllt.
Versions-PRs über Changesets; die kanonische Paketform erzwingt der Linter. Rollback = git revert in open-source/*, dann den Spiegel erneut ausführen.
Pusht open-source/<pkg> mit einem Tag in sein Messai-io-Repository und veröffentlicht dann. Bleibt auf GitHub, weil OIDC-Trusted-Publishing nur dort funktioniert. Automatische Auslöser wurden entfernt, um die Actions-Ausgaben bei 0 $ zu halten.
MESS-Parameters, MESS-Materials, MESS-datasets, MESS-Agents, MESS-Hypotheses, MESS-Learning, MESS-Microbes, MESS-Methods, MESS-Simulations. Beiträge aus der Öffentlichkeit fließen über docs/contributing-from-public.md zurück.
Große Dataset-Blobs (PDFs, CSVs, Bilder), referenziert über download_url in jedem Manifest; Konsumenten prüfen nach dem Download die md5-Prüfsumme.
Pfade für Sync, Veröffentlichung und Nutzung · 13 Kanten
| Von | Nach | Pfad | Art |
|---|---|---|---|
| mess-parameters | apps/* + libs/* | Fixtures beim Build | Lesen in Server-Komponente / zur Build-Zeit |
| Supabase Postgres | mess-parameters | Sync von Definitionen + Werten | Batch oder Skript |
| mess-materials | Supabase Postgres | Seed von Material | Lesen in Server-Komponente / zur Build-Zeit |
| mess-microbes | Supabase Postgres | Seed von Microbe | Lesen in Server-Komponente / zur Build-Zeit |
| mess-datasets-catalog | apps/* + libs/* | /datasets-Manifeste | Lesen in Server-Komponente / zur Build-Zeit |
| Releases · pnpm changeset | sync-public-mirrors.yml | Versions-PR gemergt | Batch oder Skript |
| sync-public-mirrors.yml | github.com/Messai-io/MESS-* | git push + tag | Batch oder Skript |
| sync-public-mirrors.yml | npm · @messai-io/* | pnpm publish | Batch oder Skript |
| sync-public-mirrors.yml | PyPI · mess-methods | nur mess-methods | Batch oder Skript |
| mess-datasets-catalog | Hugging Face Hub | Blobs · download_url | Batch oder Skript |
| apps/* + libs/* | Hugging Face Hub | Abruf + Prüfsumme | Live-Anfragepfad |
| github.com/Messai-io/MESS-* | Externe Forschende | Klonen / Issues | Lesen in Server-Komponente / zur Build-Zeit |
| npm · @messai-io/* | Externe Forschende | installieren | Lesen in Server-Komponente / zur Build-Zeit |
ResearchPaper (82 Relationsfelder) ist der Knotenpunkt; es folgen User (38), Experiment (34), Microbe (26), ParameterDefinition und ConditionSet (je 22). Nur ResearchPaper hat eine pgvector-Spalte. Schema-Regel §8: Jedes Feld, das ein UI-Filter, ein ML-Merkmal oder eine WHERE-Klausel berührt, ist eine typisierte Spalte, nie JSONB.
| Domäne | Modelle | Namen |
|---|---|---|
| Publikationen & Korpus | 12 | ResearchPaper · PaperRelationship · PaperMergeAudit · ResearchCluster · ResearchTrend · AnomalousPaper · ResearchPaperEquation · PaperParameter · PaperMaterial · PaperMicrobe · MetagenomicPaperLink · GapSearchRun |
| Extraktion | 14 | ExtractedParameterData · ExtractedTableData · ExtractedFigureData · ExtractedPaperData · ExtractionJob · ExtractionProvenance · ExperimentalContext · ConditionSet · ParameterConditionLink · ParameterObservation · ParameterProvenance · ReactorGeometry · OperatingCondition · MFCDesign |
| Parameter & Wissen | 19 | ParameterDefinition · ParameterEdge · ParameterPrior · PriorStratumAxis · ParameterTemplate · ParameterClassification · CustomField · ElectrochemicalParameter · BiologicalParameter · EnvironmentalParameter · OperationalParameter · MaterialParameter · KnowledgeNode · KnowledgeEdge · LearnedDagEdge · SymbolicLaw · SubstrateClassification · DataClassificationRule · BufferChemistryProfile |
| Materialien | 7 | Material · MaterialClassification · MaterialMicrobeAffinity · MaterialPaperCrossref · ElectrodeFormulation · AiMaterialDefinition · AiGeometryRecipe |
| Mikroben & Biofilm | 15 | Microbe · MicrobeCytochrome · MicrobeShuttle · MicrobePerformanceMeasurement · MicrobeEngineeringEvent · MicrobeOmicsStudy · MicrobeReference · MicrobeSubstrateProductPair · MicrobeKineticConstant · EETPathwayAssignment · MetagenomicAnalysis · AiMicrobeDefinition · BiofilmSample · BiofilmCreepCurve · MicroelectrodeProfile |
| Experimente & Labor | 21 | Experiment · ExperimentCollaborator · ExperimentEvent · ExperimentPaper · Run · Measurement · LabConfiguration · LabConfigurationSnapshot · LabWastewaterQueryLog · MethodologyPreset · Workflow · WorkstreamArtifact · SimulationReplay · SimulationResult · Model · KineticCurve · PolarizationPoint · EISPoint · ElectrochemicalKinetic · MESProduct · MESProductYield |
| ML & Agenten | 9 | Prediction · CrossSystemPrediction · CalibrationResult · TrainedModelLineage · EvalGateRun · EvalResult · AgentRun · Hypothesis · IntegrationMapping |
| Datensätze | 5 | Dataset · DatasetMeasurement · DatasetCurvePoint · DatasetParameter · DatasetMaterial |
| Nutzende & Admin | 11 | User · Account · Session · VerificationToken · Permission · Team · Project · BetaSignup · SurveyResponse · SharedView · AuditLog |
| Feedback | 4 | Feedback · FeedbackAnalytics · FeedbackNotification · WastewaterFeedback |
Was die Diagramme gepunktet oder rot zeichnen. Der Schweregrad folgt den Plattformdokumenten; der Stand wurde am 2026-09-03 gegen CLAUDE.local.md und den Arbeitsbaum erneut geprüft. Erledigte Punkte (Chat-Aufspaltung, force-dynamic-Audit, Gültigkeit der Priors-JSON) sind separat aufgeführt.
| Prio | Lücke | Aktueller Stand | Was sie auflöst |
|---|---|---|---|
| P0 | Extraktion & Beschaffung laufen nicht geplant | weekly_pipeline.sh, simple_value_extractor.ts laufen von Hand; corpus-refresh.yml ist ein Entwurf (2026-05-30) ohne Code. Nur Refits laufen wöchentlich (Claude-Routine). | Den GitHub-Job-DAG oder einen geplanten Routine-Schritt für Recherche → Beschaffung → Extraktion mit Budgetdeckel umsetzen. |
| P0 | BullMQ-Schicht ist ein Mock | Die Prozessoren in apps/api/src/lib/jobs sind TODOs; kein Worker-Host; Vercel kann keinen dauerhaften Worker hosten. | Das Gerüst archivieren; after() / Vercel Queues für die Echtzeit-Erfassungsebene nutzen. |
| P1 | Die Abdeckung der Kanonisierung, nicht die Extraktion, begrenzt die Modellierbarkeit | 80,7 % der EPD-Zeilen haben NULL als canonical_slug (84.243 numerische Zeilen wiederherstellbar). Modellierbar 25.988 vs. Obergrenze ≈ 40.000–50.000. | Alias-Tabellen / canonicalize-name.ts erweitern; Schritte 2–3 von refresh-all erneut ausführen. |
| P1 | Unvollständige Fremdschlüssel in Prod | ~33.000 ExtractedParameterData-Zeilen in Prod fehlt die parameterDefinitionId (betrifft FK-/DAG-Lesepfade, nicht die modellierbare Anzahl). | Backfill mit Ref-Sperre, zuerst auf Staging. |
| P1 | Publikationen ↔ Materialien / Mikroben verwaist | anodeMaterials / cathodeMaterials sind Strings; die Verknüpfungstabellen PaperMaterial / PaperMicrobe sind größtenteils leer. | Verknüpfungen aus der Extraktion nachfüllen; /api/materials/[id]/papers ergänzen. |
| P1 | Ungelesener Korpus | 1.444 BioC-PMC-XML-Dateien geparst, aber nicht neu extrahiert (~70–150 $); 2.075 Publikationen ohne DOI unerreichbar; 403-Antworten von MDPI/Wiley/ACS/Elsevier. | Kostengebundener v2-Lauf über das XML; curl_cffi-Pfad für URLs ohne DOI. |
| P1 | Vorbehalte zu Konfidenz und Integrität nicht sichtbar | confidence-Spalten existieren; die Oberfläche zeigt Punktschätzungen. SCIENTIFIC_INTEGRITY.md (VK der Leistungsdichte ≈ 1.285 %) hat kein Banner in der Oberfläche. | confidence in die Antworten von /api/parameters/* aufnehmen; einklappbarer Hinweis auf /parameters/*. |
| P1 | GP-SCM-Fits sind datenbegrenzt | 12/27 MFC-Knoten gefittet; neue Fits sind Interpolationsartefakte (energy_efficiency flach bei 43,02 %). toc_removal hat 1 gemeinsame Beobachtung. | Gezielte bezahlte Neuextraktion für Biofilm-/Biomasse-Knoten; --min-samples nicht senken. |
| P2 | Keine Feedback- / Retraining-Schleife | Die Prediction-Tabelle existiert; kein /lab-Widget erfasst {predicted, actual}; kein durch Drift ausgelöster Refit. | Feedback-Widget → POST /api/predictions; wöchentlich neu generieren, wenn Drift > 5 %. |
| P2 | Chat-Tools fehlen für 4 Pakete | query-methods, query-hypotheses, query-datasets, query-learning nicht eingebunden. | Ein Tool pro Paket in @messai/ai-chat. |
| P1 | GP-SCM kann in Prod unbemerkt ausfallen | Eine leere GP_SCM_SERVICE_URL auf Vercel hat die Säule im Juli 2026 für ~7 Wochen deaktiviert, während sie angebunden aussah (libs/shared/ml/src/gp-scm-client.ts). Ob Prod heute einen nicht leeren Wert hat, wurde von diesem Rechner aus nicht verifiziert. | Die Vercel-Umgebung von messai-api prüfen; der Client meldet einen leeren Wert jetzt als Fallback-Grund. |
| P1 | Ausgabe der Wochenroutine nie gelandet | Nirgends im Baum existiert eine npe-health.json – entweder lief die Routine nie mit --commit, oder ihr Commit-Schritt hat nie ausgelöst. Das Routine-Skript selbst ist vorhanden und hat am 2026-09-03 Schritt 5b erhalten. | bash scripts/routines/weekly-ml-audit.sh --commit einmal von Hand ausführen; bestätigen, dass die geplante Sitzung in Claude Code im Web existiert. |
| P2 | Entwicklungshygiene | Zwei NextAuth-Prisma-Adapter installiert; react-query in devDependencies. (Legacy-Extraktoren lesen ANTHROPIC_MODEL bereits mit claude-sonnet-4-6 als Standard – dieser Punkt aus der Doku von 2026-05 ist erledigt.) | @auth/prisma-adapter wählen; Abhängigkeit verschieben. |
- Chat-Aufspaltung – ein kanonisches
/api/chat(2026-05-12). - Gültigkeit der Priors-JSON – v1 und v2 parsen fehlerfrei (Commit 715b63e96).
- ML-Routing pro Klasse – 6 Nicht-MFC-Klassen gehen an das analytische Vorhersagemodell (Commits 4778f8589, bef7acedd); die Lab-Oberfläche übergibt weiterhin Proxy-Eingaben.
- Schnelle Harmonisierungsgewinne gemergt (PR #501): +434 modellierbar; am 2026-07-06/07 auf Staging und Prod übertragen.
- GP-SCM-dropna über alle Eltern – der Present-Parent-Fit ergab gemessen 9 → 12 Knoten (2026-07-31, Branch fix/gpscm-present-parent-fit, nicht gemergt).