Zum Inhalt springen

Modul VII — Deployment & Integration

Modul VII ist das einzige Modul, das die Kundeninfrastruktur mutiert — jeder andere Teil des Produkts ist read-first. Es stellt Agenten und MCP-Server bereit, aktualisiert und stilllegt sie als deklarative, versionierte, reversible Operationen und deklariert die Konnektivität sowie die referenzierte Identität, die ein Agent nutzt, um eine Unternehmensressource zu erreichen. Da es handelt, ist seine Sicherheitslatte die höchste im Produkt, und die Live-Aktuierung wird hinter einer deny-closed Naht zurückgehalten, bis ein Operator sie explizit bereitstellt.

Der Lebenszyklus ist plan → apply → verify → retire und gleicht einen gewünschten Zustand gegen den realen ab. Die entscheidende Trennung ist deklarieren ≠ mutieren:

  • Das Deklarieren des gewünschten Zustands — eine Definition erstellen, aktualisieren, zurückrollen (auch über die Manage-as-Code-Ressource olivares_deployment) — ist reine Control-Plane-Sache und berührt niemals die Infrastruktur.
  • plan ist ein reiner Dry-run-Diff; verify prüft Drift und aktualisiert den Snapshot. Keines von beiden mutiert.
  • apply und retire sind die einzigen mutierenden Operationen. Sie sind zweiphasig und deny-by-default: Phase eins berechnet den Diff und fordert eine an den Plan-Hash gebundene menschliche Freigabe an, ohne etwas zu verändern; Phase zwei schreitet nur fort, wenn die Freigabe approved ist und der Plan-Hash weiterhin übereinstimmt — jeder andere Zustand (pending, expired, rejected, kein Gate, veralteter Plan) wird abgelehnt und protokolliert. Eine erneute Spezifikation ändert den Hash und macht die Freigabe ungültig (Anti-TOCTOU).

Mutierendes apply/retire ist standardmäßig nicht live. Die Aktuierungsnaht (Executor) ist deny-closed: Ohne bereitgestellten Executor scheitern apply/retire/plan/verify fail-closed mit einem 503 — die Control Plane kann den gewünschten Zustand deklarieren, aber nicht mit der realen Infrastruktur abgleichen. Eine reale Engine (Tofu/Terraform, GitOps, Kubernetes, Docker, Nomad, Crossplane) plus eine kurzlebige, pro Operation attestierte Credential-Quelle werden nur bei Operator-Konfiguration eingebunden; ohne diese handelt das Modul niemals stillschweigend.

Das Modul deklariert vier namespaced Entitäten plus das Kern-Deployment als angewandten Snapshot:

EntitätRolle
definitiongewünschter Zustand — gewünschte vs. angewandte Version, Spec-Hash, Verknüpfung zum Kern-Deployment
revisionappend-only, unveränderliche Spec-Historie — die reversible Quelle für Rollback
wiringdie erlaubte Konnektivität agent → resource, die es deklariert (der Vertrag, den Modul III gegenüberstellt)
operationappend-only Change-Management-Ledger — Version, Plan-Hash, wer freigegeben hat, Ergebnis

Die gewünschte Spec ist typisiert und aus dem Struct re-serialisiert (niemals ein Operator-JSON-Round-Trip): unbekannte Felder werden abgelehnt, ein Inline-Credential-Guard läuft, und eine Spec, die Credential-Material im Klartext trägt, wird bei der Deklaration abgelehnt. Credentials reisen nur per Referenz (<scheme>:<locator>, allow-listed Scheme) — eine Eigenschaft der Leitung, niemals ein gespeichertes Secret.

Was es auf dem Bus erzeugt (die PERMITTED-Seite von Modul III)

Abschnitt betitelt „Was es auf dem Bus erzeugt (die PERMITTED-Seite von Modul III)“

Modul VII schreibt niemals die Access Map; Modul III ist der einzige Schreiber ihrer Kanten. Bei einem committeten apply veröffentlicht das Modul für jede Wiring ein Policy-Grant-Event edge.observed (Source = policy), das nur Referenzen und den Modus trägt. Modul III gleicht es in die PERMITTED-Seite seines Permitted-vs-Observed-Diffs ab — sodass das, was dieses Modul deklariert, exakt das ist, was Modul III gegen seine Beobachtungen kontrastiert. Die Identität wird pro Agent über Governance gebunden: Eine feste, eindeutige Non-Human-Identität ergibt eine attributed-Kante; eine geteilte oder fehlende Identität wird als approximate gemeldet — gekennzeichnet, niemals vorgetäuscht.