Files
boc/intelligence/build-b2b3-bedrock-claude.md
T
Bernt bae705aa97 ARCHITECTURE: NFC roadmap, edge AI, audit logging
- 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
2026-06-29 16:24:48 +00:00

129 lines
5.1 KiB
Markdown

# 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):**
```json
{"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.warn` med 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: FAIL` med `harm: 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:
```bash
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)
```bash
# 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):
```bash
# Via SSM send-command med AWS-RunShellScript
# Kopiera filen, kör node --check
```
---
## 6. Antaganden (ej verifierat)
- `@aws-sdk/client-bedrock-runtime` och `@anthropic-ai/sdk` finns 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/amos` har `bedrock:InvokeModel``eu.anthropic.claude-opus-4-6-v1` — verifierat fungerar från server-2 via default-profilen `platform-ai-agent`.
---
*Genererat av subagent build-b2b3. Full red-team EJ körd (kostnadsskydd + ESLM mid-omträning).*