1
0
Fork 0

docs(plan): new direction - keep catalogs current over time and close the documented gaps

This commit is contained in:
Kjell Tore Guttormsen 2026-11-01 08:36:54 +01:00
commit 136d9311e5
Signed by: ktg
SSH key fingerprint: SHA256:JakMjO6FTBBzN0Bhfj9saOoEjaFxlSdYuZQQpM/lF9Q

View file

@ -1,6 +1,106 @@
# PLAN — `llm-ingestion-guard`
## Retning (godkjent av operatøren 28.10.2026)
## Retning (godkjent av operatøren 01.11.2026)
> «llm-ingestion-guard holder seg på nyeste utgave av hver trusselkatalog over tid,
> ikke bare én gang. Hvert dokumentert hull som kan lukkes uten nye falske alarmer
> på rene dokumenter, blir lukket, og resten står med begrunnelse.»
Økta foreslo formuleringen, og operatøren svarte 01.11 «Ja til din anbefaling».
Den er godkjent ordrett. Bakgrunnen var at retningen fra 28.10 var nådd, men to
ting sto igjen. Katalogkravet var bare sjekket én gang (31.10), og de sju
dokumenterte hullene var registrert uten at noen hadde prøvd å lukke dem. Samme
svar avgjorde at de 16 juli-commitene med øktlenker blir stående.
Lest slik (antakelser, ikke operatørens ord):
- «Over tid» betyr en vakt som kjører av seg selv hver uke, pluss en regel som
stopper en release med en katalogsjekk eldre enn 30 dager. Vakten gjenbrukes fra
llm-security, slik retningen fra 28.10 ønsket («helst gjenbrukt»).
- «Dokumentert hull» betyr de sju i LIMITATIONS § «The seven documented gaps», som
dekningsmatrisen holder. Resten av LIMITATIONS er innrømmelser og målte rester,
ikke hull, og telles ikke.
- «Begrunnelse» betyr en målt begrunnelse: regelen som ble prøvd, og hvor mange
falske alarmer den ga, eller hvorfor ingen regel av denne typen kan se klassen.
- Ikke tatt med (operatøren valgte bort «bare rydding»): blokk-skalaren `a #b`,
støyen i ReDoS-sveipet og repo-standard-sjekken. De står under § V.5.
**Dekket i:** katalogene over tid → § V.2 rad 1, økt 2 · hullene → rad 2, økt 1
(måling) og økt 3 og utover (lukking) · ferdig → siste økt.
---
# Vedlikehold 2026-11 (v1.8.0 →)
## V.1 Målt 01.11.2026 på v1.8.0 (`067e7ae`), før noe er bygd
- **Katalogene:** 16 oppføringer i `docs/threat-2026/catalogs.json`. Alle 16 er
sjekket for hånd 31.10. **0 av 16** sjekkes av en automatisk vakt: llm-security
sin utgavevakt (`scripts/edition-watch.mjs`, en ukentlig launchd-jobb hver mandag)
har 58 kilder og 0 av dem er fra dette repoet. Ingen test stopper en release med en
gammel sjekkdato.
- **Hullene:** 7, holdt av `tests/test_coverage_matrix.py::test_documented_gap_still_holds`
(en lukket sak gjør testen rød). Ingen av de sju har en målt begrunnelse. Det som
står, er «by design» eller «utenfor det token-analyse kan se». Første vurdering
(ikke målt, bare til å ordne økt 1): 1 (hex-innpakket hemmelighet) og 4 (bare første
treff per mønster) ser byggbare ut. 5 og 6 (ren beaconing, kort ugjennomsiktig
URL-ledd) er kostbare i falske alarmer. 2, 3 og 7 (falske fakta, alene-HIGH i
betrodd prosa, oppgave uten markør) er trolig ikke lukkbare med denne typen regel.
## V.2 Ferdig-kriteriet
| # | Måling | Nevner | Målt 01.11 (v1.8.0) | Ferdig |
|---|---|---|---|---|
| 1 | Kataloger fulgt over tid | de **16** i `catalogs.json`; kan utvides, krymper aldri uten operatørens ja | **0 av 16** under automatisk vakt; ingen release-regel | Hver av de 16 sjekkes av vakten, ELLER (hvis ingen maskin kan svare for den) står den som manuell med begrunnelse. Vakten har kjørt de siste 7 dagene og melder en kjent utdatert kopi (katalogene slik v1.4.1 brukte dem) som bak. En test stopper en release der en manuell sjekk er eldre enn 30 dager før releasedatoen |
| 2 | Dokumenterte hull | de **7** i LIMITATIONS, frosset i økt 1 | **0 lukket, 0 med målt begrunnelse** | Hvert hull er lukket (saken fanges, og testen er flyttet fra hull til fanget), eller det står med målt begrunnelse i LIMITATIONS |
**Vaktregel, ikke mål (uendret fra § T.2):** ingen nye falske alarmer på de tre
FP-korpusene og det pinnede OKF-korpuset (6/53). Testsuiten, dekningsmatrisen,
ReDoS-sveipet og census er grønne på hver release. En regel som lukker et hull
men gir én ny alarm på rene dokumenter, lukker ikke hullet. Den blir en målt
begrunnelse.
**Ikke framme hvis én:** en katalog er verken fulgt av vakten eller begrunnet som
manuell · vakten har ikke kjørt de siste 7 dagene · et hull står uten målt
begrunnelse. Går to økter på rad uten at et av tallene flytter seg, legges det
fram for operatøren.
## V.3 Øktene
**Økt 1: måling og frysing.** Rad 1: avgjør for hver av de 16 hvilken probe-klasse i
vakten som kan svare, eller hvorfor ingen kan. Rad 2: frys de sju (fil + sha256),
skriv den billigste regelen for hvert hull og mål falske alarmer på korpusene FØR
noe bygges. Resultatet ordner rekkefølgen for økt 3 og utover. Ingen release.
**Økt 2: vakten.** Kildelista for de 16 i vaktens format i dette repoet. Kjent
positiv: vakten melder en frosset v1.4.1-kopi som bak. Ukentlig kjøring avtales med
llm-security (det er deres jobb og deres skript, så det avtales med dem og
endres ikke i deres repo herfra). Release-regelen blir en test. Release 1.9.0
hvis noe utgitt endres, ellers bare commit.
**Økt 3 og utover: ett hull per økt,** i den rekkefølgen økt 1 målte. Hver lukking er
en minor-release med beskjed til brukerne (ny deteksjon = atferdsendring). Et hull
som ikke kan lukkes uten falske alarmer får sin målte begrunnelse samme økt.
**Siste økt: sluttmåling.** Rad 1 og 2 telles på siste release med de frosne
nevnerne, og vakten må ha kjørt de siste 7 dagene.
## V.4 Hva som er avgjort
- Juli-commitene med øktlenker blir stående (operatøren 01.11).
- Vakten gjenbrukes fra llm-security og skrives ikke på nytt i Python. Den er
vedlikeholdsverktøy, ikke en del av pakken, så stdlib-regelen for kjernen gjelder
ikke.
## V.5 Utenfor retningen
- Blokk-skalar `a #b` gir `'a #b'` der YAML gir `'a'` (gammelt avvik).
- ReDoS-sveipet gir 1–10 tilfeldige tidsflagg per kjøring (exit 0).
- repo-standard er ikke kjørt på den offentlige flaten.
- De fire angrepene utenfor (X01–X04) står utenfor med grunn, se § T.3. De er ikke hull.
---
## Forrige retning (godkjent av operatøren 28.10.2026, nådd 31.10)
> «llm-ingestion-guard bygger på nyeste utgave av hver trusselkatalog den viser til,
> hver med dato for siste sjekk og kildelenke. Ingen funn eller tekst bruker et