452 lines
23 KiB
Markdown
452 lines
23 KiB
Markdown
# VianoBugAnalysis
|
||
|
||
BugAnalysis untersucht gemeldete Softwarefehler anhand von Diagnosepaketen,
|
||
Sourcecode und lesenden Datenbankabfragen. Ein dauerhaft laufender Worker erstellt
|
||
Diagnosen und Aufträge für Codingagenten beziehungsweise menschliche Entwickler.
|
||
Die Weboberfläche bietet Benutzeranmeldung, Betriebsübersicht, Testerantworten,
|
||
API-Schlüssel und Paketdownloads. Das aktuelle Projektprofil ist für WoW/Vcore
|
||
ausgelegt. BugAnalysis installiert selbst keine Bugfixes auf dem Spielserver.
|
||
|
||
## Installation auf einem Linux-VPS
|
||
|
||
Diese Anleitung ist direkt auf der Repository-Startseite lesbar. Sie setzt einen
|
||
Linux-Server mit systemd und einen SSH-Zugang mit sudo-Rechten voraus. Die
|
||
Paketbefehle unten gelten für Debian/Ubuntu; auf anderen Distributionen die
|
||
entsprechenden Pakete installieren. **Python 3.11 oder neuer ist erforderlich.**
|
||
|
||
### 1. Voraussetzungen installieren
|
||
|
||
```sh
|
||
sudo apt-get update
|
||
sudo apt-get install python3 python3-venv python3-pip git nginx ca-certificates curl
|
||
python3 --version
|
||
```
|
||
|
||
Ist die Python-Version älter als 3.11, zuerst eine unterstützte Python-Version
|
||
bereitstellen und diese für den Installer verwenden. Datenbankserver und
|
||
World-Daten werden vom Installer nicht eingerichtet oder importiert. Ein
|
||
erreichbarer MariaDB-Datenbestand für die Recherche muss separat vorhanden
|
||
sein, beispielsweise eine isolierte Testdatenbank aus einem Backup.
|
||
|
||
### 2. Repository in das vorgesehene Verzeichnis klonen
|
||
|
||
**Der Installer und die systemd-Units erwarten derzeit genau
|
||
`/opt/viano-bug-analysis`.** Nicht einen beliebigen Ordnernamen verwenden.
|
||
Git legt den Zielordner an; er muss dafür noch nicht existieren oder leer sein.
|
||
|
||
```sh
|
||
sudo git clone https://gitea.viano-software.de/Nico/VianoBugAnalysis /opt/viano-bug-analysis
|
||
cd /opt/viano-bug-analysis
|
||
```
|
||
|
||
Das Klonen mit sudo erzeugt einen root-eigenen Checkout. Der Installer verlangt,
|
||
dass Programmdateien root gehören und weder für Gruppe noch andere Benutzer
|
||
schreibbar sind. Bei einem privaten Repository die Git-Anmeldung interaktiv
|
||
durchführen; keine Zugangsdaten in die URL schreiben.
|
||
|
||
### 3. Installationsplan prüfen und installieren
|
||
|
||
```sh
|
||
python3 deploy/install.py --dry-run
|
||
sudo python3 deploy/install.py
|
||
```
|
||
|
||
Der erste Befehl zeigt nur den Plan. Der zweite erstellt den Dienstbenutzer
|
||
`buganalysis`, die virtuelle Python-Umgebung, Konfigurationsvorlagen und beide
|
||
systemd-Units. Er startet oder aktiviert noch keinen Dienst und sendet keine
|
||
LLM-Anfrage. Vorhandene Konfigurationsdateien und Units werden nicht überschrieben.
|
||
|
||
| Verzeichnis | Inhalt |
|
||
| --- | --- |
|
||
| `/opt/viano-bug-analysis` | Programmcode und `.venv`; root-verwaltet |
|
||
| `/etc/viano-bug-analysis` | Konfiguration, geschützte Environment-Dateien und Webnutzerdatei |
|
||
| `/var/lib/viano-bug-analysis` | Fallakten, Inbox, Outbox, Review und Laufzeitdaten |
|
||
| `/srv/viano-bug-analysis/viano-core` | Separater Source-Checkout des untersuchten Vcore-Projekts |
|
||
|
||
Der Linux-Dienstbenutzer ist kein Webkonto. Webkonten werden in Schritt 6
|
||
gesondert angelegt. Ein Programm zur automatischen Erfassung benötigt später
|
||
einen Integrationsschlüssel, ebenfalls kein Webpasswort oder Cloud-API-Key.
|
||
|
||
### 4. Vcore-Sourcecode und lesenden Datenbankzugang bereitstellen
|
||
|
||
BugAnalysis benötigt zusätzlich zu seinem eigenen Repository den Sourcecode des
|
||
untersuchten Projekts. Für Vcore beispielsweise:
|
||
|
||
```sh
|
||
sudo git clone --branch master --single-branch https://gitea.viano-software.de/Nico/Viano-Core /srv/viano-bug-analysis/viano-core
|
||
sudo git -C /srv/viano-bug-analysis/viano-core rev-parse HEAD
|
||
```
|
||
|
||
Die Ausgabe des zweiten Befehls ist der vollständige Commit. Der für die Analyse
|
||
gewünschte Stand muss lokal vorhanden sein und wird in `project.toml` festgelegt.
|
||
Der aktuelle Branchkopf ist nur dann passend, wenn genau dieser Stand untersucht
|
||
werden soll. Der Worker klont oder aktualisiert den Sourcecode nicht automatisch.
|
||
|
||
Ein DB-Administrator richtet einen Benutzer mit ausschließlich passenden
|
||
SELECT-Rechten auf die World-Daten ein. Keine Schreibrechte und keinen
|
||
allgemeinen Administrationszugang verwenden. Für entfernte Datenbanken einen
|
||
geschützten Netzwerkweg bereitstellen; der aktuelle DB-Provider richtet selbst
|
||
kein TLS ein. Die vollständige Tabellenfreigabe steht in der Projektvorlage.
|
||
|
||
### 5. Konfigurationen und Zugangsdaten eintragen
|
||
|
||
Die Konfiguration liegt außerhalb des Git-Checkouts. Beispiele öffnen:
|
||
|
||
```sh
|
||
sudoedit /etc/viano-bug-analysis/api.toml
|
||
sudoedit /etc/viano-bug-analysis/project.toml
|
||
sudoedit /etc/viano-bug-analysis/llm.toml
|
||
sudoedit /etc/viano-bug-analysis/worker.env
|
||
```
|
||
|
||
| Datei | Beim ersten Einrichten prüfen |
|
||
| --- | --- |
|
||
| `api.toml` | Projekt-ID, Profilzuordnung und Konfigurationspfade; HTTP-Bindung auf `127.0.0.1:8080` lassen |
|
||
| `project.toml` | Sourcepfad und vollständigen Commit, DB-Host/Port/Name/Benutzer, Snapshotkennung und Tabellenfreigaben |
|
||
| `llm.toml` | Anbieter, tatsächlich verfügbares Modell, Cache- und Timeout-Einstellungen; verwendete Schlüssel-Umgebungsvariable |
|
||
| `worker.env` | Cloud-API-Key und DB-Passwort |
|
||
| `worker.toml` | Verweis auf `api.toml`, Polling und Speicherreserve; Vorgaben zunächst übernehmen |
|
||
| `investigation.bounded.toml`, `budget.human-tests.toml` | Untersuchungs- und Budgetregeln; Vorgaben zunächst übernehmen |
|
||
| `telemetry.toml` | Betriebsbeobachtung; Vorgaben zunächst übernehmen |
|
||
|
||
In `project.toml` die Null-Commit- und `CONFIGURE_ME`-Platzhalter ersetzen. Die
|
||
vollständige Vorlage mit Relations-, Enrichment- und Werkzeugregeln beibehalten;
|
||
die Projektdatei nicht auf DB-Adresse und Sourcepfad zusammenkürzen.
|
||
|
||
Für mehrere Datenbanken derselben MariaDB-Instanz kann in `project.toml` ein
|
||
zusätzlicher Abschnitt ergänzt werden:
|
||
|
||
```toml
|
||
[database.additional_databases]
|
||
cata_hotfixes = ["*"]
|
||
cata_locale = ["*"]
|
||
```
|
||
|
||
`[database].database` bleibt beispielsweise `cata_world`, `user` kann
|
||
`buganalysis` sein. Für den DB-Benutzer müssen entsprechende SELECT-Grants
|
||
vorliegen. `["*"]` erlaubt ausdrücklich alle sichtbaren Tabellen der jeweiligen
|
||
DB. Alternativ konkrete Tabellennamen auflisten. Nicht konfigurierte Datenbanken
|
||
bleiben gesperrt. Einzeldatenbank-Konfigurationen bleiben gültig.
|
||
Vollständige Mehrdatenbank-Vorlage:
|
||
[project.vcore-multidb.example.toml](config/project.vcore-multidb.example.toml).
|
||
|
||
Bei Verwendung der gelieferten Gemini-/DB-Vorlagen enthält `worker.env`:
|
||
|
||
```text
|
||
GEMINI_API_KEY="HIER_DEN_CLOUD_API_KEY_EINTRAGEN"
|
||
VIANO_DB_PASSWORD="HIER_DAS_DB_PASSWORT_EINTRAGEN"
|
||
```
|
||
|
||
Das sind Platzhalter, keine gültigen Zugangsdaten. Keine `export`-Anweisungen
|
||
verwenden. Die Datei wird durch systemd geladen und bleibt root-geschützt mit
|
||
Modus 0600. Secrets nicht ins Repository oder in Shell-Befehlsargumente schreiben.
|
||
|
||
**Wenn Integrationsschlüssel über die Weboberfläche verwaltet werden sollen:**
|
||
Den ausgelieferten `[[clients]]`-Beispielblock für `wow-capture-worker` vollständig
|
||
aus `api.toml` entfernen. Dazu gehören seine `id`-, `token_env`- und `projects`-
|
||
Zeilen. Die `[[projects]]`-Projektdefinition bleibt bestehen. `api.env` darf dann
|
||
zunächst nur Kommentare enthalten; ein `VBA_INTAKE_TOKEN` ist auf der
|
||
BugAnalysis-Seite nicht erforderlich. Andernfalls erwartet die Startprüfung für
|
||
den vorhandenen Beispielclient einen manuell konfigurierten Token in `api.env`.
|
||
|
||
Details: [Projektkonfiguration](docs/project-configuration.md),
|
||
[Modell-/Cachekonfiguration](docs/llm-context-caching.md) und
|
||
[Linux-Betrieb](docs/linux-deployment.md).
|
||
|
||
### 6. Persönliches Webkonto anlegen
|
||
|
||
`meinname` durch den gewünschten Benutzernamen ersetzen. Das Passwort wird
|
||
verdeckt abgefragt; es gehört nicht in die Befehlszeile.
|
||
|
||
```sh
|
||
sudo /opt/viano-bug-analysis/.venv/bin/python -m viano_bug_analysis.api create_user meinname --config /etc/viano-bug-analysis/api.toml --service-group buganalysis
|
||
```
|
||
|
||
Alle Webnutzer besitzen dieselben Bedienrechte. Nutzer werden ausschließlich per
|
||
privilegierter Konsole angelegt, geändert oder gelöscht; es gibt keine öffentliche
|
||
Registrierung. Weitere Befehle: [Benutzerkonten](docs/user-accounts.md).
|
||
|
||
### 7. Bereitschaft ohne Modellanfrage prüfen
|
||
|
||
Die Prüfungen laufen mit den Rechten und Environment-Dateien der späteren Dienste:
|
||
|
||
```sh
|
||
sudo systemd-run --wait --pipe --collect \
|
||
--property=User=buganalysis --property=Group=buganalysis \
|
||
--property=EnvironmentFile=/etc/viano-bug-analysis/api.env \
|
||
/opt/viano-bug-analysis/.venv/bin/python -m viano_bug_analysis.deployment check \
|
||
--role api --config /etc/viano-bug-analysis/api.toml
|
||
|
||
sudo systemd-run --wait --pipe --collect \
|
||
--property=User=buganalysis --property=Group=buganalysis \
|
||
--property=EnvironmentFile=/etc/viano-bug-analysis/worker.env \
|
||
--setenv=GIT_CONFIG_GLOBAL=/etc/viano-bug-analysis/gitconfig \
|
||
/opt/viano-bug-analysis/.venv/bin/python -m viano_bug_analysis.deployment check \
|
||
--role worker --config /etc/viano-bug-analysis/worker.toml
|
||
```
|
||
|
||
Erwartet wird jeweils `READY` mit `model_requests: 0`. Geprüft werden unter
|
||
anderem Speicher, Schreib-/Leserechte, Webnutzer, Konfiguration, Git-Stand und
|
||
DB-Schemata. Die Prüfung sendet keine kostenpflichtige Modellanfrage; sie bestätigt
|
||
deshalb nicht die Gültigkeit des Cloud-Keys oder die Modellverfügbarkeit.
|
||
Bei `NOT_READY` zunächst den gemeldeten Fehler beheben.
|
||
|
||
### 8. API starten und HTTPS einrichten
|
||
|
||
```sh
|
||
sudo systemd-analyze verify /etc/systemd/system/viano-bug-analysis-api.service /etc/systemd/system/viano-bug-analysis-worker.service
|
||
sudo systemctl enable --now viano-bug-analysis-api.service
|
||
curl --fail http://127.0.0.1:8080/healthz
|
||
```
|
||
|
||
Der Health-Aufruf auf dem VPS sollte `{"status":"OK"}` liefern. Die API bleibt
|
||
an Loopback gebunden. Für die öffentliche Webadresse eine Domain mit passendem
|
||
DNS-Eintrag und gültigem TLS-Zertifikat bereitstellen. Zertifikatsbeschaffung
|
||
und Firewallfreigaben an die vorhandene VPS-/Nginx-Einrichtung anpassen.
|
||
|
||
Auf Debian/Ubuntu kann eine eigene Nginx-Site aus der Vorlage angelegt werden:
|
||
|
||
```sh
|
||
sudo cp /etc/viano-bug-analysis/nginx.conf.example /etc/nginx/sites-available/viano-bug-analysis
|
||
sudoedit /etc/nginx/sites-available/viano-bug-analysis
|
||
sudo ln -s /etc/nginx/sites-available/viano-bug-analysis /etc/nginx/sites-enabled/viano-bug-analysis
|
||
sudo nginx -t
|
||
sudo systemctl enable --now nginx
|
||
sudo systemctl reload nginx
|
||
```
|
||
|
||
**Vor `nginx -t` alle Beispieldomains und Zertifikatpfade ersetzen; die Zertifikate
|
||
müssen bereits vorhanden sein.** Bei bereits vorhandener Site keinen zweiten
|
||
Symlink anlegen, sondern die bestehende Einrichtung prüfen. Andere VPS-Sites
|
||
nicht entfernen. Erst über die fertige HTTPS-Adresse öffentlich anmelden.
|
||
|
||
Für einen ersten lokalen Zugriff ohne fertige Domain ist ein SSH-Tunnel möglich.
|
||
Auf deinem eigenen Rechner ausführen, mit deinem SSH-Benutzer und VPS-Host:
|
||
|
||
```sh
|
||
ssh -L 8080:127.0.0.1:8080 benutzer@vps-host
|
||
```
|
||
|
||
Danach lokal `http://127.0.0.1:8080/` öffnen, während der Tunnel läuft. Der Port auf
|
||
dem eigenen Rechner muss frei sein. Für den regulären externen Erfassungsworker
|
||
weiterhin die öffentliche HTTPS-Adresse einrichten.
|
||
|
||
### 9. Erfassungsworker verbinden und Analysebetrieb einschalten
|
||
|
||
Auf der Weboberfläche mit deinem Konto anmelden. Unter **API-Schlüssel** einen
|
||
Schlüssel für den Erfassungsworker und das Projekt `viano-core` erstellen.
|
||
Den Schlüssel im Environment des **wowdiag-Workers** als `VBA_INTAKE_TOKEN`
|
||
hinterlegen. Dessen `[buganalysis]`-Abschnitt mit URL, Projekt und Profil einrichten
|
||
und bewusst aktivieren. Anleitung und Vorlagen:
|
||
[Erfassungsworker v0.4](deploy/capture-worker/README.md).
|
||
|
||
Der Erfassungsworker ist ein eigener Dienst auf dem Erfassungssystem. Er wird
|
||
nicht durch den BugAnalysis-Installer installiert oder gestartet. Die Datenbank-
|
||
Zugänge dieser beiden Programme sind ebenfalls voneinander unabhängig.
|
||
|
||
Anschließend den Analyseworker aktivieren:
|
||
|
||
```sh
|
||
sudo systemctl enable --now viano-bug-analysis-worker.service
|
||
sudo systemctl status viano-bug-analysis-api.service viano-bug-analysis-worker.service
|
||
```
|
||
|
||
**Ab diesem Zeitpunkt können vorhandene und neue Inbox-Aufträge kostenpflichtige
|
||
Modellaufrufe auslösen.** Mit einem kontrollierten echten Auftrag beginnen. In der
|
||
Weboberfläche Annahme und Fortschritt verfolgen, gegebenenfalls Testanfragen
|
||
beantworten und unter **Bearbeitete Fälle** das Ergebnis herunterladen.
|
||
Ergebnisse gehen in die Outbox, gescheiterte Analysen ins Review; blockierte Fälle
|
||
bleiben zur Fortsetzung erhalten. Ein Download bestätigt keine fachliche Übergabe.
|
||
|
||
### 10. Betrieb, Sicherung und Updates
|
||
|
||
```sh
|
||
sudo journalctl -u viano-bug-analysis-api -u viano-bug-analysis-worker -f
|
||
sudo systemctl stop viano-bug-analysis-worker.service
|
||
```
|
||
|
||
Der Worker beendet beim Stoppen den aktuellen Dispatch kontrolliert. Das kann
|
||
während einer laufenden Anfrage dauern. Vor Code-/Profiländerungen anhalten;
|
||
Konfigurationsbindungen laufender Fälle nicht beiläufig ändern.
|
||
|
||
Mindestens `/etc/viano-bug-analysis` und `/var/lib/viano-bug-analysis` gesichert
|
||
aufbewahren. Dazu zählen die Nutzer-SQLite sowie Integrationsschlüssel-SQLite und
|
||
deren separate Serverschlüsseldatei unter `runtime/integration-secrets`. Dieses
|
||
Verzeichnis ist kein beliebig löschbarer Cache. Für eine einfache konsistente
|
||
Dateisicherung beide Dienste anhalten. Zugriffe auf Backups mit Secrets schützen.
|
||
|
||
Für reguläre Codeupdates steht ein Update-Skript bereit:
|
||
|
||
```sh
|
||
sudo python3 /opt/viano-bug-analysis/deploy/update.py
|
||
```
|
||
|
||
Eine Vorschau ohne Netzwerkzugriff oder Änderungen ist mit `--dry-run` möglich.
|
||
Das Skript benötigt root und einen sauberen, root-eigenen Checkout mit Tracking-Branch.
|
||
Es holt den Remote-Stand, prüft Fast-forward, stoppt zuerst den Worker kontrolliert
|
||
und danach die API, installiert das aktualisierte Paket in die vorhandene venv
|
||
und startet nur die zuvor aktiven Dienste. Deren Startprüfungen testen die
|
||
Bereitschaft ohne LLM-Aufruf. Vorher inaktive Dienste werden nicht aktiviert.
|
||
Auch bei identischem Commit wird das Paket erneut installiert, etwa nach einem
|
||
vorherigen manuellen Pull. Parallele Updates sind gesperrt.
|
||
Konfigurationen, Zugangsdaten, Fallakten, Apache, Source-Checkout und Capture-Worker
|
||
werden nicht verändert. Das Skript erstellt keine Datensicherung und führt keine
|
||
projektspezifischen Migrationen aus.
|
||
|
||
Scheitert Installation oder Dienststart, bleiben beide Dienste gestoppt. Es gibt
|
||
keinen automatischen Rollback von Code oder Daten. Nach Behebung der Ursache das
|
||
Paket erneut installieren (auch mit diesem Skript möglich) und die gewünschten
|
||
Dienste ausdrücklich starten. Falls das Skript im bisherigen Checkout noch fehlt,
|
||
einmal vorab den folgenden Befehl ausführen und danach das Skript starten:
|
||
|
||
```sh
|
||
sudo git -C /opt/viano-bug-analysis pull --ff-only
|
||
```
|
||
|
||
Releasehinweise und geänderte Konfigurations-/Unit-Vorlagen vorher prüfen.
|
||
Das Updatebeispiel ersetzt keine gezielte Übernahme geänderter systemd-Units
|
||
mit anschließendem `systemctl daemon-reload`. Vorlagen werden vom Installer
|
||
absichtlich nicht über bestehende Konfigurationen kopiert.
|
||
|
||
Die Einrichtung ist abgeschlossen, wenn Anmeldung, automatischer Auftragseingang,
|
||
Analyse, Ergebnisdownload, menschliche Rückfrage und Wiederanlauf nach einem
|
||
Dienst-/Serverneustart geprüft wurden. Die native Linux-/HTTPS-Prüfung erfolgt auf
|
||
deinem Zielserver; lokale Windows-Entwicklungstests ersetzen sie nicht.
|
||
|
||
### Häufige Probleme bei der Ersteinrichtung
|
||
|
||
| Meldung / Verhalten | Zuerst prüfen |
|
||
| --- | --- |
|
||
| Installer verlangt root-eigenen Checkout | Pfad `/opt/viano-bug-analysis`, Eigentümer und Schreibrechte des Codes |
|
||
| `DEPLOY_MACHINE_CREDENTIALS` | Unbenutzten `[[clients]]`-Beispielblock entfernen oder dessen env-Token korrekt einrichten |
|
||
| `LLM_CREDENTIALS` | `worker.env`, Name der Schlüsselvariable in `llm.toml` und Laden der Datei durch systemd |
|
||
| `PROJECT_DATABASE_UNAVAILABLE` | DB-Adresse/Port, Netzwerkweg, Passwort und DB-Benutzer |
|
||
| Sourceprüfung schlägt fehl | Lokaler Checkout, tatsächlicher Commit, Leserechte und `/etc/viano-bug-analysis/gitconfig` |
|
||
| `nginx -t` meldet fehlendes Zertifikat | Zertifikat bereitstellen und die Beispielpfade im Site-Block ersetzen |
|
||
| Anmeldung funktioniert, aber kein Fall wird analysiert | Analyseworker läuft, Projektbindung stimmt, Auftrag ist tatsächlich angenommen |
|
||
|
||
Dienstfehler über `journalctl` prüfen. Ein fehlgeschlagener Start wird durch
|
||
systemd erneut versucht; nach einer Korrektur lässt sich der betreffende Dienst
|
||
mit `sudo systemctl restart DIENSTNAME` gezielt neu starten. Dabei den echten
|
||
Namen `viano-bug-analysis-api.service` beziehungsweise
|
||
`viano-bug-analysis-worker.service` einsetzen.
|
||
|
||
## Weiterführende Anleitungen
|
||
|
||
- [Verwendung und Funktionsweise](docs/user-guide.md) – auch im Webreiter Benutzeranleitung.
|
||
- [Projekt-, Source-, DB- und Modellkonfiguration](docs/project-configuration.md).
|
||
- [Übergabe-API und Rückgaben](docs/intake-api.md).
|
||
- [Analyseworker](docs/analysis-worker.md).
|
||
- [Benutzerkonten](docs/user-accounts.md).
|
||
- [Integrationsschlüssel](docs/integration-keys.md).
|
||
- [Linux-Betrieb im Detail](docs/linux-deployment.md).
|
||
|
||
## Entwicklung und technische Dokumentation
|
||
|
||
Project-independent foundations for reading, validating and extending ZIP case
|
||
packages. The authoritative design is [docs/architecture.md](docs/architecture.md).
|
||
The implemented v1 contract is documented in
|
||
[docs/package-format-v1.md](docs/package-format-v1.md).
|
||
Job state, checkpoints and inbox admission are documented in
|
||
[docs/lifecycle-v1.md](docs/lifecycle-v1.md).
|
||
Generic case construction and its input contracts are documented in
|
||
[docs/case-builder-v1.md](docs/case-builder-v1.md).
|
||
Vcore imports for wowdiag/wowsrc are documented in
|
||
[docs/vcore-adapters-v1.md](docs/vcore-adapters-v1.md).
|
||
Authenticated submission of new cases and completed-case feedback is documented in
|
||
[docs/intake-api.md](docs/intake-api.md). The HTTP API creates and queues packages;
|
||
external callers do not need to implement the internal package format.
|
||
The [continuous analysis worker](docs/analysis-worker.md) consumes that inbox,
|
||
routes cases to configured projects and resumes checkpointed analysis after restart.
|
||
The [web console](docs/web-console.md) shows active workers, case progress and token
|
||
charts, with corrections accounted for separately, and accepts new/return submissions.
|
||
The [Linux deployment guide](docs/linux-deployment.md) covers systemd services,
|
||
protected credentials, HTTPS and non-billable readiness checks.
|
||
The [integration key manager](docs/integration-keys.md) lets signed-in users
|
||
create, reveal and revoke project-scoped machine credentials.
|
||
The web tab **Benutzeranleitung** includes the [user guide](docs/user-guide.md)
|
||
and operator documentation, including project/source/database configuration.
|
||
After editing bundled documentation, run `python scripts/build_user_manual.py`.
|
||
|
||
Requires Python 3.11 or newer.
|
||
|
||
```powershell
|
||
python -m venv .venv
|
||
.\.venv\Scripts\python.exe -m pip install -e ".[test]"
|
||
.\.venv\Scripts\python.exe -m pytest
|
||
```
|
||
|
||
The lifecycle foundation supports one-pass inbox processing, resumable package
|
||
checkpoints and a deterministic generic CaseBuilder. An async LLM gateway and CaseInterpreter
|
||
provide interpretation and bounded initial hypothesis generation, with durable
|
||
per-hypothesis budget accounting. An LLM-driven investigation controller connects
|
||
read-only queries, durable evidence and asynchronous test handoffs. Final evaluation
|
||
produces traceable diagnoses or human review. Confirmed diagnoses can produce
|
||
policy-bound Change Requests, with final output validation and atomic local
|
||
outbox/review publication. Operational telemetry observes the APIs and continuous worker.
|
||
|
||
A bounded single-case command-line trial now connects import, analysis and local
|
||
delivery with telemetry: [first real LLM trial](docs/first-llm-trial.md).
|
||
Use `python -m viano_bug_analysis.trial --help`. Only its `run` command makes LLM
|
||
requests; `prepare` and `check` do not contact model services.
|
||
For a new revision, `run --planning-mode joint` opts into a single interpretation/
|
||
hypothesis call with independent block validation: [joint case planning](docs/joint-case-planning.md).
|
||
New joint revisions use [v2 source constraints and dependency-aware corrections](docs/joint-case-planning-v2.md); frozen v1 cases remain replayable.
|
||
|
||
The trial enables bounded, durable early model-output corrections with explicit
|
||
validation feedback: [early correction](docs/early-correction-v1.md), configured
|
||
through [correction.example.toml](config/correction.example.toml).
|
||
|
||
Expected-behavior resolution and the read-only provider contract: [expected-behavior-v1.md](docs/expected-behavior-v1.md).
|
||
|
||
Configurable LLM transport, failover and durable retries: [llm-gateway-v1.md](docs/llm-gateway-v1.md), with [example configuration](config/llm.example.toml).
|
||
|
||
Gemini stable case caching, implicit cache measurements and
|
||
separate token/storage cost accounting: [context caching](docs/llm-context-caching.md),
|
||
with [native Gemini example](config/llm.gemini-cache.example.toml).
|
||
Lossless stable/live partition, versioned aliases and offline measurements:
|
||
[stable case cache](docs/stable-case-cache-v1.md).
|
||
|
||
Causal evidence direction, auditable confidence calibration and current-head
|
||
validation performance: [confidence and local performance](docs/causal-confidence-and-local-performance.md).
|
||
|
||
The first domain LLM phase and its source-reference contracts: [case-interpretation-v1.md](docs/case-interpretation-v1.md).
|
||
|
||
Initial hypotheses, revision-wide creation limits and equal budget allocations: [hypothesis-builder-v1.md](docs/hypothesis-builder-v1.md), with [analysis configuration](config/analysis.example.toml).
|
||
|
||
Durable investigation budget accounting, configurable costs/rewards and stopping
|
||
rules: [budget-manager-v1.md](docs/budget-manager-v1.md), with [budget configuration](config/budget.example.toml).
|
||
|
||
Case-local asynchronous test requests, confirmed feedback and budget-preserving
|
||
event-driven resume: [async-tests-v1.md](docs/async-tests-v1.md). Human test requests
|
||
can be answered through the web console; external bot adapters are separate integrations.
|
||
|
||
Read-only packaged source/database queries and the strict tool allowlist:
|
||
[investigation-tools-v1.md](docs/investigation-tools-v1.md).
|
||
|
||
Shared read-only Git/source/schema and MariaDB research, deterministic case
|
||
enrichment, bounded investigation prompts and the isolated World test database:
|
||
[project-research-v1.md](docs/project-research-v1.md), with
|
||
[project configuration](config/project.example.toml).
|
||
|
||
Portable evidence records, provenance, case-wide IDs and novelty-aware budget
|
||
integration: [evidence-store-v1.md](docs/evidence-store-v1.md).
|
||
|
||
Resumable, bounded LLM investigation cycles and their controller contracts:
|
||
[investigation-loop-v1.md](docs/investigation-loop-v1.md), with
|
||
[investigation configuration](config/investigation.example.toml).
|
||
|
||
Final hypothesis evaluation, traceable diagnoses and controlled human review:
|
||
[diagnosis-builder-v1.md](docs/diagnosis-builder-v1.md), with
|
||
[diagnosis configuration](config/diagnosis.example.toml).
|
||
|
||
Policy-bound coding requests and validated, resumable local output delivery:
|
||
[change-request-v1.md](docs/change-request-v1.md), with
|
||
[change request configuration](config/change-request.example.toml).
|
||
|
||
Opt-in operational logs, safe error chains, metrics, heartbeat/progress and passive
|
||
queue diagnostics: [telemetry-v1.md](docs/telemetry-v1.md), with
|
||
[telemetry configuration](config/telemetry.example.toml).
|
||
|
||
Schlanke Untersuchungsstarts mit gemeinsamer Erstbewertung: [Ablauf und Konfiguration](docs/investigation-startup-batch-v1.md).
|