diff --git a/docs/ingestion-security-brief-2026-07.md b/docs/ingestion-security-brief-2026-07.md index e416f71..e7eda70 100644 --- a/docs/ingestion-security-brief-2026-07.md +++ b/docs/ingestion-security-brief-2026-07.md @@ -147,6 +147,37 @@ at two existing chokepoints so it runs regardless of any hook: quarantine, operator adjudicates, never auto-committed. No new mechanism — this reuses "never auto-fix KB — flag → human → fix." +## 5b. Layer A-aktiveringsprotokoll (R7-gate) + +R7 (og enhver senere fetch-økt) starter **ALDRI** før denne sjekklisten passerer. Den +operasjonaliserer Layer A som en hard R7-gate, ikke bare en aktiveringsregel: + +1. **Aktiver hooken.** Slå på `llm-security`s `post-mcp-verify` i `~/.claude/settings.json` + (PostToolUse på `microsoft_docs_fetch`). Dette er en konfig-endring i operatørens + `settings.json`, ikke i plugin-repoet. +2. **Verifiser at den fyrer.** Kjør ÉN live **foreground** `microsoft_docs_fetch` og bekreft + at `post-mcp-verify` faktisk fyrte (observer hook-output). En hook som ikke observeres fyre + teller som IKKE aktiv. +3. **Kompenserende skann hvis den ikke fyrer.** Fyrer den ikke (headless / GH #36071), kjøres + den kompenserende deterministiske skannen **foreground** på den komponerte artefakten FØR + write: Layer B (`scan-adversarial-content.mjs`) + Step 3s pre-write unicode/carrier-scan + (`detectAdversarial` uten `path` → temp-fil, R6 Step 3). Denne er alltid-på og autoritativ + (§5 Layer B); Layer A er kun tidlig-varsling. +4. **Frossen judge → foreground er obligatorisk.** Det fetchede innholdet **prompt-fences IKKE** + inn i judgen: v3.1-judgen er frosset (G1-adoptert), og å legge til fencing ville være en + judge-bump (Non-goal §7, krever re-måling av P/R). Uten judge-side fencing er **foreground + fetch obligatorisk** — det er det som lar Layer A-hooken (og operatørens øye) se innholdet + før judgen. (§5s fencing-ambisjon gjelder transform-steget, ikke den frosne judgen.) +5. **Bekreft Layer B-substratet før R7.** `llm-security`-sibling MÅ være til stede (ev. via + `LLM_SECURITY_ROOT`) — ellers fail-closer Layer B og **BLOCKer alt** (gaten blir en vegg). + Bekreft at `../llm-security/scanners/…` løser før første fetch. + +**R7 starter KUN når 1–5 er grønne.** + +**Rollback:** aktiveringen i pkt. 1 er reverserbar — fjern `post-mcp-verify`-oppføringen fra +`~/.claude/settings.json` (og ev. `LLM_SECURITY_ROOT`) for å ta ned Layer A igjen. Layer B +(deterministisk, in-repo) er upåvirket av denne rollback-en. + ## 6. No local solutions — the deterministic scanner is a shared asset Per house policy (*ingen lokale løsninger*, *showcase reusable patterns*): the