docs(readme,adoption-brief): advertise v0.4.0, now that it installs
The tag was pushed first and installed into a clean venv before this commit: 0.4.0 resolves from the forge, both new caps fire, and the transform raise is present. Only then does the install block point at it — a README that advertises a tag nobody has resolved is how an install line goes stale without anyone noticing. The adoption brief was three releases behind (`v0.2`, 126 classes, 4 gaps, 522 tests). Re-measured rather than incremented: 128/128, 6/6, 703 passing.
This commit is contained in:
parent
73ad5e1ed8
commit
3c56d50e05
2 changed files with 15 additions and 14 deletions
21
README.md
21
README.md
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
Write-time defensive layer for Python pipelines that persist LLM output: sanitize, fence, tool-less quarantined transform, capability isolation, scan before persist, fail-secure.
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
|
@ -43,7 +43,7 @@ may still change. There are real limitations, stated plainly below; read them.
|
|||
Not on PyPI. The guard is distributed from its Forgejo origin — pin a release tag:
|
||||
|
||||
```bash
|
||||
pip install "llm-ingestion-guard @ git+https://git.fromaitochitta.com/open/llm-ingestion-pipeline-security.git@v0.3.4"
|
||||
pip install "llm-ingestion-guard @ git+https://git.fromaitochitta.com/open/llm-ingestion-pipeline-security.git@v0.4.0"
|
||||
```
|
||||
|
||||
The `open/` mirror is anonymously readable, so CI needs no deploy key, token, or
|
||||
|
|
@ -99,16 +99,17 @@ the disposition is `FAIL_SECURE`, never a silent persist. Pass
|
|||
together with a transform failure is treated as a probable forced-fallback attack
|
||||
and halts regardless of trust tier.
|
||||
|
||||
**Unreleased — on `main`, not in `v0.3.4`.** The tag advertised above does not do
|
||||
this yet; the version it lands under is still open. `prepare_input` fails
|
||||
**New in `v0.4.0`, and the reason for the major-line bump.** `prepare_input` fails
|
||||
**closed** on size too: above `MAX_INPUT_CHARS` (1 000 000) it raises
|
||||
`OversizeInputError`, a `ContractViolation` subclass, rather than returning a
|
||||
half-sanitized document. The scanners bound their work by
|
||||
reading a prefix and flagging, which costs only detection in the tail; a
|
||||
transform returns *content*, where the same move would either drop your data
|
||||
silently or hand back an untransformed tail — the exact place an attacker would
|
||||
put the payload. Catch it where you catch your other ingest refusals; the
|
||||
exception carries sizes and the refusing surface, never any of the input.
|
||||
half-sanitized document. If you call `sanitize` / `fence` / `neutralize` on
|
||||
documents that large, this is the upgrade that needs a `try` — everything else in
|
||||
0.4.0 is additive. The scanners bound their work differently: they read a prefix
|
||||
and flag, which costs only detection in the tail. A transform returns *content*,
|
||||
where the same move would either drop your data silently or hand back an
|
||||
untransformed tail — the exact place an attacker would put the payload. Catch it
|
||||
where you catch your other ingest refusals; the exception carries sizes and the
|
||||
refusing surface, never any of the input.
|
||||
|
||||
Every primitive is also exported for pipelines that compose the checklist
|
||||
themselves — `sanitize`, `scan_lexicon`, `scan_entropy`, `scan_output`,
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
especially one converging on Google's Open Knowledge Format (OKF v0.1) — and needs
|
||||
to decide **when** and **where** to add a write-time ingestion guard.
|
||||
|
||||
**Status of the guard:** `v0.2` (alpha). Stdlib-only core, framework-agnostic.
|
||||
**Status of the guard:** `v0.4.0` (alpha). Stdlib-only core, framework-agnostic.
|
||||
Public API may still change. Read the known-limitations section before you rely
|
||||
on it.
|
||||
|
||||
|
|
@ -140,9 +140,9 @@ live payload:
|
|||
python -m llm_ingestion_guard.coverage # exit 0 = all as documented
|
||||
```
|
||||
|
||||
As of `v0.2`: **126 / 126 defended classes demonstrated (recall 100%)** and **4 /
|
||||
4 documented gaps still hold** (a *closed* gap fails the test, forcing a doc
|
||||
update). The matrix is the single source of truth for the test suite (**522
|
||||
As of `v0.4.0`: **128 / 128 defended classes demonstrated (recall 100%)** and **6 /
|
||||
6 documented gaps still hold** (a *closed* gap fails the test, forcing a doc
|
||||
update). The matrix is the single source of truth for the test suite (**703
|
||||
passing**), which also asserts total recall, that every lexicon pattern has a
|
||||
case (so the matrix cannot fall behind the lexicon), the full LLM02 secret-egress
|
||||
set, and the container-layer front-end (CSV formula-injection, zip-slip/bomb,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue