knowledge-base/raw/other/2026-09-19_rampart-model-card.md
Hector b0742cbdb4 ingest(blog): agentcloak desktop + rampart model card (PII cloaking)
raw: business-wire launch PM, rampart model card, roemmele quote-tweet
wiki: tools/agentcloak-desktop (new), people/peter-yared (new),
institutions/incountry (new), people/brian-roemmele (update),
index (230. update), log
2026-09-19 15:15:38 +02:00

8.1 KiB
Raw Blame History

type source_url retrieved title author tags
other https://github.com/nationaldesignstudio/rampart/blob/master/MODEL_CARD.md 2026-09-19 Rampart — Model Card (nationaldesignstudio/rampart) National Design Studio
rampart
pii
redaction
privacy
onnx
minilm
client-side
agentcloak
model-card

Rampart — Model Card (abgerufen 19.09.2026)

Quellenkontext

Model-Card des Modells nationaldesignstudio/rampart, abgerufen über https://raw.githubusercontent.com/nationaldesignstudio/rampart/master/MODEL_CARD.md (HTTP 200, 28.608 Byte). Das Modell wird von AgentCloak Desktop als lokale Detektionskomponente eingesetzt (siehe raw/blog/2026-09-18_agentcloak-desktop-launch.md).

Modell (Fakten der Model-Card)

Feld Wert
Model-ID nationaldesignstudio/rampart
Architektur nreimers/MiniLM-L6-H384-uncased, fine-tuned mit 35-Label-BIO-Head (17 Entitätstypen)
Parameter ≈18,5 Mio. (19.730-WordPiece-Vokabular)
Quantisierung 4-bit MatMul + INT8 Embedding (onnx/model_q4.onnx)
Artefaktgröße 14,7 MB
Max. Sequenz 512 Token
Sprachen Englisch, Spanisch, Französisch, Deutsch, Italienisch, Portugiesisch, Niederländisch (alle Latin-Script)
Runtime ONNX Runtime Web (WASM/WebGPU) via transformers.js
Lizenz CC BY 4.0
Herausgeber National Design Studio
Card-Version 1.0 (initial public release)
Training 3 Epochen, Batch 32, LR 5e-5, AdamW, Apple M-series MPS, ~3,5 h Wandzeit

Die Model-Card beschreibt das Modell als „the on-device half of Rampart, a defense-in-depth client-side redaction system". Das ausgelieferte Artefakt läuft zusammen mit einer deterministischen Erkennungsschicht für strukturierte Identifier.

Zweck

Lokale Redaktion nutzergeschriebenen Texts in AI-Assistenten und Intake-Flows — Ersetzung identifizierender Werte durch stabile Platzhalter, bevor Daten an einen Modellanbieter, Server oder Log-System gehen. Beispiele in der Card: [GIVEN_NAME_1], [SSN_1], mit Rehydration auf dem Client.

Ausdrücklich außerhalb des Anwendungsbereichs (Angaben der Card):

  • eigenständige Erkennung von Regierungs-IDs
  • indirekte/inferenzielle Identifier (Beispiel der Card: „rare disease + 5-digit ZIP" kann re-identifizieren)
  • adversarische Robustheit als Sicherheitsgarantie
  • Nicht-Latin-Schriften — Koreanisch, Han-Chinesisch, Japanisch, Arabisch, Kyrillisch und Devanagari erreichen laut Card ~14 % im Aggregat

Label-Taxonomie

Standardmäßig redigiert, von der deterministischen Schicht (vor dem Modell maskiert):

Label Beschreibung
SSN US-Sozialversicherungsnummern — strukturelle Validierung
CREDIT_CARD Zahlungskartennummern — Luhn-geprüft
EMAIL E-Mail-Adressen
URL URLs in Nutzerinhalten
IP_ADDRESS IPv4 / IPv6 / MAC-Adressen

Vom Token-Classification-Modell emittiert: GIVEN_NAME, SURNAME, PHONE, TAX_ID, BANK_ACCOUNT, ROUTING_NUMBER, GOVERNMENT_ID, PASSPORT, DRIVERS_LICENSE, BUILDING_NUMBER, STREET_NAME, SECONDARY_ADDRESS.

Standardmäßig behalten: CITY, STATE, ZIP_CODE. Die Card begründet das: grobe Geografie bleibt, die genaue Straßenzeile wird redigiert. Die Keep-Liste ist ein Compile-Time-Set (KEEP_LABELS in src/types.ts), kein Runtime-Flag.

Die Taxonomie ist bewusst atomar — kein grobes PERSON, STREET_ADDRESS, ADDRESS, ORGANIZATION, LOCATION, kein Catch-all SECRET. Daten, Alter und Einkommen werden absichtlich nicht als PII modelliert (Over-Redaktion ohne Privacy-Gewinn laut Card).

Evaluationsergebnisse (Fakten der Card)

Gepunktet wird das Gesamtsystem (Modell + deterministische Schicht) auf dem End-to-End-Pfad.

Held-out OpenPII-Testset, sieben Sprachen (30.000 Zeilen; 131.707 private Terme; 87.207 public Terme):

Slice Private Recall (Wilson 95 %) Public Retention Span F1 strict Latenz p50
Alle sieben Sprachen 98,42 % [98,35; 98,49] 91,69 % 0,528 6,6 ms
Englisch (11.569 Zeilen) 98,85 % 90,5 % 6,6 ms
Spanisch (3.234 Zeilen) 98,84 % 91,6 % 6,6 ms
Englisch + Spanisch 98,85 % 91,0 % 6,6 ms

Die Card beziffert die Leaks selbst: 2.082 von 131.707 privaten Termen auf dem Sieben-Sprachen-Test (1 von 64 Termen rutscht durch, bevor nachgelagerte Verteidigungen greifen).

Latenz: 6,6 ms p50 (Node ONNX/CPU über das 30k-Set); im Browser 3,9 ms p50 auf WebGPU (Apple Metal, p95 9,3 ms) und 12,6 ms auf WASM (p95 35,5 ms).

Pro Sprache liegen alle sieben im Band 9799 %; Niederländisch ist mit 97,21 % das niedrigste und laut Card für die nächsten Trainingszyklen markiert.

Handkuratierte Suites:

Suite Fälle Private Recall Public Retention
Domain intake 20 96,97 % [84,68; 99,46] 93,2 %
Adversarial (Homoglyph / Zero-Width / Leet / Splits / NFC-NFD / Casing / Prompt-Injection) 20 86,36 % [66,66; 95,25] 83,3 %
Fairness (Faker × 15 Namens-Traditionen × 5 Templates) 1.875 65,44 % [63,26; 67,56] 90,0 %

Bekannte Schwächen (Angaben der Card)

Fairness über Namens-Traditionen (1.875 Faker-Fälle, nur der Name variiert, Kontext konstant):

Tradition Locale Recall
Anglo en_US 99,9 %
Hispanic es_MX, es_ES 99,9 %
Francophone fr_FR 99,9 %
Germanic de_DE 99,9 %
Romance (Italian) it_IT 99,9 %
Lusophone pt_BR 99,9 %
Turkic tr_TR 99,9 %
Vietnamese vi_VN 99,2 %
Japanese ja_JP 45,6 %
Korean ko_KR 15,2 %
Han Chinese zh_CN 8,8 %
South Asian (Hindi) hi_IN 5,6 %
Arabic ar_AA 4,8 %
Slavic (Russian) ru_RU 2,4 %

Aggregiert nach Schrift: Latin-ASCII ~100 % (695/695), Latin mit Diakritika 99,8 % (429/430), Nicht-Latin-Schriften 13,7 % (103/750). Die Card nennt das „the most important regression we have identified" und hat die Fairness-Suite als stratifizierten Regressionstest in die Eval-Pipeline eingebaut.

Regierungs-IDs (nur Modell): Regierungs-IDs, Medicare-artige Identifier, USCIS-Receipts, A-Nummern, Pässe und Lizenzen tragen keine Checksumme — die deterministische Schicht erkennt sie nicht. Sie hängen vollständig am Modell, das laut Card ~67,6 % in einer strukturierten Probe fängt. Ausdrücklicher Hinweis: „Consumers should not assume the deterministic layer covers government IDs the way it covers SSNs and cards."

Adversarische Robustheit: Nicht zuverlässig gefangen werden Zero-Width-Zeichen zwischen jeder Ziffer einer SSN, Prompt-Injection-Text innerhalb des PII-Spans und kombinierte Angriffe. Rahmen der Card: „designed to protect users entering their own information in good faith from incidental disclosure to downstream services, not to defeat a motivated user actively trying to smuggle their own PII past the filter."

Wort-Fragmentierung bei langen Namen: Namen mit fünf oder mehr Subwords können fragmentieren und Recall auf dem letzten Subword verlieren.

Kalibrierung: ECE auf dem 30k-Testset 0,291 (Gesamtsystem) gegen 0,018 (Modell allein). Die Card erklärt den Unterschied als Artefakt der Vereinigung — die deterministische Schicht emittiert immer Score 1,0, was die Score-Verteilung bimodal macht.

Reproduzierbarkeit

Modellgewichte, deterministische Schicht und der TypeScript-Evaluationsharnisch stehen unter CC BY 4.0. Nutzung im Code laut Card:

import { createGuard } from "@nationaldesignstudio/rampart";

const guard = await createGuard();
const { text } = await guard.protect("My name is Alex Rivera and my SSN is 472-81-0094.");
// → "My name is [GIVEN_NAME_1] [SURNAME_1] and my SSN is [SSN_1]."

Trainingsdaten: drei Quellen — ein hauseigenes synthetisches Chat-Korpus (~250.000 Konversationen), ein hauseigenes OCR-Dokument-Korpus und das öffentliche ai4privacy/pii-masking-openpii-1.5m (vollständig, ~1,4 Mio. Trainingszeilen + 100.000 held-out).