{
  "$schema_note": "Arkane OS — belegte Fakten. Jede Zahl trägt Gate/Quelle, Umgebung und Version. Nur was hier steht, wird auf der Site behauptet.",
  "product": "Arkane OS",
  "version": "v0.27",
  "updated": "2026-10-26",
  "post_tag_note": "Nach v0.27 auf main gemergt, noch nicht getaggt: T-GM9 SIMD-blake3 (PR #198), T-GM10 Evict-Ahead (PR #199), T-DB19 Seiten-Cache (PR #200), T-DB20 durabler Standard (PR #201), GM6-Eviction-KVM-Nachmessung (PR #211), T-GM11 Serial-FIFO-Burst (PR #212), N4 Head-Bindung im SDK (PR #214, 13.10.), SEC-1a Console-Pfade ohne Ziel (PR #223), T-RB1 Ring-3-Ausnahmen (PR #224, 24.10.), SEC-2a Sessions/Login-Sperre (PR #225, 24.10.), T-RB2 Syscall-Grenze (PR #226, 24.10.). v0.28 wird erst nach FC-T1 getaggt.",
  "repo": "https://github.com/arkane-studio/arkane-os",
  "site": {
    "pages": [
      "index.html",
      "proof.html",
      "architecture.html",
      "getit.html"
    ],
    "llms_txt": "llms.txt"
  },
  "environments": {
    "kvm": "QEMU mit KVM auf AMD Ryzen 7 5700G (Host garuda), ein Host. Beweist Verhalten und Geschwindigkeit.",
    "tcg": "QEMU Software-Emulation (TCG), u. a. auf der Hermes-VM (AMD EPYC 7B12, 2 vCPU). Beweist Verhalten, nie Geschwindigkeit."
  },
  "facts": [
    {"id": "model_larger_than_ram", "claim": "6-GiB-Modell läuft unter 4-GiB-RAM-Budget komplett durch", "value": "completed", "detail": "3372 MiB paged-in, -m 4G", "gate": "v27_gm5", "env": "kvm", "version": "v0.27", "status": "proven"},
    {"id": "sweep_6gib_kvm", "claim": "6-GiB-Sweep unter Speicherdruck (-m 4G), jedes Fenster blake3-verifiziert", "value": "31.8 s, 193 MiB/s", "detail": "1390 Druck-Evictions (zahlengleich zum Lauf vor T-GM11); T-GM11: 51.0 → 31.8 s, 120 → 193 MiB/s, avg je page-in 14.3M → 10.4M Zyklen; ein Lauf je Seite, kein Mittelwert; accel=kvm aus der echten QEMU-Zeile belegt; Pass 2 lädt evictete Fenster nach", "gate": "v27_gm6 (KVM-Lauf 13.10. nach T-GM11, PR #212, docs/bench/gm11_serial_kvm_2026-10-13.md; Vorher-Lauf PR #211, docs/bench/gm6_eviction_kvm_2026-10-13.md)", "env": "kvm, -m 4G, Kernel dev-Profil wie im Gate gebaut (blake3 opt-level 3)", "version": "v0.27 + T-GM9/T-GM10/T-GM11 (nach Tag, gemergt)", "status": "proven"},
    {"id": "serial_fifo_burst_t_gm11", "claim": "Serial-Sendepfad: Port-Zugriffe je Log-Byte (T-GM11, 16-Byte-FIFO-Burst statt Status-Poll je Byte)", "value": "2.000 → 1.062", "detail": "Zyklen je Serial-Byte 74 644 → 51 497 (−31 %), LSR-Reads −93.8 %; Rest = ein THR-Write (VM-Exit mit synchronem write(2) in QEMU) je Byte ≈ 48 000 Zyklen ≈ 13 µs; im 6-GiB-Sweep ist die Page-in-Zeile 19.9 s der 31.8 s (386 ‰ der Mapping-Lebenszeit), Serial gesamt 545 ‰ — nächster Hebel T-GM12", "gate": "v28_gm11_serial (KVM-Lauf 13.10., PR #212, docs/bench/gm11_serial_kvm_2026-10-13.md)", "env": "kvm, -m 1G, Kernel dev-Profil wie im Gate gebaut", "version": "nach v0.27 (gemergt, nicht getaggt)", "status": "proven"},
    {"id": "page_in_tail_evict_ahead", "claim": "Page-in-Tail mit Evict-Ahead unter Druck, gegenüber T-GM9", "value": "avg −24 %, p90 −28 %", "detail": "Druck-Skips 1089 → 8; Wall-Clock des Sweeps blieb damals flach — der Rest lag ausserhalb des gemessenen Page-in-Pfads und ist seit T-GM11 zugeordnet (Serial-Log, ein VM-Exit je Byte).", "gate": "T-GM10 tail_report (PR #199, docs/bench/gm10_evict_ahead_kvm_2026-10-09.md)", "env": "kvm, Kernel dev-Profil wie im Gate gebaut", "version": "nach v0.27 (gemergt, nicht getaggt)", "status": "measured"},
    {"id": "tamper_refused", "claim": "Manipuliertes Fenster wird verweigert, Cell stirbt sauber, System lebt", "value": "verify_fail, keine Panik", "gate": "v27_gm5, v27_gm6", "env": "kvm,tcg", "version": "v0.27", "status": "proven"},
    {"id": "cell_fault_contained", "claim": "Eine CPU-Ausnahme aus einer Cell (Ring 3) beendet nur diese Cell; vorher war jede solche Ausnahme ausser #PF eine Kernel-Panik", "value": "8/8 Fälle, keine Panik", "detail": "Fälle: #UD (ud2), #DE (Division durch 0), #GP über hlt / nicht-kanonische Adresse / movaps unausgerichtet / int3 (DPL 0 → #GP 0x1a), #DB (Trap-Flag), #UD auf Kern 1; Kill-Code 0x80|Vektor; danach ticken beide Spinner weiter, Console 200 mit 8 Zellen dead, keine [PANIC]-Zeile. TCG: 3 Läufe PASS (Hermes-VM, 23.10.), ROT ohne Fix FAIL nach 42 s (nur TCG belegt); KVM: Matrix 2× PASS (garuda, 24.10.). Voller TCG-Sweep 66/66 (4 Gates erst nach Fehlversuchen, Retry-Ledger). Grenzen: #SS, #NP, #TS, #AC, #MF, #XM, #BR, #OF, #NM nur Host-Tests (cellfault-core); Ring-0-Ausnahmen, #NMI, #MC, #DF bleiben fatal; Exit-Code nur im Serial, /api/cells zeigt nur dead; Healer-Backoff bei sofort wieder sterbender Zelle nicht geprüft.", "gate": "v29_rb1_cell_fault_matrix (T-RB1, PR #224, docs/bench/trb1_cell_faults_tcg_2026-10-23.md)", "env": "tcg,kvm, Kernel dev-Profil wie im Gate gebaut", "version": "nach v0.27 (gemergt 24.10., nicht getaggt)", "status": "proven"},
    {"id": "syscall_boundary_checked", "claim": "Syscall-Grenze: ungültige Argumente einer Cell bekommen einen bestehenden, benannten Fehlercode statt Kernel-Panik oder stiller Speicherverletzung", "value": "20/20 ungültige Aufrufe → erwarteter Fehlercode, keine Panik", "detail": "14 Befunde F1–F14 aus Review und Plan geschlossen (Panik über VirtAddr/PhysAddr-Konstruktion, Überläufe, Abstieg in kernel-geteilte Seitentabellen, unkontrahierte INSTALL_REMOTE-Ziele, Disk-Sektor, Spawn-Grösse/Heap). Gate: Lauf A gewöhnliche App-Zelle (BlobAccess R|W), Lauf B Boot-Zelle mit Authority; je Fall erwarteter Code (PTR/INVAL/RIGHTS), Gesundheitscheck, keine [PANIC]-Zeile. F5 (nur Boot-Pfad), F10 und F13 nicht per Gate auslösbar, nur Host-Tests (sysarg-core 20/20, capability-core) und Code. TCG: ROT auf Gate-Commit (Panik nach Fall A2), GRÜN auf bcaf944; voller TCG-Sweep 68 Gates auf eacf808: 66/68 im ersten Durchgang, beide Fehlschläge im Direktlauf grün. KVM (garuda, 24.10.): rb2-Gate 2× PASS, Regression 6/6 (gm6 erst in Wiederholung, Signatur gw-admin-Timeout, vorbestehend).", "gate": "v29_rb2_syscall_grenze (T-RB2, PR #226, docs/bench/trb2_syscall_grenze_tcg_2026-10-24.md)", "env": "tcg,kvm, Kernel dev-Profil (Überlauf-Checks an)", "version": "nach v0.27 (gemergt 24.10., nicht getaggt)", "status": "proven"},
    {"id": "sessions_end_with_user", "claim": "Sessions (Cookie und Bearer) enden sofort, wenn ein Nutzer gelöscht wird oder Rolle bzw. Passwort ändert", "value": "Cookie 401, Bearer 401 ARK_TOKEN_INVALID", "detail": "Vorher galten Sessions bis 30 min (Cookie) bzw. bis 8 h (Bearer mit renew, Rolle eingefroren) weiter (Review S-1). Gate (a) users rm, (b) users role → viewer: altes Token ungültig, neues Token hat viewer. Grün im vollen TCG-Sweep vom 24.10. (68 Gates, PR-Head enthält #225); kein eigenes Bench-Artefakt im Baum.", "gate": "v29_sec2a_sessions_ratelimit (SEC-2a, PR #225; docs/reviews/review_security_controlplane_2026-10-13.md S-1 behoben)", "env": "tcg", "version": "nach v0.27 (gemergt 24.10., nicht getaggt)", "status": "proven"},
    {"id": "login_rate_limit_scoped", "claim": "Login-Sperre je Nutzername und je Quelle statt global; /api/login und /api/token zählen getrennt", "value": "5 je Name, 20 je Quelle, Notbremse 50 (je 60 s)", "detail": "Backoff 60/120/240/480/900 s; 429 mit scope (user|source|brake) und Retry-After; erfolgreiche Paare (Quelle, Nutzer) 8 h bekannt. Vorher sperrten 5 beliebige Fehlversuche/min jeden Login (Review S-2). Gate (c): 5× falsch für X → Y loggt ein (200), X gesperrt (429 scope:user), X über /api/token 200. Grenze: unter slirp kommt jede Verbindung von 10.0.2.2 — die Trennung nach Quelle belegen nur Host-Tests; ein Angreifer kann einen bekannten Namen gezielt bis 15 min sperren.", "gate": "v29_sec2a_sessions_ratelimit + Host-Tests gw-admin-core (SEC-2a, PR #225)", "env": "tcg", "version": "nach v0.27 (gemergt 24.10., nicht getaggt)", "status": "proven"},
    {"id": "auto_restart", "claim": "Automatischer Neustart toter Cells: per Manifest eingerichtete Cells durch den gw-admin-Healer (Obergrenze an Versuchen), gw-admin/persistence/keystore durch die Supervisor-Cell", "value": "neu gestartet", "detail": "Supervisor-Liste [gw-admin, persistence, keystore] (crates/arkane-cell-supervisor/src/main.rs); keystore kommt gesperrt zurück bis arkctl secrets unlock. Healer: host/gw-admin-core/src/respawn.rs (5 Versuche je Episode, 10 je Lebensdauer). gw-public und gw-mcp werden NICHT neu gestartet (siehe limits).", "gate": "s1_respawn, v18_s2_supervisor", "env": "tcg; s1_respawn auch kvm (24.10., docs/bench/trb1_cell_faults_tcg_2026-10-23.md)", "version": "seit v0.17/v0.18", "status": "proven"},
    {"id": "n4_head_binding", "claim": "N4 Head-Bindung im SDK: db::query_pinned liefert einen offline prüfbaren Beleg arkpin1:<root>:<hash>", "value": "Einzeiler im SDK", "detail": "Baustein für EU-AI-Act Art. 12 (Protokollierung), nicht die Erfüllung. Gate in ci-acceptance, grün im vollen TCG-Sweep vom 24.10.", "gate": "v28_n4_head_binding (PR #214)", "env": "tcg", "version": "nach v0.27 (gemergt 13.10., nicht getaggt)", "status": "proven"},
    {"id": "eviction_budget", "claim": "FIFO-Eviction hält das Working-Set-Budget exakt ein", "value": "8/8, 4/4", "detail": "Budget erreicht, nie überschritten; TLB-Shootdown cross-core", "gate": "v27_gm6", "env": "kvm,tcg", "version": "v0.27", "status": "proven"},
    {"id": "store_v4", "claim": "Store v4: Extents, 48-Bit-Längen", "value": "256 TiB Decke je Blob", "detail": "512-MiB-Blob = 1 Extent, Buchhaltung 64 B statt 1 MiB; v3 byte-exakt lesbar; Oversize sauber verweigert", "gate": "v27_gm4", "env": "kvm,tcg", "version": "v0.27", "status": "proven"},
    {"id": "arkdb_kv_read", "claim": "ArkDB Punkt-Read gegen SQLite im Linux-Gast (Verhältnis, <1 = schneller)", "value": 0.79, "detail": "1624x langsamer bei Sprintstart; Lauf 13.10. (docs/bench/arkdb_439f0c4_2026-10-13.md); der T-DB19-Lauf im dev-Profil beidseitig mass 0.74 — dev/release nicht gemischt", "gate": "bench-arkdb, golden_sqlite (PR #201)", "env": "kvm, release beidseitig", "version": "nach v0.27 (gemergt, nicht getaggt)", "status": "proven"},
    {"id": "arkdb_scan", "claim": "ArkDB Scan (WHERE + ORDER BY + LIMIT) gegen SQLite (Verhältnis)", "value": 1.63, "detail": "vorher 3.55 (v0.25); T-DB19 Seiten-Cache ohne Kopien (Rc<[u8]>, CoW); Lauf 13.10. release beidseitig; der T-DB19-Lauf im dev-Profil beidseitig mass 0.92 — dev/release nicht gemischt; Rest strukturell: verteilte B-Baum-Abstiege vs. ein zusammenhängendes Blatt", "gate": "bench-arkdb (PR #200, PR #201)", "env": "kvm, release beidseitig", "version": "nach v0.27 (gemergt, nicht getaggt)", "status": "proven"},
    {"id": "arkdb_write_durable", "claim": "ArkDB Einzel-Write gegen SQLite, Standard: jeder Commit durabel (Root-Write + FLUSH vor der Antwort)", "value": 25.4, "detail": "T-DB20: SYS_BLOB_SET_ROOT schreibt und spült explizit (FLUSH ≈ Host-fdatasync); benannte Asymmetrie: SQLite läuft im Bench im Gast ohne Persistenzkosten (initramfs); «durabel» = Root stabil, Bodies folgen asynchron über die Spiegel-Runde — vollständige Variante T-DB21 geplant, nicht gebaut", "gate": "bench-arkdb (PR #201, docs/bench/arkdb_439f0c4_2026-10-13.md)", "env": "kvm, release beidseitig", "version": "nach v0.27 (gemergt, nicht getaggt)", "status": "proven"},
    {"id": "arkdb_write_lazy_optin", "claim": "ArkDB Einzel-Write gegen SQLite, Opt-in PRAGMA synchronous = NORMAL (Root ungespült)", "value": 2.61, "detail": "Opt-in je kernel-verbürgter Caller-Id, nicht der Standard; kann bei Host-Ausfall leise auf einen älteren Root zurückfallen", "gate": "bench-arkdb (PR #201, docs/bench/arkdb_439f0c4_2026-10-13_lazy.md)", "env": "kvm, release beidseitig", "version": "nach v0.27 (gemergt, nicht getaggt)", "status": "proven"},
    {"id": "arkdb_group_commit", "claim": "ArkDB Group-Commit: Statement in BEGIN..COMMIT als Anteil eines Einzel-Writes", "value": 0.096, "detail": "ein durabler Anker je Transaktion statt je Statement; SQLite 0.042 → je Statement in Txn 57.9x; Lauf 13.10., Standard durabel", "gate": "bench-arkdb (db_txn_write, PR #201)", "env": "kvm, release beidseitig", "version": "nach v0.27 (gemergt, nicht getaggt)", "status": "proven"},
    {"id": "agentdb_readers", "claim": "Agenten-DB: drei Leser cross-core bei laufendem Schreiber", "value": "~105k reads/s je Leser", "detail": "MAP-Snapshot; MAP-Lesen 0.41x einer IPC-Lesung; Rotation je Commit 68–1713x IPC (Abbruchkriterium, N1-Design offen)", "gate": "T-AG1", "env": "kvm", "version": "v0.27", "status": "proven"},
    {"id": "agentdb_head_offline", "claim": "DB-Head offline über die Audit-Kette beweisbar", "value": "audit chain OK", "detail": "KIND_ROOT_PIN; arkctl db pin / db diff", "gate": "T-AG2", "env": "offline", "version": "v0.27", "status": "proven"},
    {"id": "mcp_ops", "claim": "MCP-Ops: KI deployt und verwaltet Cells ohne Mensch", "value": "13 Tools", "detail": "gw-admin POST /mcp :9443; Bearer = acp-auth-Token; Viewer 7 read-only, Operator/Admin 13; deploy_apply mit expect_ops-Drift-Check; Audit vor Wirkung; persistenter Schalter default AN, AUS = 403 ARK_MCP_DISABLED", "gate": "v26_mo1, v26_mo2, v26_mo3, v26_mo4", "env": "kvm,tcg", "version": "v0.26", "status": "proven"},
    {"id": "syscall_vs_linux", "claim": "Syscall-Latenz p50 Arkane vs. Linux getpid, gleicher Host", "value": "224 vs. 1393 Zyklen", "gate": "bench-vs-linux", "env": "kvm, dev, n=2", "version": "v0.24", "status": "measured"},
    {"id": "ipc_vs_afunix", "claim": "IPC-Roundtrip p50 Arkane vs. AF_UNIX", "value": "36850 vs. 40864", "detail": "~10 % schneller; unter TCG fälschlich 3.5x langsamer (Emulationsartefakt)", "gate": "bench-vs-linux", "env": "kvm, dev, n=2", "version": "v0.24", "status": "measured"},
    {"id": "serving_path", "claim": "Serving-Pfad p50 Arkane/Linux, Boot-Trace aus", "value": "0.98–1.34", "detail": "public-tree 0.977, static-json 1.224, mcp-notes-search 1.285, mcp-echo 1.344; 80–89 % der ersten Latenz war eigene Debug-Serial-Ausgabe", "gate": "bench-vs-linux", "env": "kvm, dev", "version": "v0.24", "status": "measured"},
    {"id": "rollout_zero_errors", "claim": "Drei rollierende Restarts einer Replica-Gruppe unter Dauerlast", "value": "802 Requests, 0 Fehler", "detail": "min alive 1 (floor N−1)", "gate": "Rollout-Gate v0.23", "env": "tcg", "version": "v0.23", "status": "proven"},
    {"id": "boot_converged", "claim": "Boot bis konvergierter Cluster, unbeaufsichtigt", "value": "7.4 s", "gate": "Boot-Latenz-Gate v0.23", "env": "tcg", "version": "v0.23", "status": "proven"},
    {"id": "audit_tamper", "claim": "Audit-Kette erkennt ein geflipptes Byte offline", "value": "TAMPER seq=4", "detail": "blake3-Hash-Kette; Grenze: beweist nur nach dem letzten verifizierten Anker", "gate": "arkctl audit verify", "env": "offline", "version": "v0.19", "status": "proven"},
    {"id": "sealed_at_rest", "claim": "Kein Klartext auf der Platte nach Schreib-Roundtrip", "value": "strings | grep -c → 0", "detail": "XChaCha20-Poly1305; KEK nur RAM in netzfreier Keystore-Cell", "gate": "Sealed-at-rest-Gate v0.21", "env": "tcg", "version": "v0.21", "status": "proven"},
    {"id": "kernel_size", "claim": "Kernel-Grösse", "value": "~13 000 Zeilen Rust, 26 Syscalls, 0 Zeilen C", "gate": "Repository", "env": "-", "version": "main 184046a (24.10.2026)", "status": "fact", "detail": "Kernel-Code ohne Leer- und Kommentarzeilen: ≈12 700 Zeilen auf main 184046a (eigene Zählung 26.10.2026, crates/arkane-kernel/src); keine C-Dateien; T-RB2 hat keinen Syscall hinzugefügt (ABI unverändert)"},
    {"id": "gates_count", "claim": "Acceptance-Gates im vollen Lauf (make ci-acceptance)", "value": "68", "gate": "make ci-acceptance (docs/bench/trb2_syscall_grenze_tcg_2026-10-24.md)", "env": "tcg", "version": "nach v0.27", "status": "fact", "detail": "Voller TCG-Sweep 24.10. auf PR-Head eacf808 (enthält T-RB1, SEC-2a, T-RB2): 66/68 im ersten Durchgang, die zwei Fehlschläge im Direktlauf grün; vor v0.27 waren es 47+"}
  ],
  "planned": [
    {"id": "t_db21_full_durability", "claim": "T-DB21: Bodies vor der Antwort durabel («Schweizer Variante vollständig»)", "detail": "Heute heisst durabel: Root stabil; Seiten folgen asynchron über die Spiegel-Runde. Owner-Entscheid offen.", "status": "planned"},
    {"id": "t_gm12_log_channel", "claim": "T-GM12: Log-Kanal ohne Byte-Exit (virtio-serial statt Port-I/O je Byte)", "detail": "Nach T-GM11 ist jedes Log-Byte ein VM-Exit (~48 000 Zyklen); Mass-Stab: höchstens ~20 s von 31.8 s im 6-GiB-Sweep. Plan gemergt (PR #213, docs/plans/plan_v0.28_tgm12_logkanal.md), nicht gebaut.", "status": "planned"},
    {"id": "egress_caps", "claim": "Egress-Caps (Ziel-Whitelist ausgehend)", "status": "planned"},
    {"id": "kv_cache_os_object", "claim": "KV-Cache als OS-Objekt", "status": "planned, später"},
    {"id": "post_1_0", "claim": "Bare Metal, IOMMU, TPM, Multi-Node", "status": "not before 1.0"}
  ],
  "stand": "OS-Repo main 184046a (24.10.2026, nach #226); getaggt ist v0.27",
  "in_progress": [
    {"id": "fc_t1_fail_closed", "claim": "FC-T1: «Unbekannt ≠ leer, Fehler ≠ Erfolg» — SET_ROOT meldet Write-/Flush-Fehler (heute Erfolg trotz Fehler), Store mit fremder Version wird nicht mehr formatiert", "detail": "Plan docs/plans/plan_v0.28_fc1_fail_closed_kernel_store.md; ohne FC-T1 ist «Standard durabel» nicht fail-closed wahr. Danach Tag v0.28.", "status": "in progress"},
    {"id": "t_rb5_smp_lifecycle", "claim": "T-RB5: Zellen-Lebenszyklus bei mehreren Prozessorkernen (Review S-4/S-9: Cross-Core-Stop/Respawn ohne Nachweis, dass die Zelle nicht mehr läuft)", "detail": "KVM-Beweis ausstehend", "status": "in progress"},
    {"id": "sec_2b_control_plane", "claim": "SEC-2b: Control-Plane bleibt bei langsamen Clients erreichbar (Review S-3: eine Verbindung zur Zeit, 10-s-Deadline, blockiert Console, gRPC, MCP und Healer)", "detail": "Benannt in docs/bench/trb2_syscall_grenze_tcg_2026-10-24.md (Abschnitt «Offen», gw-admin-Timeout-Familie); Plan noch nicht auf main", "status": "in progress"}
  ],
  "limits": [
    {"id": "gateways_not_restarted", "claim": "gw-public und gw-mcp werden nach einem Absturz nicht neu gestartet; der Port bleibt bis zum Reboot weg", "source": "docs/plans/plan_v0.29_haertung_fuzzing_stufe1.md (F-3); Supervisor-Liste [gw-admin, persistence, keystore]", "status": "open"},
    {"id": "set_root_errors_silent", "claim": "SYS_BLOB_SET_ROOT antwortet heute Erfolg, auch wenn Sektor-Write oder FLUSH scheitern", "source": "docs/plans/plan_v0.28_fc1_fail_closed_kernel_store.md F1", "status": "open, FC-T1"},
    {"id": "bearer_survives_mcp_switch", "claim": "Ein vor MCP AUS ausgestelltes Bearer-Token gilt nach AN weiter; Session-Tabelle 16 Plätze global", "source": "docs/reviews/review_security_controlplane_2026-10-13.md S-5, S-4", "status": "open"},
    {"id": "fault_reason_serial_only", "claim": "Grund eines Zellentods (Exit-Code) nur im Serial, nicht in /api/cells oder arkctl", "source": "docs/bench/trb1_cell_faults_tcg_2026-10-23.md", "status": "open"}
  ],
  "not_measured": [
    "Token-Rate beim Paging von der Platte",
    "Spitzenkapazität im Serving-Pfad",
    "Mehr als drei Leser auf der Agenten-DB",
    "Bare Metal"
  ]
}
