a59184bfixed a hard-block that reached every emoji-composed document, and llm-ingestion-okf was told so -- while the fix sat untagged on main. A consumer cannot pin what has no tag, so the notice was a promise the repo had not kept. SURFACES MOVED (the eight the 0.5.0 sweep established, plus the ninth verified) pyproject.toml 0.6.0 -> 0.6.1 __init__.py 0.6.0 -> 0.6.1 CHANGELOG.md [0.6.1] entry, [Unreleased] reset to "Nothing yet." README.md badge, install tag @v0.6.1 docs/ADOPTION-BRIEF.md `v0.6.0` x2, and 727 -> 736 passing CLAUDE.md one clause: ZWJ judged by context, not identity SECURITY.md `0.6.x` -- still true at 0.6.1, verified, not moved docs/BRIEF.md `v0.6 (alpha)` -- likewise README.md:36 `v0.6`, alpha -- likewise forge description re-verified THIS release: 178 codepoints, no version claim. Not inherited from 0.6.0's check. PATCH, NOT MINOR -- and it was asked, not assumed.6bcb898made "loosens the upload door" the criterion for minor, and this loosens it too, so the reading was put to the operator with the count rather than settled quietly. 0.6.0 was a policy choice (`<base>` left the active name set by decision); this restores a contract the module already published, against a class never meant to be blocked. Measured loosening: 1 document of 1126 across the three FP populations (reference-corpus 1/389, vendor-harvest 0/187, generated-notes 0/550), against 0.6.0's 25 + 2 + 2. Operator chose patch. VERIFIED ON THE BUMPED TREE, NOT THE PRE-BUMP ONE 736 passed; coverage 128/128 recall, 6/6 documented gaps hold `git grep '0\.6\.0'` returns provenance only -- LIMITATIONS history, the census script, source docstrings, tests, README's pre-0.6.0 numbers docs/LIMITATIONS.md: 34 items, README says 34 __version__ and pyproject agree at 0.6.1 no tracked file carries a stale current-state version or test count The sweep tool itself was wrong first: `git grep -E '\b727\b'` returns nothing, because POSIX ERE has no `\b`. An empty result read as "clean" when the claim was there. Every sweep above is plain `git grep`. Still to prove before this is announced: a scratch-venv install at the tag with the resolved version asserted -- the README line above is only true once v0.6.1 resolves.
38 lines
1.5 KiB
TOML
38 lines
1.5 KiB
TOML
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[project]
|
|
name = "llm-ingestion-guard"
|
|
version = "0.6.1"
|
|
description = "Write-time defensive layer for Python pipelines that persist LLM output: sanitize, fence, tool-less quarantined transform, capability isolation, scan before persist, fail-secure."
|
|
readme = "README.md"
|
|
requires-python = ">=3.10"
|
|
license = { file = "LICENSE" }
|
|
authors = [{ name = "Kjell Tore Guttormsen" }]
|
|
keywords = ["llm", "security", "prompt-injection", "rag", "ingestion", "guardrails", "write-time"]
|
|
classifiers = [
|
|
"Development Status :: 3 - Alpha",
|
|
"Intended Audience :: Developers",
|
|
"License :: OSI Approved :: MIT License",
|
|
"Programming Language :: Python :: 3",
|
|
"Topic :: Security",
|
|
]
|
|
dependencies = [] # stdlib-only core — see design principle 1
|
|
|
|
[project.optional-dependencies]
|
|
ml = [] # pluggable embedding/classifier detectors (placeholder)
|
|
judge = [] # LLM-judge / source-grounding implementation (placeholder)
|
|
# Showcase-only extraction parsers for the two-stage OKF inbox demo (docs/PLAN.md
|
|
# §247). Deliberately in `dev`, NOT the core `dependencies` (which stays []) and
|
|
# NOT a public `[extract]` extra — the front-end is an in-repo demonstration, not
|
|
# v1 shipped code. They pull lxml/Pillow transitively; that footprint is dev-only.
|
|
dev = ["pytest>=8", "python-docx>=1.2", "python-pptx>=1.0", "openpyxl>=3.1"]
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/llm_ingestion_guard"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
pythonpath = ["src"]
|
|
addopts = "-q"
|