Explorer
/tmp/restic-stage/reports-reference/commander-next-migrationsbericht.md
← Zurück ↓ Download
# Commander Next – Migrationsbericht

**Prüf-/Migrationszeitraum:** 2026-07-16 UTC  
**Ziel:** kontrollierte Übernahme kompatibler Commander-Alt-Daten nach Commander Next  
**Sicherheitsgrenze:** Keine produktive Umschaltung, keine öffentliche Route, kein Nginx-Reload, keine Änderung an Alt-Commander, Carlo oder Messaging.

> **Secret-Schutz:** Dieser Bericht enthält keine API-Schlüssel, Tokens, Passwörter, Authentifizierungsinhalte oder Secretwerte. Secret-nahe Inhalte werden nur als vorhanden/nicht vorhanden und über Dateirechte beschrieben. Die finalen SHA256-Werte der beiden Berichte werden extern ausgegeben, weil ein Bericht keine nichtrekursive Selbstreferenz enthalten kann.

## 1. Systeme und Pfade

| Bestand | Installation | Daten/Home | Benutzer | Version/Format |
|---|---|---|---|---|
| Commander Alt | `/opt/hermes-root` | `/root/.hermes` | `root:root` | Hermes-Config-Version 24; State-Schema 16 |
| Commander Next | `/opt/hermes-commander-next` | `/opt/hermes-commander-next-data` | `hermes-commander:hermes-commander` | Hermes Agent v0.18.2; Release v2026.7.7.2; Config-Version 33; State-Schema 19 |

Next-Dienste:
- `hermes-commander-next.service`
- `hermes-commander-next-dashboard.service`
- Dashboard: `127.0.0.1:9129`

Alt-Dienste:
- `hermes-root.service`
- `hermes-root-dashboard.service`

## 2. Vollständige Inventur

### 2.1 Umfang und Kategorien

| Kategorie | Alt | Next vor Migration | Ergebnis/Methode |
|---|---:|---:|---|
| Dateien gesamt | 1.108 | 659 | keine Komplettkopie |
| Bytes gesamt | 160.365.870 | 48.313.991 | nur freigegebene Bestände |
| `SKILL.md` | 86 erkannt / 482 Skill-Bestand-Dateien | 86 erkannt / 485 Bestand-Dateien | bereits byteidentisch; 0 erneut kopiert |
| Built-in Memory-Dateien | 2 nichtleer | 0 | `MEMORY.md` und `USER.md` direkt kompatibel übernommen |
| State-Sessions | 26 | 15 | 26 kontrolliert gemerged |
| State-Nachrichten | 4.350 | 34 | 4.350 kontrolliert gemerged |
| MCP-Server | 0 | 0 | nicht übernommen |

Die größeren Dateibestände enthalten bei Alt insbesondere Logs, Cache, LSP, SQLite-WAL/SHM, Locks, PID-Dateien, Backups und Laufzeitdaten. Diese wurden nicht in die laufende Next-Konfiguration kopiert.

### 2.2 Konfiguration und Provider

- Alt: `/root/.hermes/config.yaml`, 2.042 Bytes, `root:root`, `0600`, Config-Version `24`.
- Next: `/opt/hermes-commander-next-data/config.yaml`, vor Migration 1.851 Bytes, `hermes-commander:hermes-commander`, `0600`, Config-Version `33`.
- Provider/Modell in beiden aktiven Hauptkonfigurationen: `openai-codex` / `gpt-5.4-mini`.
- Alt enthielt zusätzlich OpenRouter-/YOLO-/Root-CWD-Variablen. Diese wurden nicht übernommen.
- `auth.json` war in beiden Homes vorhanden, `0600`; Inhalte wurden nicht ausgegeben oder kopiert.
- `.env` wurde nicht von Alt nach Next kopiert. Next behält nur seine bereits vorhandene Dashboard-Authentifizierung und die vorhandene Codex-Authentifizierung.

Über offizielle Befehle übernommen/gesetzt:
- `config set memory.memory_enabled true`
- `config set memory.user_profile_enabled true`
- `config set memory.memory_char_limit 2200`
- `config set memory.user_char_limit 1375`
- `config set display.language de`
- `config set display.show_reasoning true`
- `config set display.streaming true`

Nicht übernommen wurden Alt-Werte für Root-CWD, OpenRouter-Fallback/Delegation, YOLO-Modus, Messaging und externe Memory-Provider.

### 2.3 Skills

- Herkunft: `/root/.hermes/skills`
- Ziel: `/opt/hermes-commander-next-data/skills`
- Vorher/Nachher-Vergleich: Alt `86`, Next `86` `SKILL.md`.
- Hashvergleich: `ONLY_ALT=0`, `ONLY_NEXT=0`, `MISMATCH=0`.
- Next erkannte `13` lokale Skills, `0` Hub-installed und `0` Builtin-Skills; `13` aktiviert.
- Es war keine erneute Skill-Kopie erforderlich; der Bestand war bereits aus Alt vorhanden und byteidentisch.
- Aktive Skills wurden nicht überschrieben.

### 2.4 Memories

- Alt: `/root/.hermes/memories/MEMORY.md` (574 Bytes, 3 Zeilen, `0600`, root), `USER.md` (384 Bytes, 3 Zeilen, `0600`, root); jeweils nichtleer und lesbar.
- Nicht übernommen: `*.lock`.
- Next vor Migration: keine eigentlichen Memory-Dateien.
- Next nach Migration: `/opt/hermes-commander-next-data/memories/MEMORY.md` und `USER.md`, jeweils `0600`, Besitzer `hermes-commander:hermes-commander`, nichtleer.
- SHA256 der migrierten Memory-Dateien: nur als technische Identität im Prüfprotokoll erfasst, nicht als Secret.
- Externer Memory-Provider: keiner; Hermes meldet Built-in Memory „always active“.

### 2.5 Sessions und Metadaten

- Alt: 26 Sessions, 4.350 Nachrichten, State-Schema 16.
- Next vor Migration: 15 Sessions, 34 Nachrichten, State-Schema 19.
- Next nach Migration und dem Hauptprüfstand: 52 Sessions, 4.406 Nachrichten.
- Danach erzeugte die zusätzliche inhaltliche Kontext-Resume-Prüfung eine weitere CLI-Session; finaler Stand bei Berichtabschluss: 53 Sessions, 4.411 Nachrichten.
- Migriert: 26 Sessions / 4.350 Nachrichten.
- Übersprungen: 0.
- Session-ID-Konflikte: 0.
- Titelkonflikte: 0.
- Die offizielle Hermes-Funktion `sessions export --format jsonl --redact --yes` wurde erfolgreich ausgeführt: 26 redigierte JSONL-Zeilen im Backup.
- Ein offizieller Session-Import ist in `hermes sessions --help` nicht vorhanden. Deshalb wurde nach Schema-Prüfung ein transaktionaler, kontrollierter DB-Merge verwendet.
- Gemeinsame Session-Felder wurden übernommen; Next-v0.18.2-Zusatzfelder blieben auf Defaults.
- Message-IDs wurden nicht übernommen, sondern von Next neu vergeben; dadurch keine ID-Kollision.
- Alle alten/root-spezifischen CWDs wurden explizit auf `/opt/hermes-commander-next-data/test-workspace` gemappt.
- Drei Sessions wurden mit Metadaten, Verlauf und tatsächlicher Nachrichtenanzahl validiert:
  - `20260624_131719_6fadbe`: 22/22 Nachrichten, Titel `00_Commander_Systemstatus`.
  - `20260625_193502_a3f5b8`: 158/158 Nachrichten, Titel `00_Commander_Wissensbasis`.
  - `20260715_150725_d3f3c7`: 119/119 Nachrichten, Titel `Hermes-Carlo-Container Diagnose #3`, `openai-codex` / `gpt-5.4-mini`.
- Echter Kontext-Resume: `hermes --resume 20260715_150725_d3f3c7 ...` lieferte nach Neustarts `0.144.4`, eine Information aus dem übernommenen Alt-Verlauf. Exit `0`.
- Hermes legt bei CLI-Resume eine neue Antwort-Session an; die ursprüngliche Session bleibt unverändert erhalten.

Providerverteilung der Alt-Sessions:
- `openrouter`: 12 Sessions; wegen bewusst nicht übernommener OpenRouter-Secrets nicht ohne weitere Freigabe ausführbar.
- `openai-codex`: 9 Sessions; funktional geprüft.
- kein Provider in Metadaten: 5 Sessions; historische Metadaten unvollständig.

### 2.6 MCP, Tools, Gateway, Messaging und Automationen

- MCP: Alt und Next melden jeweils „No MCP servers configured“; keine Migration.
- Tool-Konfiguration: Alt hatte `toolsets: [hermes-cli]`; Next behielt seine isolierte v0.18.2-Auswahl `[terminal, file, skills, todo, session_search]`. Kein Root-CWD und keine Alt-Toolbreite wurden blind übernommen.
- Tool-Funktionstest: Skill-Laden und Terminal-/Dateiumgebung waren erfolgreich; der Agent antwortete `SKILL_MIGRATION_OK`.
- Gateway-Dateien, PID, Locks, Logs, Cron-Locks, Cache und Runtime-Zustände wurden nicht migriert.
- Messaging-/Allowlists: nicht aktiviert und nicht übernommen.
- Cron-/Automationsdaten: nicht übernommen; bestehende Next-Isolation blieb erhalten.
- Systemprompt: Die in den migrierten Sessionzeilen enthaltenen Systemprompt-Felder wurden schema-kompatibel übernommen. `SOUL.md` war in Next bereits vorhanden; keine blinde Kopie.
- Profile: keine separate aktive Profilmigration nachgewiesen; Next bleibt im eigenen Daten-Home.

## 3. Backup

Vor der Migration erstellt:

`/opt/backups/hermes-commander-next-before-migration-20260716-084705/`

Enthalten:
- vollständige Kopie `/root/.hermes` als `alt-hermes/`
- vollständige Kopie `/opt/hermes-commander-next-data` als `next-data/`
- Next-Units
- `/opt/hermes-commander-next/bin/hermes-systemd-planned-stop`
- konsistente SQLite-Kopien von Alt und Next
- redigierter offizieller Alt-Sessionexport
- Vor-Migrations-Konfigurationskopie und Session-Merge-Proof
- `SHA256SUMS`
- `FILELIST-OWNER-MODE-SIZE.json`

Finale Backupprüfung:
- 1.781 Dateien
- 282.668.566 Bytes
- SHA256 `SHA256SUMS`: `0fe67c72dda869ac82c79efca09d49324685bde0e724cf6f1a8c299a70ed9a3f`
- SHA256 Datei-/Owner-/Modusliste: `b8e52f289d763d50b894203604df185b2576dd9d6d527be77f1bf21a856d9f19`
- `sha256sum -c SHA256SUMS`: Exit `0`
- Stichproben: Configs, Memory, Units, Helper und beide konsistenten SQLite-Kopien tatsächlich gelesen; SQLite-Integrität jeweils `ok`.

## 4. Migrationsmethode und Rechte

Nicht durchgeführt wurde eine Komplettkopie von `/root/.hermes`.

Direkt übernommen:
- zwei Built-in-Memory-Dateien
- 26 Sessiondatensätze und 4.350 kompatible Nachrichten nach transaktionalem Schema-Merge

Nicht übernommen:
- PID-/Lock-Dateien
- alte Logs
- Caches
- WAL-/SHM-Laufzeitreste als aktive Next-Daten
- Root-Rechte und Root-CWDs
- alte `.env`-Provider-Secrets
- historische Gateway-/Cron-Zustände
- Messaging und Allowlists
- externe Memory-Provider

Nach Migration:
- Benutzer/Gruppe migrierter Memory- und State-Dateien: `hermes-commander:hermes-commander`
- Memory-Dateien: `0600`
- State-DB: `0600`
- Memory- und Session-Verzeichnisse: `0700`
- keine vorhandenen Dateien stillschweigend überschrieben; Konfigurations-Diff und Backup vorhanden.

## 5. Konfigurations- und Funktionstests

| Test | Ergebnis |
|---|---|
| `hermes config migrate` nach Migration | Exit `0` |
| `hermes config check` nach Migration | Exit `0`, Version 33 |
| final `config migrate` nach Neustarts | Exit `0` |
| final `config check` nach Neustarts | Exit `0` |
| exakter Agententest `MIGRATION_AGENT_OK` | Exit `0`, 7.342 ms, stdout exakt Marker, stderr leer |
| Skilltest `SKILL_MIGRATION_OK` | Exit `0` |
| Dashboard `/` | HTTP 200 |
| Dashboard `/health` | HTTP 200 |
| Dashboard `/openapi.json` | HTTP 200 |
| Memorytest vor Neustarts | Exit `0`, `MEMORY_MIGRATION_OK` |
| Memorytest nach Neustarts | Exit `0`, `MEMORY_POST_RESTART_OK` |
| Resume nach Neustarts | Exit `0`, Kontextantwort `0.144.4` |
| neue Next-Session | Exit `0`, `MIGRATION_NEW_SESSION_OK` |
| FTS/Trigram-Index | 4.406/4.406, Integrität `ok` |

Provider/Modell des funktional geprüften Next-Agenten: `openai-codex` / `gpt-5.4-mini`.

## 6. Stop-/Start- und Restarttests

Zwei vollständige Stop-/Start-Zyklen für beide Next-Dienste:

- Zyklus 1: Gateway Stop `0`/371 ms, Dashboard Stop `0`/210 ms; beide `Result=success`, `ExecMainStatus=0`, CGroup/Prozessbestand leer, Port frei; Start `0`, Health 200, Agent `MIG_CYCLE_1_OK` Exit 0.
- Zyklus 2: Gateway Stop `0`/373 ms, Dashboard Stop `0`/168 ms; beide `Result=success`, `ExecMainStatus=0`, CGroup/Prozessbestand leer, Port frei; Start `0`, Health 200, Agent `MIG_CYCLE_2_OK` Exit 0.

Zwei vollständige Restart-Zyklen:

- Restart 1: Dashboard/Gateway Exit `0`, 557 ms, beide active, Health 200, Agent `MIG_RESTART_1_OK` Exit 0, `NRestarts=0`, Gateway `Result=success`, `ExecMainStatus=0`.
- Restart 2: Dashboard/Gateway Exit `0`, 581 ms, beide active, Health 200, Agent `MIG_RESTART_2_OK` Exit 0, `NRestarts=0`, Gateway `Result=success`, `ExecMainStatus=0`.

In den geprüften Journals keine Timeout-, SIGKILL-, `status=1/FAILURE`-, Permission- oder Datenbankfehler.

## 7. Alt-Commander, Carlo und Nginx

Keine Alt-/Carlo-/Nginx-Aktion wurde ausgeführt. Nach der Migration:

- `hermes-root.service`: active/running, `Result=success`, `ExecMainStatus=0`, `NRestarts=0`.
- `hermes-root-dashboard.service`: active/running, `Result=success`, `ExecMainStatus=0`, `NRestarts=0`.
- Carlo `hermes-carlo`: running.
- Carlo-Image: `hermes-carlo:bak-pre-chathdr-20260607-215006`.
- Carlo-Portbindungen unverändert: `127.0.0.1:3010 -> 3000/tcp`, `127.0.0.1:3014 -> 9119/tcp`.
- Alt-Unit-SHA256 unverändert: `hermes-root.service` `9bcd026103e3109d7a5a06864d9013364728eebc973df14145414fa38f8f6289`; Dashboard `dbd11c990f77c838140357f98afd56bc2eb3285bd862ac82786a8d03c15c960f`.
- Alt-Nginx-Vhost `hermes-root.agentsolutions-mallorca.com`: `b9e87c554c14c226d9b87d27d573a41d4b1bf064baf974ba3f7a1bc225b30f34`.
- Kein Nginx-Reload und keine öffentliche Next-Route.

## 8. Sicherheits- und Updatebewertung

**Sicherheitsbewertung:** Die Migration war restriktiv: keine Secrets im Bericht, keine Alt-Secrets kopiert, keine Root-Rechte in Next, Memory/State restriktiv geschützt, keine Messaging-Aktivierung, keine öffentliche Route. Die migrierten historischen Sessions enthalten jedoch historische Provider-/Toolinhalte und sind als sensible Benutzerdaten zu behandeln.

**Updatebewertung:** Next bleibt auf Hermes v0.18.2 / Release v2026.7.7.2. `config migrate` und `config check` sind erfolgreich. Ein späteres Update muss erneut mit Backup, Config-Migration, DB-Integritätsprüfung, Agent-, Skill-, Resume-, Stop-/Start- und Rollbacktests erfolgen. Die 12 OpenRouter-Sessions dürfen erst nach separater Credential-Freigabe operativ wiederaufgenommen werden.

## 9. Rollbackplan

1. Nur Commander Next stoppen: `hermes-commander-next.service` und `hermes-commander-next-dashboard.service`.
2. Vor-Migrations-Next-Daten aus `next-data/` bzw. konsistenter `next-state-premerge-consistent.db` wiederherstellen.
3. Migrierte Memory-Dateien und die geänderte Config anhand des Backups zurücksetzen.
4. Besitzer/Rechte auf `hermes-commander:hermes-commander`, Secrets `0600`, private Verzeichnisse `0700` setzen.
5. `config check` ausführen; danach ausschließlich Next starten und Health/Agent/Journal prüfen.
6. Alt-Commander, Carlo und Nginx bleiben während des Rollbacks unverändert.

## 10. Abschlussentscheidung

# B – Kernmigration erfolgreich; klar benannte Restdaten/Funktionen fehlen noch.

Commander Next ist technisch stabil und für eine spätere kontrollierte Umschaltung vorbereitet, aber noch nicht vollständig funktionsgleich für alle historischen Sessions:

- 12 Alt-Sessions referenzieren OpenRouter/Nemotron; kein OpenRouter-Secret wurde aus Sicherheitsgründen übernommen.
- 5 Alt-Sessions haben keinen Billing-Provider in ihren Metadaten.
- Die Sessions sind vorhanden, lesbar und nicht beschädigt; eine vollständige operative Wiederaufnahme dieser Providerhistorien erfordert einen separaten, ausdrücklich freigegebenen Provider-/Credential-Auftrag.

Es wurde nicht umgeschaltet. Boot-Autostart, öffentliche Route, Nginx-Reload, Alt-Stop und Carlo-Änderungen bleiben offen und wurden nicht ausgeführt.

## 11. Berichtspfade

Vorgesehene Dateien:

- `K:\Espresso\10_SYSTEM\Hermes\Commander-Next-Migrationsbericht.md`
- `/opt/struktur/reports/commander-next-migrationsbericht.md`

Beide Zielpfade waren vor Erstellung nicht vorhanden. Größe, Änderungszeit und SHA256 werden nach dem Schreiben separat verifiziert und extern ausgegeben; der Bericht enthält keine rekursive Selbstreferenz.