docs: record v0.2.59 production acceptance [skip ci]
This commit is contained in:
@@ -38,6 +38,12 @@ isolated from the frontend and the Nexus domain model.
|
||||
>
|
||||
> **Structured operation results checkpoint (2026-07-31):**
|
||||
> [implementation and acceptance](docs/audits/2026-07-31/operation-results-deep-links/IMPLEMENTATION_AND_ACCEPTANCE.md).
|
||||
>
|
||||
> **Production release v0.2.59 (2026-07-31):**
|
||||
> [production validation, route matrix and next plan](docs/audits/2026-07-31/production-release-v0.2.59/PRODUCTION_VALIDATION_AND_NEXT_PLAN.md).
|
||||
> Gitea run 362 deployed commit `144edf58fe5928a3e04816f4435ea574d64211a1`;
|
||||
> PostgreSQL and the OpenClaw HTTP runtime are healthy. Productive Protocol-v4
|
||||
> management remains intentionally blocked by the external Client-ID gate.
|
||||
|
||||
> 📋 **Architektur-Review** (2026-06-22): Board-first Orchestrierung, sichere
|
||||
> Backend-Brücke und Gateway-Integration geprüft. Siehe
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Nexus Agent-First Mission Control
|
||||
|
||||
**Status:** Zielvertrag mit lokal umgesetztem Agent-first-/Performance-V2-Slice; Produktionswrites und Live-Lastnachweis offen
|
||||
**Stand:** 2026-07-30
|
||||
**Status:** Zielvertrag mit produktiv ausgeliefertem v0.2.59-Control-Plane-Slice; Gateway-Writes, credentialed Live-Abnahme und Lastnachweis offen
|
||||
**Stand:** 2026-07-31
|
||||
**Geltungsbereich:** Produkt, Frontend, Backend, Runtime-Adapter und Agenten-Schnittstellen
|
||||
|
||||
## Produktauftrag
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Nexus Mission Control Roadmap
|
||||
|
||||
**Status:** Kanonische Produkt- und Umsetzungsroadmap
|
||||
**Stand:** 2026-07-30
|
||||
**Stand:** 2026-07-31
|
||||
**Priorisierung:** Abhängigkeiten und Risikoreduktion statt willkürlicher
|
||||
Kalendertermine
|
||||
**Ziel:** Nexus ersetzt die OpenClaw-Oberfläche im täglichen Betrieb, nicht die
|
||||
@@ -65,7 +65,8 @@ bei Konflikten bleibt OpenClaw für Runtimezustand autoritativ.
|
||||
|
||||
Bereits vorhanden und weiterzuverwenden:
|
||||
|
||||
- Vue-/Pinia-Frontend mit 18 registrierten Routen und einheitlicher
|
||||
- Vue-/Pinia-Frontend mit 21 benannten Seiten (Login plus 20 authentifizierte
|
||||
Views) und einheitlicher
|
||||
Mission-Control-Designsprache
|
||||
- ASP.NET-Core-API, PostgreSQL, JWT-/Refresh-Session-Grundlage
|
||||
- `IAgentRuntime` mit `OpenClawRuntime` als einzig registriertem Runtime-Adapter
|
||||
@@ -110,10 +111,23 @@ Noch nicht ausreichend:
|
||||
- Security-, Audit-, E2E- und Eval-Gates reichen für eine produktive
|
||||
Agenten-Control-Plane noch nicht aus.
|
||||
|
||||
Die exakten Werte der Abschlussprüfung dieses Checkpoints werden erst nach dem
|
||||
vollständigen finalen Backend-, Frontend- und Browserlauf in
|
||||
[Attach & Adopt — Implementation and Acceptance](audits/2026-07-30/openclaw-attach-adopt/IMPLEMENTATION_AND_ACCEPTANCE.md)
|
||||
eingetragen.
|
||||
Produktionscheckpoint v0.2.59 vom 2026-07-31:
|
||||
|
||||
- Gitea Run 362 hat Commit
|
||||
`144edf58fe5928a3e04816f4435ea574d64211a1` mit grünen Backend-, Frontend-,
|
||||
Security- und Deploymentjobs ausgeliefert.
|
||||
- PostgreSQL und die HTTP-Runtime zu Baos OpenClaw sind auf Produktion stabil
|
||||
gesund. Docker-DNS verwendet `openclaw-gateway:18789`; der Release-Gate
|
||||
akzeptiert keinen `Degraded`-Healthstatus mehr.
|
||||
- 363 Backendtests und 25 Browsertests bestehen in CI. Fünf explizite
|
||||
Docker-/Toxiproxy-Integrationsfälle bleiben ohne CI-Opt-in sichtbar
|
||||
übersprungen.
|
||||
- Auth-Grenzen, SPA-Routing, Security-Header und der korrigierte Loginfehler
|
||||
sind live geprüft. Credentialed Owner-Flows, Gateway-Pairing,
|
||||
OpenClaw-Schreibvorgänge und der OpenAI-End-to-End-Run bleiben offen.
|
||||
|
||||
Die vollständige Evidenz und der daraus abgeleitete Plan stehen in
|
||||
[Production release v0.2.59](audits/2026-07-31/production-release-v0.2.59/PRODUCTION_VALIDATION_AND_NEXT_PLAN.md).
|
||||
|
||||
## 4. Prioritätsdefinition
|
||||
|
||||
@@ -455,7 +469,7 @@ Operationssystem.
|
||||
- Agentenqualitäts-SLOs, automatische Regressionserkennung und
|
||||
modellabhängige Routingoptimierung.
|
||||
|
||||
## 6. Auswirkungen auf die 18 bestehenden Seiten
|
||||
## 6. Auswirkungen auf die 18 bestehenden Seitenfamilien
|
||||
|
||||
| Route | Zielrolle | Verbindliche Verbesserungen | Meilenstein |
|
||||
|---|---|---|---|
|
||||
|
||||
+183
@@ -0,0 +1,183 @@
|
||||
# Nexus v0.2.59 — Produktionsabnahme und nächster Plan
|
||||
|
||||
**Datum:** 2026-07-31
|
||||
**Produktions-URL:** `https://nexus.noveria.net`
|
||||
**Release-Commit:** `144edf58fe5928a3e04816f4435ea574d64211a1`
|
||||
**Gitea-CI/CD:** `https://git.noveria.net/bao/nexus/actions/runs/362`
|
||||
**Scope:** Repository, Gitea-Pipeline, Nexus-Produktion und ausschließlich Baos
|
||||
OpenClaw-Topologie; keine Ressource von Maxi wurde aufgelistet oder geöffnet.
|
||||
|
||||
## Kurzurteil
|
||||
|
||||
Nexus v0.2.59 ist als Web-Anwendung und Nexus-Control-Plane sauber ausgeliefert:
|
||||
Commit- und Image-Provenienz stimmen überein, PostgreSQL und die HTTP-Runtime zu
|
||||
Baos OpenClaw sind stabil gesund, die Auth-Grenzen greifen und die kontrollierte
|
||||
Browser-Suite ist grün.
|
||||
|
||||
Nexus ist damit **noch nicht** als vollständiger Ersatz für OpenClaws UI
|
||||
abgenommen. Der entscheidende produktive Protocol-v4-Gateway-Pfad bleibt
|
||||
absichtlich gesperrt, solange OpenClaw keine offiziell unterstützte externe
|
||||
`nexus`- oder generische Operator-Client-ID anbietet. Echte Owner-Flows,
|
||||
Pairing, OpenClaw-Schreibvorgänge und ein vollständiger
|
||||
`Nexus -> OpenClaw -> OpenAI -> Nexus`-Run wurden ohne eine vom Owner
|
||||
bereitgestellte Sitzung beziehungsweise ohne erfülltes Identity-Gate nicht
|
||||
simuliert oder umgangen.
|
||||
|
||||
## Release- und Fehlerbehebung
|
||||
|
||||
| Commit | Ergebnis |
|
||||
|---|---|
|
||||
| `f5552218bc992a79cdd0e32dd30a57a785163f18` | Agent-first-/Performance-V2-Gesamtstand als v0.2.57 ausgeliefert |
|
||||
| `6f21d9ba97cac58f082bf422e3c81ef3f2aac9c6` | Login-Rate-Limit-Darstellung und SPA-Security-Header als v0.2.58 gehärtet |
|
||||
| `144edf58fe5928a3e04816f4435ea574d64211a1` | Produktions-Docker-DNS, Token-Fallback und semantisches Health-Gate als v0.2.59 korrigiert |
|
||||
|
||||
Die Live-Prüfung fand und behob drei reale Releaseprobleme:
|
||||
|
||||
1. Ein normaler ungültiger Login zeigte fälschlich einen Sperr-Countdown,
|
||||
obwohl noch vier Versuche übrig waren. Die UI zeigt den Countdown jetzt nur
|
||||
bei einer echten Sperre; ein Playwright-Regressionsfall deckt dies ab.
|
||||
2. Nginx vererbte Security-Header wegen eigener `add_header`-Direktiven nicht
|
||||
an `index.html`. HTML-Antworten liefern jetzt HSTS, CSP,
|
||||
`X-Content-Type-Options`, `X-Frame-Options`, Referrer- und
|
||||
Permissions-Policy.
|
||||
3. Nexus verwendete in Produktion `host.docker.internal:18789`, obwohl Baos
|
||||
OpenClaw im gemeinsamen Docker-Netz unter `openclaw-gateway:18789`
|
||||
erreichbar ist. Zusätzlich wertete das Deployment jedes HTTP 200 von
|
||||
`/health` als Erfolg, auch ein `Degraded`-Payload. Produktion verwendet nun
|
||||
Docker-DNS; Deployment und Rollback akzeptieren nur den obersten Status
|
||||
`Healthy`.
|
||||
|
||||
## Verifizierte Evidenz
|
||||
|
||||
| Ebene | Ergebnis |
|
||||
|---|---|
|
||||
| Lokales Backend | 368 Tests: 363 bestanden, 5 explizit Docker-gesteuert übersprungen |
|
||||
| Lokales Frontend | Typecheck grün; 12 Vitest-Dateien und 30 Tests grün; Produktions-Build mit 1.988 Modulen grün |
|
||||
| Lokales Playwright | 25/25 Tests grün, einschließlich Login-Regression, Deep Links, Owner-/Non-Owner-Grenzen, Query-Deduplizierung, SSE-Resync, Task-Board-Drag-and-drop, Done-Pagination und fünf Viewportbreiten |
|
||||
| Gitea Run 362 | Backend 40 s, Frontend 2:47 min, Security 3 s, Deployment 34 s; alle Jobs erfolgreich |
|
||||
| CI-Backend | 363 bestanden, 5 Docker-/Toxiproxy-Fälle mangels explizitem CI-Opt-in übersprungen; Build ohne Warnung oder Fehler |
|
||||
| CI-Browser | 25/25 bestanden in 1,3 min |
|
||||
| Provenienz | API- und Web-Image melden v0.2.59 und exakt `144edf58fe5928a3e04816f4435ea574d64211a1` |
|
||||
| Produktion Health | Drei aufeinanderfolgende Abrufe: Gesamt `Healthy`, PostgreSQL `Healthy`, Runtime `Online`, Detail `HTTP 200` |
|
||||
| Produktion Routing | `/`, `/login` und 15 geprüfte authentifizierte SPA-Pfade liefern HTTP 200; warme Antworten lagen im Einzelprobe-Fenster bei 49–67 ms |
|
||||
| Auth-Grenzen | Unauthentifizierte Operations-, OpenClaw-Overview- und Chat-Aufrufe liefern 401 mit `application/problem+json` |
|
||||
| Login live | Ungültige Dummy-Anmeldung liefert verständlichen Fehler, vier verbleibende Versuche, keinen falschen Countdown und einen weiterhin aktiven Login-Button |
|
||||
| Kleine Breite live | Login bei 693 px: `scrollWidth == clientWidth`, kein horizontaler Seiten-Overflow |
|
||||
|
||||
Die 5 Docker-/Toxiproxy-Integrationsfälle sind sowohl lokal als auch in Run 362
|
||||
sichtbar übersprungen. Sie werden nicht als bestanden gezählt. Die CI-Variable
|
||||
für den separaten Docker-Integrationstestjob war nicht aktiviert.
|
||||
|
||||
## Seiten- und Funktionsmatrix
|
||||
|
||||
`Live` bedeutet auf Produktion direkt belegt. `E2E` bedeutet mit kontrollierten,
|
||||
typisierten Repository-Fixtures im Browser belegt. Ein grüner E2E-Fall ist kein
|
||||
Ersatz für einen echten OpenClaw-Schreibtest.
|
||||
|
||||
| Seite/Familie | Was belegt ist | Was noch nicht live belegt oder fehlt |
|
||||
|---|---|---|
|
||||
| `/login` | Live: Auslieferung, Semantik, ungültiger Login, Versuche, kein falscher Lock, Security-Header, kein Overflow | Gültige Owner-Anmeldung, Session-Refresh, Logout und Recovery live; 2FA/Passkeys fehlen |
|
||||
| `/dashboard` | E2E: Orchestrierungsansicht, Task-Deep-Link, ein deduplizierter Overview-Request, owner-only Iris | Credentialed Live-Daten, echter Iris-Chat, Queue/Usage/Recovery gegen OpenClaw |
|
||||
| `/agents` und `/agents/:id` | E2E/Contracts: Live-Query-Modell, Detail, Standarddateien, Workspace-Provenienz | Echte Gateway-Inventur, Datei-Read-back und Lifecycle-Aktionen live |
|
||||
| `/agents/new` und Proposal-Detail | E2E: manueller/Iris-Proposal-Flow, Owner-Freigabe, Non-Owner-Denial, Zustandsmaschine | Produktive Provisionierung bleibt am External-Client-ID-Gate blockiert; kein Live-Testagent erzeugt |
|
||||
| `/projects` und `/projects/:id` | E2E: Project-Deep-Link sowie verknüpfte Tasks, Agenten und Runs | Live-Delegation, Budgets, KPIs, Automationen und Artifact-Flow |
|
||||
| `/tasks` und `/tasks/:id` | E2E: ein Initialquery, sichtbare Daten beim Refresh, SSE-Lücke mit genau einem Resync, DnD-Persistenz, Done-Cursor, fünf Breiten | Kein produktiver Owner-Datensatz und kein 1.000/10.000-Lastnachweis; Bulk/Dependencies/Run-Recovery unvollständig |
|
||||
| `/runs` und `/runs/:id` | E2E/Backend: persist-before-dispatch, Detail, exakter Stop, korrelierter Retry, Transitionen und Links | Echter OpenClaw-/OpenAI-Run, Tools, Usage, Artifacts, Hierarchie und sichere Resume-Strategie |
|
||||
| `/calendar` | Backend/E2E: typisierte Cron-Verträge und geroutete Oberfläche | Kein Live-CRUD an benanntem Wegwerfjob; Templates, Missed-run-/Retry-Policy und Delivery-Härtung offen |
|
||||
| `/memory`, `/docs`, `/incidents` | E2E/Contracts: confined Read-Pfade, Quellagent-/Pfadprovenienz und Detaildarstellung | Credentialed Live-Inhalt; sichere Write-/Ingestion-/Versionierungs- und Incident-Aktionsflows fehlen |
|
||||
| `/models` | E2E/Contracts: bereinigter `models.authStatus` und ehrliche Unknown-Zustände | OpenAI-Primärprovider, Allowlist/Fallback/Budget und echter Modelltest über OpenClaw nicht belegt |
|
||||
| `/activity` und `/notifications` | E2E: Ergebnisnavigation direkt zum betroffenen Task und globale Entity-Refs | Operative Ack/Snooze-/Approval-/Incident-Aktionen, Export und Retention unvollständig |
|
||||
| `/security` | E2E/Contracts: Identity-, Scope-, Capability- und Trust-Grenzen als Oberfläche | Reales Pairing, Scope-Upgrade, Remediation, Rotation und Session-Audit live |
|
||||
| `/settings` | E2E/Backend: Attach-&-Adopt-Zustandsmodell, Setup-/Config-/Wizard-Verträge | Credentialed First-run gegen Bao, offizielle externe Client-ID und produktives Management-Gate |
|
||||
|
||||
Der Router enthält aktuell 21 benannte Seiten: Login und 20 authentifizierte
|
||||
Views einschließlich Agent-Proposal-, Project-, Task- und Run-Details. Die
|
||||
CI-Suite öffnet alle 20 authentifizierten Core-Deep-Links und prüft die
|
||||
Seitenhülle zusätzlich bei 375, 768, 1024, 1440 und 1920 px.
|
||||
|
||||
## Was jetzt funktioniert
|
||||
|
||||
- reproduzierbares Gitea-CI/CD mit Commit-/Versions-Provenienz;
|
||||
- TLS-Auslieferung, SPA-Routing, Security-Header und Auth-by-default-Grenzen;
|
||||
- PostgreSQL und OpenClaw-HTTP-Erreichbarkeit über die reale
|
||||
Produktions-Docker-Topologie;
|
||||
- ein gemeinsamer OpenAPI-Vertrag, Query-Cache, Domain-Event-/SSE-Modell und
|
||||
strukturierte Ergebnisnavigation;
|
||||
- kontrollierte Browserflows für Agent-Proposals, Projekte, Tasks, Runs,
|
||||
Result-Deep-Links, Rollenbegrenzung und Task-Board-Live-Deltas;
|
||||
- ein Deployment-Gate, das eine degradierte Runtime nicht mehr als erfolgreichen
|
||||
Release akzeptiert.
|
||||
|
||||
## Was nicht funktioniert oder nicht bewiesen ist
|
||||
|
||||
- Der produktive Protocol-v4-Gateway-Connector darf noch nicht verbinden oder
|
||||
schreiben, weil OpenClaw 2026.7.1 keine offiziell unterstützte externe
|
||||
Nexus-Identität besitzt. Dies ist eine bewusste Sicherheitsgrenze.
|
||||
- Ohne eine vom Owner hergestellte Browser-Sitzung wurden die authentifizierten
|
||||
Produktionsseiten nicht mit realen Daten bedient.
|
||||
- Kein realer Agent wurde aus Nexus oder durch Iris provisioniert; kein
|
||||
Agent-Markdown, Configwert oder Cronjob wurde produktiv verändert.
|
||||
- Der Pfad `Nexus -> OpenClaw -> OpenAI -> Nexus` ist noch nicht als
|
||||
wiederholbarer, auditierter Produktionslauf bewiesen.
|
||||
- Die fünf PostgreSQL-/Toxiproxy-Integrationsfälle und die geplanten k6-,
|
||||
SQL-Plan- und Promptfoo-Gates liefen in diesem Release nicht.
|
||||
- Die CI-Browserlogs enthalten erwartbare Vite-Proxy-Fehler für
|
||||
`/api/v1/telemetry/browser`, weil der Fixture-Webserver keinen echten API-Port
|
||||
8080 startet. Die Tests sind grün; das Rauschen sollte separat entfernt
|
||||
werden, damit echte Browserfehler wieder auffallen.
|
||||
|
||||
## Priorisierter nächster Plan
|
||||
|
||||
### P0 — echter agent-first Primärpfad
|
||||
|
||||
1. Eine offiziell unterstützte externe `nexus`- oder generische
|
||||
Operator-Client-ID upstream erhalten, die erste unterstützende stabile
|
||||
OpenClaw-Version pinnen und den Compatibility-Contract ausführen.
|
||||
2. Mit Bao als Owner read-only pairen; erwartete 9 Agenten und 7 Cronjobs über
|
||||
RPC inventarisieren und die UI auf Dashboard, Agents, Calendar, Models,
|
||||
Security und Settings credentialed-live prüfen.
|
||||
3. Den separaten `operator.admin`-Upgrade mit Endpoint-/Device-/Scope-/
|
||||
Capability-Nachweis durchführen. Keine reservierte interne Identity
|
||||
imitieren.
|
||||
4. Einen klar benannten Wegwerfagenten über manuellen und Iris-Proposal-Pfad
|
||||
abnehmen: Approval, genau ein `agents.create`, Datei-Read-back, `partial`/
|
||||
`in_doubt`-Negativfall und Audit. Maxis Bereiche bleiben ausgeschlossen.
|
||||
5. Einen benannten Wegwerf-Cron vollständig Create -> Edit -> Run -> History ->
|
||||
Disable -> Delete prüfen und danach einen korrelierten
|
||||
`Nexus -> OpenClaw -> OpenAI -> Nexus`-Run mit Reload-Recovery, Stop/Retry
|
||||
und Audit beweisen.
|
||||
|
||||
### P1 — Performance und tägliche Bedienparität
|
||||
|
||||
1. Die fünf Docker-/Toxiproxy-Tests in einem isolierten, rücksetzbaren CI-Profil
|
||||
aktivieren und als eigenen Pflichtnachweis archivieren.
|
||||
2. Das Task Board mit 1.000 Tasks und 10.000 Activities messen: k6-p95,
|
||||
SQL-Anzahl, `EXPLAIN (ANALYZE, BUFFERS)`, Payloadgröße und wiederholtes
|
||||
Navigation-bis-Karten-sichtbar. Erst danach Virtualisierung entscheiden.
|
||||
3. Run Explorer um Hierarchie, Tools, Approvals, Artifacts, Usage/Kosten und
|
||||
belastbare Resume-/Replacement-Semantik erweitern.
|
||||
4. Agent-, Tool-, Model- und Approval-Lifecycle sowie actionable Incidents und
|
||||
Notifications schließen; Memory/Docs nur mit Provenienz, Versionierung,
|
||||
Retention und Retrieval-Evals schreibbar machen.
|
||||
5. Eine echte `/health/ready`-Semantik mit HTTP 503 für degradierte Pflichtteile
|
||||
ergänzen; `/health/live` bleibt reiner Prozess-Livenesscheck.
|
||||
|
||||
### P2 — Release- und Testhygiene
|
||||
|
||||
1. Browsertelemetrie im Fixture-Profil explizit deaktivieren oder mocken, damit
|
||||
CI keine erwartbaren `ECONNREFUSED`-Zeilen erzeugt.
|
||||
2. `.NET 10` per `global.json` pinnen und `VERSION`, Frontend-Paketversion und
|
||||
Release-/Tag-Strategie vereinheitlichen.
|
||||
3. Docker-Compose-/Rollback-Topologie als sanitisiertes Betriebsrunbook
|
||||
dokumentieren und einen Restore-/Game-day-Nachweis ausführen.
|
||||
4. Vollständige Keyboard-/Accessibility-Gates sowie operative
|
||||
Browser-Abnahmen mit einem eigenen nicht-produktiven Owner-Testkonto
|
||||
automatisieren.
|
||||
|
||||
## Freigabegrenze
|
||||
|
||||
v0.2.59 ist der belegte Produktionsstand für Auslieferung, Auth-Grenzen,
|
||||
Nexus-Domänenlogik und OpenClaw-HTTP-Reachability. Das Produktversprechen
|
||||
„kein täglicher Wechsel zu OpenClaw nötig“ bleibt offen, bis die P0-Schritte mit
|
||||
einer offiziell unterstützten Gateway-Identität und echten, klar begrenzten
|
||||
Liveobjekten abgeschlossen sind.
|
||||
Reference in New Issue
Block a user