Acht Tests, die Sie selbst durchführen, auf Ihrer eigenen Installation.
Jede Aussage auf dieser Website lässt sich an einem Arbeitstag in Belege verwandeln, mit Ihren eigenen Leuten an der Tastatur und ohne jemanden von AANCER im Raum. Jeder Test benennt die genauen Schritte, das beobachtbare Ergebnis, das Bestehenskriterium und das, was der Test nicht beweist.
Schauen Sie auf die Leitung, nicht nur auf den Bildschirm.
Gilt ab Release v1.0.0-r1.8. Führen Sie alle acht oder eine Auswahl durch. Ein Test gilt nur als bestanden, wenn jedes Beobachtbare eingetreten ist; alles andere ist ein Fehlschlag und ein Ticket wert.
- Eine Installation unter Ihrer Kontrolle (Docker
install.shoder das Helm-Chart). Ein Air-Gap-Paket wird nur für Test 1 Variante B und Test 8 benötigt. - Zwei Seats: ein Platform Admin und ein Knowledge Worker (oder ein beliebiger Seat ohne
agent.execute_codeund ohnecompliance.view_all), damit Sie nachweisen können, dass Verweigerungen vom Seat abhängen, nicht von der Anfrage. - Eine Möglichkeit, Netzwerkverkehr am Perimeter mitzuschneiden (Firewall-Log,
tcpdumpam Egress-Gateway oder ein Proxy). Mehrere Tests sind nur aussagekräftig, wenn Sie auf die Leitung schauen, nicht auf die Oberfläche. - Konventionen:
$GWist die Basis-URL des Gateways (https://<host>/api),$COOKIEein Session-Cookie einer angemeldeten Sitzung. Befehle sindcurl; dieselben Schritte funktionieren, wo angegeben, über die Oberfläche.
Behauptung, Schritte, Beobachtbares und was es nicht beweist.
1Souveränität: geschützte Daten verlassen den Perimeter nie
Geprüfte Behauptung. Eine Anfrage, die als souverän klassifizierte Daten an ein Cloud-Modell senden würde, wird innerhalb des Perimeters mit 403 SOVEREIGNTY_BLOCK… abgewiesen, bevor ein Paket das Netz verlässt.
Vorbereitung
- Admin → Workspaces →
pov-sovereignanlegen, Datenklassifikation Sovereign. - Admin → AI Gateway → sicherstellen, dass mindestens eine Cloud-Stufe (beliebiger Anbieter) und eine lokale Stufe konfiguriert sind.
- Ein Dokument mit einer wiedererkennbaren Geheimzeichenfolge (zum Beispiel
POV-SECRET-4711) in das Wissen dieses Workspace hochladen. - Den Egress am Perimeter mitschneiden, gefiltert auf die Hosts des Cloud-Anbieters.
Schritte
- Im Chat, im Workspace
pov-sovereign, die Stufe Cloud Reasoning wählen und fragen: „Was ist das Geheimnis im hochgeladenen Dokument?“ - Über die API wiederholen, um den genauen Code zu sehen:
curl -s -H "Cookie: $COOKIE" -H 'content-type: application/json' \ -d '{"workspaceId":"pov-sovereign","modelTier":"cloud-reasoning","dataClassification":"sovereign","message":"What is the secret?"}' \ $GW/chat/message -o /dev/null -w '%{http_code}\n' - Auf die lokale Stufe wechseln und dieselbe Frage stellen.
- Admin → Governance → Audit-Log: nach Aktion
sovereignty.data_classificationfiltern.
Beobachtbares
- Schritt 1: Die Oberfläche weist mit der Souveränitätsmeldung ab; es wird keine Antwort erzeugt.
- Schritt 2: HTTP
403, Bodycode: SOVEREIGNTY_BLOCK_DATA_CLASSIFICATION. - Schritt 3: Die lokale Stufe antwortet mit dem Geheimnis und einer Quellenangabe auf das Dokument.
- Schritt 4: Eine Audit-Zeile pro Abweisung mit Workspace, Benutzer und Regel
sovereign-data-cloud-tier. - Mitschnitt am Perimeter: null Verbindungen zum Cloud-Anbieter während der Schritte 1 und 2. Das ist das Beobachtbare, auf das es ankommt; das 403 allein beweist nur, dass die Sperre existiert, der Mitschnitt beweist, dass sie vor dem Egress sitzt.
Bestanden: alle fünf Beobachtbaren. Beweist nicht: dass jeder Codepfad gesperrt ist; das häufen die Audit-Zeile und der Mitschnitt über Ihre anderen Tests (2, 5) an.
Variante B (Air Gap)
Das Air-Gap-Paket mit AANCER_OFFLINE_INSTALL=1 auf einem Host installieren, dessen Firewall jeden ausgehenden Verkehr verbietet. Starten, anmelden, Test 5 durchführen. Erwartet: Die Plattform ist mit lokalen Modellen voll nutzbar, die Lizenz wird aus dem Offline-Token aktiviert, und das Firewall-Log zeigt keine ausgehenden Versuche der Plattform-Hosts (es gibt kein Call-Home).
2Agentensicherheit: eine nicht autorisierte Aktion wird technisch verweigert, nicht nur abgeraten
Geprüfte Behauptung. Die Werkzeuge eines Agenten sind durch seinen signierten Passport (Geltungsbereich, Klassifikationsobergrenze, Budget) und durch den Seat begrenzt. Ein Werkzeugaufruf außerhalb des Envelope wird von der Plattform mit einem PolicyDenied-Ergebnis verweigert, an dem sich das Modell nicht vorbeireden kann, und die Verweigerung wird auditiert.
Vorbereitung
- Agents → Design →
pov-agentmit zwei Werkzeugen anlegen: ein Lesewerkzeug (zum Beispiel Wissen durchsuchen) und ein Aktionswerkzeug (zum Beispiel An Dataset anhängen oder eine beliebige Konnektor-Schreiboperation, die Sie haben). - Zertifizieren (Agent Administration → Zertifikate → Ausstellen) mit einer Klassifikationsobergrenze
internalund einem auf das Lesewerkzeug beschränkten Geltungsbereich. - Ein Dataset
pov_actionsin einem internen Workspace anlegen und ein zweites im Workspacepov-sovereignaus Test 1.
Schritte
- Als Platform Admin mit
pov-agentim internen Workspace chatten: „Hänge eine Zeile{note:'hello'}an das Dataset pov_actions an.“ (Das Schreibwerkzeug ist an den Agenten gebunden, aber nicht im Geltungsbereich des Passports.) - Dann: „Durchsuche das Wissen nach POV-SECRET.“ (im Geltungsbereich).
- Den Passport mit dem Schreibwerkzeug im Geltungsbereich neu ausstellen; Schritt 1 wiederholen.
- Jetzt mit demselben Agenten aus dem Workspace
pov-sovereignchatten und ihn das Wissen durchsuchen lassen. - Als Knowledge-Worker-Seat (ohne
agent.execute_code) einen beliebigen Agenten mit dem Werkzeug Code ausführen bitten: „berechne 2**64 exakt“. - Admin → Governance → Audit-Log: nach
agent.tool.callfiltern.
Beobachtbares
- Schritt 1: Der Agent meldet, dass er die Aktion nicht ausführen kann; der Run-Trace zeigt den Werkzeugaufruf mit Ergebnis
PolicyDenied / envelope.out_of_scope; es wurde keine Zeile geschrieben (Dataset prüfen). - Schritt 2: erfolgreich, Quellenangabe wird gezeigt.
- Schritt 3: Die Zeile wird geschrieben; der Trace zeigt
allowed. - Schritt 4:
PolicyDenied / sovereignty.classification_ceiling; der souveräne Workspace liegt über der Obergrenze internal des Passports; nichts wurde abgerufen. - Schritt 5: Das Code-Werkzeug wird für den Seat verweigert (Berechtigung), der Agent antwortet ohne es.
- Schritt 6: eine Audit-Zeile pro Werkzeugaufruf mit
outcome: deniedund der oben genannten Entscheidungsregel; die verweigerten Zeilen enthalten keine Werkzeugargumente über deren Namen hinaus.
Bestanden: alle sechs. Beweist nicht: das Urteilsvermögen des Modells; es beweist, dass die Plattform sich nicht darauf verlässt.
3Widerruf: ein widerrufener Passport stoppt innerhalb von 30 Sekunden
Geprüfte Behauptung. Der Widerruf des Zertifikats eines Agenten stoppt weitere Werkzeugausführung innerhalb von 30 s (die Plattform cached Widerrufsprüfungen höchstens 30 s); die Prüfung schließt bei Nichterreichbarkeit des Widerrufsspeichers fail-closed.
Vorbereitung
pov-agent aus Test 2, zertifiziert, mit einem Workflow oder Prompt, der ihn ein Werkzeug wiederholt aufrufen lässt (zum Beispiel „durchsuche das Wissen nach jedem dieser 40 Begriffe, ein Aufruf pro Begriff“).
Schritte
- Die lang laufende Unterhaltung starten und die Zeit notieren (
T0). - Während sie läuft: Agent Administration → Zertifikate → Zertifikat des Agenten → Widerrufen (oder
POST $GW/admin/agent/certs/<lid>/revoke).T1notieren. - Den Run-Trace beobachten; den Zeitstempel des letzten erlaubten Werkzeugaufrufs (
T2) und des erstenPolicyDenied / revoked(T3) notieren. - Eine neue Unterhaltung mit dem widerrufenen Agenten beginnen.
- Optionale Fail-closed-Prüfung (Docker):
docker stop <postgres>für 20 s während eines Runs.
Beobachtbares
T3 − T1 ≤ 30 s; jeder Werkzeugaufruf nachT3wird verweigert; der Run endet mit einem ehrlichen Fehler, nicht mit einem Hänger.- Schritt 4: sofort abgewiesen: „Invalid or revoked agent token“.
- Schritt 5: Werkzeugaufrufe werden verweigert, solange der Speicher nicht erreichbar ist (nie standardmäßig erlaubt), und laufen weiter, sobald er zurück ist.
- Audit:
agent.cert.revokedund die verweigerten Werkzeugaufrufe.
Bestanden: T3 − T1 ≤ 30 s und Fail-closed-Verhalten. Beweist nicht: die Unterbrechung eines einzelnen bereits laufenden Werkzeugaufrufs (ein laufender Konnektoraufruf läuft zu Ende oder läuft in sein eigenes Budget, perCallBudget.maxWallMs).
4Konnektortiefe: ein echter Prozess von Anfang bis Ende, nicht ein Logo auf einer Seite
Geprüfte Behauptung. Die Konnektoren, die Sie brauchen, unterstützen die tatsächlichen Operationen, die Authentifizierung und die Fehlerbehandlung, die Ihr Prozess erfordert.
Vorbereitung
Einen echten Prozess mit zwei Ihrer Systeme wählen (zum Beispiel „neuer Lieferant in SAP → Freigabe → Datensatz in ServiceNow“ oder M365-Mail → Extraktion → SharePoint). Testzugangsdaten auf Ihrer Seite verwenden.
Schritte
- Automations → Workflow entwerfen → den Prozess mit den Konnektoren der Plattform bauen: Trigger, Lesen, ein Freigabeschritt, ein Schreiben. Bei jedem Schritt Schritt testen verwenden.
- Einmal mit gültigen Daten von Anfang bis Ende laufen lassen. In Approvals freigeben.
- Mit ungültigen Daten laufen lassen (ein Pflichtfeld fehlt beim Schreiben).
- Mit auf Ihrer Seite widerrufenen Zugangsdaten des Zielsystems laufen lassen.
- Schritt 2 wiederholen, während das Ziel vorübergehend nicht erreichbar ist (eine Minute an der Firewall blockieren), dann freigeben.
- Activity & Results → jeden Run öffnen.
Beobachtbares
- Schritt 2: Das Geschriebene erscheint im Zielsystem; der Run zeigt Ein- und Ausgabe jedes Schritts; die Freigabe zeigt, wer wann entschieden hat.
- Schritt 3: Der Run schlägt beim Schreibschritt fehl, und die Validierungsmeldung des Ziels wird angezeigt (kein generischer Fehler); nichts wurde teilweise geschrieben.
- Schritt 4: Der Konnektor schlägt mit einem Authentifizierungsfehler fehl; die Plattform hat nicht blind wiederholt; die Zugangsdaten sind in Connectivity markiert.
- Schritt 5: Der Schritt wiederholt und wird abgeschlossen, sobald das Ziel zurück ist; das Run-Detail zeigt die Wiederholungen.
- Audit:
run.completed/run.failed-Ereignisse;connector.*-Zeilen nennen den Host, nie die Nutzlast.
Bestanden: alle fünf. Beweist nicht: Transaktionssemantik innerhalb Ihres Zielsystems; prüfen Sie die Kompensationslogik in Ihrem eigenen Prozessentwurf.
5Wissen und RAG: Quellenangaben, Berechtigungen, gescannte Dokumente
Geprüfte Behauptung. Antworten zitieren die Passagen, aus denen sie stammen; ein Benutzer sieht nur, was sein Seat sehen darf; gescannte PDFs sind lesbar, wenn ein Vision-Modell konfiguriert ist.
Vorbereitung
- Zwei Workspaces,
pov-hrundpov-ops; in jeden 10 echte Dokumente hochladen, darunter mindestens zwei gescannte PDFs und zwei Dokumente, die sich widersprechen (eine alte und eine neue Richtlinie). - Der Knowledge-Worker-Seat ist nur Mitglied von
pov-ops.
Schritte
- Als Admin in
pov-hr: eine Frage stellen, die nur das gescannte PDF beantwortet. - Eine Frage stellen, die die beiden widersprüchlichen Dokumente unterschiedlich beantworten.
- Als Knowledge Worker die
pov-hr-Frage auspov-opsstellen und versuchen, das Wissensset vonpov-hrdirekt zu öffnen (/knowledge?workspace=pov-hr). - Ein Dokument löschen; seine Frage erneut stellen.
- Admin → Governance → Verzeichnis der Verarbeitungstätigkeiten (Art. 30) → exportieren.
Beobachtbares
- Schritt 1: eine Antwort mit Quellenangabe auf die gescannte Datei und Seite; die Quellenangabe öffnet die Passage. (Ist kein Vision-Modell konfiguriert, sagt der Upload das sofort: „Das sieht nach einem gescannten Dokument aus. Für die Textextraktion wird ein Vision-Modell benötigt…“, ehrlich statt eines stillschweigend leeren Index.)
- Schritt 2: Die Antwort zeigt beide Quellen mit Datum und benennt den Unterschied, oder zitiert die neuere und nennt die ältere; sie vermischt beide nicht zu einer selbstsicheren Aussage.
- Schritt 3: keine Antwort aus
pov-hr-Inhalten; die direkte URL wird abgewiesen (403 in der API, ein ehrlicher leerer Zustand in der Oberfläche). - Schritt 4: Die Antwort zitiert das gelöschte Dokument nicht mehr; das Audit zeigt
knowledge.delete. - Schritt 5: Der Export listet die Wissenssets als Verarbeitungstätigkeiten mit ihren Datenkategorien.
Bestanden: alle fünf. Beweist nicht: die Retrieval-Qualität auf Ihrem Korpus im Maßstab; prüfen Sie das an einer repräsentativen Menge von 1.000 Dokumenten, bevor Sie entscheiden.
6Extension-Plattform: ein Abteilungs-Pack bauen und durch seinen Lebenszyklus führen
Geprüfte Behauptung. Die Anpassung einer Abteilung ist ein signiertes Pack aus Daten: es wird installiert, mit Parametern aktiviert, aktualisiert, zurückgerollt und sauber stillgelegt, und ein mit unbekanntem Schlüssel signiertes Pack wird abgewiesen.
Vorbereitung
Node 20 auf einem Laptop; die CLI tools/aancer-pack aus dem Release-Bundle; das Kapitel Ein Pack erstellen des Kundenleitfadens. Ein Workspace pov-dept.
Schritte
aancer-pack keygen --out dept.key. Einemanifest.jsonschreiben mit einem Dataset, einem Business-Modell, einem Dashboard mit einer KPI und einem Diagramm, das einen Kreuzfilter aussendet, einem Hook aufdataset.rows.published, einem Theme (Ihre Farben), einer Home-Karte. Signieren:aancer-pack sign manifest.json content/ -o dept-1.0.0.ancpack --key dept.key.- Platform Settings → Extensions → Pack importieren, bevor Sie Ihren Schlüssel hinzufügen.
dept.pubunter Trust Keys hinzufügen; erneut importieren; Konfigurieren & aktivieren,pov-deptbinden.- 50 Zeilen per CSV in das Dataset importieren; das Dashboard öffnen; auf einen Balken klicken.
- Den Diagrammtitel ändern, auf
1.1.0erhöhen, signieren, importieren, aktivieren. Dann auf1.0.0zurückrollen. - Das Pack stilllegen.
- Ein Byte in einem signierten
.ancpackändern (zum Beispielcontent/theme.jsonim Zip bearbeiten) und importieren.
Beobachtbares
- Schritt 2: abgewiesen,
PACK_SIGNER_UNKNOWN; nichts gespeichert. - Schritt 3: „Bundle verified“, Items mit etwaigen Kontrastwarnungen aufgelistet; nach der Aktivierung ist jedes Item Active, das Dashboard erscheint in der Navigation, das Theme ist angewendet, die Home-Karte wird gezeigt, der Hook zeigt managed by pack.
- Schritt 4: Das Dashboard rendert Ihre Zeilen; der Klick filtert die KPI und ein Chip erscheint; die Zustellungen des Hooks zeigen eine Zustellung für den CSV-Import (wenn sein Handler-Flow mit einem Event-Trigger veröffentlicht ist; andernfalls zeigt der Hook handler paused, ebenfalls korrekt).
- Schritt 5: der neue Titel nach dem Upgrade; der alte Titel nach dem Rollback; beide Versionen aufgelistet.
- Schritt 6: Dashboard, Karte, Theme und Hook sind weg; die Zeilen der Datasets bleiben für das Audit erhalten; das Standard-Branding ist zurück.
- Schritt 7: abgewiesen mit einem Hash-Mismatch-Fehler.
- Audit:
extension.pack.imported|activated|rolled_back|retired, Signaturfehler als Verweigerungen.
Bestanden: alle sieben. Beweist nicht: die Qualität von Drittanbieter-Packs; es beweist die Grenze der Plattform.
7Ausfall und Wiederherstellung: mitten im Run Dinge abschießen
Geprüfte Behauptung. Runs, Freigaben und das Audit-Ledger überstehen Komponentenausfälle; Wiederholungen sind begrenzt; das Ledger bleibt intakt und erkennt Manipulation.
Vorbereitung
Docker-Installation (Helm: entsprechend kubectl delete pod verwenden). Ein Workflow mit drei Schritten und einer Freigabe in der Mitte (der aus Test 4 genügt). Ein Hook aus Test 6.
Schritte
- Den Workflow starten; während Schritt 1 läuft:
docker restart <automation-runner>. - Erneut starten; während er auf Freigabe wartet:
docker restart <gateway>; dann freigeben. - Eine CSV importieren, die den Hook auslöst; sofort
docker stop <postgres>für 60 s; wieder starten. - Ledger-Integrität:
GET $GW/admin/compliance/audit-chain/verify→ok:truenotieren. Dann als Datenbank-SuperuserUPDATE audit_events SET action='x' WHERE id=(SELECT id FROM audit_events LIMIT 1);undTRUNCATE audit_events;versuchen. - Wenn Sie direkten DB-Zugriff haben und die Manipulationserkennung selbst sehen wollen: den Trigger deaktivieren, die Nutzlast einer Zeile ändern, wieder aktivieren und den Verify-Endpunkt erneut aufrufen.
GET $GW/metrics(mit dem Metrics-Token) und/health.
Beobachtbares
- Schritt 1: Der Run endet
failedmit einem ehrlichen Fehler oder wird abgeschlossen, sobald der Runner zurück ist, nie ein stiller halber Run; das Run-Detail sagt, welches. - Schritt 2: Die Freigabe ist nach dem Neustart weiterhin offen; das Freigeben setzt den Run fort und er wird mit derselben Run-ID abgeschlossen.
- Schritt 3: Die Hook-Zustellung wird nach Rückkehr der Datenbank wiederholt (Backoff 30 s, 120 s, 480 s) und einmal zugestellt;
aancer_event_outbox_pendingauf/metricssteigt und fällt wieder auf 0; kein doppelter Run. - Schritt 4: Beide Anweisungen werden von der Datenbank abgewiesen („audit_events is append-only“);
verifymeldet weiterhinok:true. - Schritt 5:
verifymeldetok:false, brokenAt:<row>; die Kette erkennt die Änderung. - Schritt 6:
/health200;/metricslistet Gateway- und Outbox-Gauges.
Bestanden: alle sechs. Beweist nicht: Hochverfügbarkeit unter Dauerlast; das ist eine Dimensionierungsübung mit den Enterprise-Sidecars.
8Exit: alles mitnehmen
Geprüfte Behauptung. Ein Kunde kann mit seinen Daten, seinen Automatisierungen und seinem Extension-IP gehen und eine installierte Version ohne den Hersteller weiterbetreiben.
Schritte
- Datasets: CSV exportieren für jedes Dataset (
GET $GW/datasets/<id>/export.csv). - Dashboards: Als Pack exportieren für jedes veröffentlichte Dashboard, ein signiertes
.ancpackmit Dashboard, Widgets, Modellen und Dataset-Schemata. - Workflows: Designer → JSON exportieren für jeden Flow (und JSON importieren auf einer zweiten Installation, um die Rundreise zu belegen).
- Compliance: Governance → Audit-Log, Art.-30-Verzeichnis und DIFC-Reg.-10-Bericht exportieren (
/compliance-log/export,/compliance/gdpr-art30/export,/compliance/difc-reg10/export). - Die eigenen Daten eines Benutzers: Admin → Users → Auskunftsexport (Art. 15).
- Extension-Packs: Ihre signierten
.ancpack-Dateien und Ihren privaten Schlüssel behalten; die Plattform hält den Schlüssel nie. - Eingefrorene Version: den Air-Gap-Host aus Test 1B eine Woche lang von allem trennen; täglich anmelden.
Beobachtbares
- Schritte 1 bis 5 erzeugen vollständige Dateien, die Sie außerhalb von AANCER öffnen können (CSV, JSON, signiertes Zip); die zweite Installation importiert die Flows und führt sie aus.
- Schritt 7: Die Installation funktioniert weiter; die Lizenz, ein offline signiertes Token ohne Call-Home, läuft durch die Trennung nicht ab (nur zu ihrem eigenen Ablaufdatum, das Sie unter Platform Settings → Licence lesen können).
Bestanden: alles. Beweist nicht, und das sagen wir offen: Es gibt heute keinen einzelnen Knopf „gesamte Installation exportieren“; der Exit ist die Summe der obigen Einzelexporte plus ein Datenbank-Backup, und das Backup-Sidecar ist eine Enterprise-Komponente. Quellcode-Hinterlegung ist eine vertragliche Frage, kein Produktmerkmal.
Schreiben Sie es auf, mit den Belegen.
| # | Test | Ergebnis | Erfasste Belege | Ticket |
|---|---|---|---|---|
| 1 | Souveränität | |||
| 1B | Air-Gap-Start | |||
| 2 | Agentensicherheit | |||
| 3 | Widerruf (T3 − T1 = ___ s) | |||
| 4 | Konnektortiefe (Prozess: ___) | |||
| 5 | Wissen / RAG | |||
| 6 | Lebenszyklus einer Extension | |||
| 7 | Ausfall / Wiederherstellung / Ledger | |||
| 8 | Exit |
Was dieses Paket bewusst nicht abdeckt
Kundenreferenzen, Sicherheitsbewertungen Dritter, Zertifizierungen, kommerzielle Bedingungen, Partnerökonomie und IP-Eigentum sind nichts, was ein Test zeigen kann. Fragen Sie sie separat ab; ein Hersteller, der die acht Tests oben beantwortet, aber diese Fragen nicht, hat die Hälfte beantwortet.
Führen Sie die acht Tests durch, dann sprechen wir über den Rest.
Wir schicken Ihnen den Kundenleitfaden, die Pack-CLI und eine Evaluierungslizenz. Bringen Sie Ihre eigenen Dokumente, Ihre eigenen Systeme und Ihr eigenes Firewall-Log mit.