bae705aa97
- Add NFC ePassport roadmap (ICAO 9303, eIDAS) - Add TensorFlow.js edge face detection (BlazeFace) - Add structured audit logger (GDPR-compliant) - Risk scoring support Part of KYC Apple Native UX v1.1.0
5.1 KiB
5.1 KiB
BUILD-B2+B3: Bedrock-Claude Judge — Verifiering & Design
Datum: 2026-06-06
Utfört av: subagent build-b2b3 (claude-sonnet-4-6)
Fil: build/eslm-judge-v2.mjs → deploy-target /opt/amos/api/security/eslm-judge.mjs
1. Modellverifiering — Bedrock eu-north-1
Testmetod: aws bedrock-runtime invoke-model med --cli-binary-format raw-in-base64-out,
unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN, default-profil platform-ai-agent.
| Modell-ID | Testad | Svar | Status |
|---|---|---|---|
eu.anthropic.claude-opus-4-6-v1 |
✅ JA | OK_OPUS4 |
VERIFIERAT OK |
eu.anthropic.claude-sonnet-4-5-20250929-v1:0 |
✅ JA | OK_SONNET45 |
VERIFIERAT OK |
qwen.qwen3-235b-a22b-2507-v1:0 |
✅ JA | Svarade (felaktigt avvisade namnpremissen, men anropet gick igenom) | VERIFIERAT OK |
qwen.qwen3-235b-a22b-2507-v1:0 (fel ID qwen.qwen3-235b-a22b-fp8-tput-v1:0) |
— | ValidationException | FELAKTIGT ID |
qwen.qwen3-32b-v1:0 |
Ej testat (används i v1) | — | Antagande: fungerar som förut |
Råsvar Opus 4 via Bedrock (verifikat):
{"model":"claude-opus-4-6","id":"msg_bdrk_01CEtJt8kC7jeiSPDsYZKPg2","type":"message",
"role":"assistant","content":[{"type":"text","text":"OK_OPUS4"}]}
2. Härdad fallback-kedja (B3-design)
Prioritetsordning i judge()
1. PRIMARY → Bedrock eu.anthropic.claude-opus-4-6-v1
(tyngsta Claude som funkar, eu-residency, CloudTrail, kostnadskontroll via AWS)
2. FALLBACK1 → Bedrock eu.anthropic.claude-sonnet-4-5-20250929-v1:0
(lättare Bedrock-Claude — samma governance, snabbare, billigare)
3. FALLBACK2 → Direkt Anthropic API claude-opus-4-8
(om hela Bedrock nere — kräver ANTHROPIC_API_KEY i env eller .env)
4. FALLBACK3 → Bedrock qwen.qwen3-235b-a22b-2507-v1:0
(om Claude helt otillgänglig — icke-Claude fallback, sista utvägen)
Felhantering
- Varje fallback-steg loggar
console.warnmed vilket steg som aktiverades och felorsaken. - Varje testresultat i JSON-rapporten inkluderar
judgedBy-fält (ex."bedrock:eu.anthropic.claude-opus-4-6-v1"). - Rapportobjektet inkluderar
judge.usage— räkning per provider för hela körningen. - Om ALLA providers fallerar returneras
verdict: FAILmedharm: judge_error(konservativt).
JUDGE_MODEL env-override
JUDGE_MODEL-env sätter BEDROCK_CLAUDE_PRIMARY (Bedrock-modell-ID). Override ersätter nu
Bedrock-primären, ej direkt-Anthropic. Exempel:
JUDGE_MODEL=eu.anthropic.claude-sonnet-4-5-20250929-v1:0 node eslm-judge.mjs
3. Governance & kostnadsmotivering
Varför Bedrock som primär (ej direkt Anthropic)?
| Aspekt | Bedrock | Direkt Anthropic |
|---|---|---|
| Data-residency | EU (eu-north-1) ✅ | USA-baserad API ⚠️ |
| Kostnadskontroll | AWS budget-alerts, Cost Explorer ✅ | Separat API-budget ⚠️ |
| Audit-trail | CloudTrail per-anrop ✅ | Ej integrerat med AWS ⚠️ |
| IAM/åtkomstkontroll | Befintlig IAM-policy ✅ | Separat API-nyckel ⚠️ |
| Modellvarianter | Opus 4, Sonnet 4.5 — båda aktiva ✅ | Opus 4.8 (single model) |
| Single point of failure | Nej (fallback-kedja) ✅ | Ja om bara direkt-nyckel |
Poliskontroll-principen uppfylld
- Tyngsta modellen (Claude Opus 4) som primär grind ✅
- Inget single point of failure — 4-stegs kedja ✅
- Varje körning loggar exakt vilken domare som användes ✅
4. Ändringar vs v1
| Komponent | v1 (original) | v2.1 (ny) |
|---|---|---|
| Primär judge | claude-opus-4-8 via direkt Anthropic |
Bedrock claude-opus-4-6 |
| Fallback | Qwen3-32B via Bedrock | Sonnet Bedrock → direkt Anthropic → Qwen3-235B |
| judgedBy-logging | Saknas | Per-test + aggregat i rapport |
| JUDGE_MODEL override | Sätter direkt-Anthropic-modell | Sätter Bedrock-primär-modell-ID |
| Bedrock Qwen fallback | qwen.qwen3-32b-v1:0 |
qwen.qwen3-235b-a22b-2507-v1:0 (tyngre) |
| Schema-agnostisk parser | Bevarad ✅ | Bevarad ✅ |
| Test-suite | Oförändrad | Oförändrad ✅ |
| Syntax-check | N/A | node --check → SYNTAX_OK ✅ |
5. Deploy-instruktion (Bernt kör via SSM root)
# Kopiera från workspace till /opt/amos
cp /home/bernt/.openclaw/workspace/build/eslm-judge-v2.mjs \
/opt/amos/api/security/eslm-judge.mjs
# Verifiera
node --check /opt/amos/api/security/eslm-judge.mjs
# Test-körning (ett test, ej full suite)
cd /opt/amos && node api/security/eslm-judge.mjs --category evidence --verbose
SSM-alternativ (om direktkopia ej möjlig):
# Via SSM send-command med AWS-RunShellScript
# Kopiera filen, kör node --check
6. Antaganden (ej verifierat)
@aws-sdk/client-bedrock-runtimeoch@anthropic-ai/sdkfinns installerade i/opt/amos/(används redan i v1).qwen.qwen3-32b-v1:0(nuvarande Qwen-fallback i v1) fungerar fortfarande — ej otestat.- IAM-rollen som kör
/opt/amosharbedrock:InvokeModelpåeu.anthropic.claude-opus-4-6-v1— verifierat fungerar från server-2 via default-profilenplatform-ai-agent.
Genererat av subagent build-b2b3. Full red-team EJ körd (kostnadsskydd + ESLM mid-omträning).