v0.0.52
Pain001 Release v0.0.52
Release Date: 2026-06-18
Tag: v0.0.52
Python: 3.10+
Status: Stable
Executive Summary
A companion-packages release. The MCP and LSP servers added in
v0.0.51 still ship in-tree (so pip install "pain001[mcp]" and pip install "pain001[lsp]" keep working), and they now ship alongside two
new standalone sibling packages of the same name. Users who only
want the agent surface or the editor surface can install just that
piece without pulling in the full core.
Versioning is aligned across the three packages: pain001,
pain001-mcp, and pain001-lsp all release under matching numbers.
What's in v0.0.52 at a glance
pain001-mcpcompanion package — a FastMCP Model Context
Protocol server (pip install pain001-mcp, runpain001-mcp).
Eleven agent tools covering schema discovery, validation, generation
(sync + async + from-file), supported-format discovery,camt.053and
pain.002parsing, plus parity toolsinspect_templateand
validate_payment_scheme, an MCP resource
pain001://schema/{message_type}, and abuild_payment_batch
prompt. Ships a multi-stage Dockerfile and a 100% line+branch+docstring
coverage gate.pain001-lspcompanion package — apyglsLanguage Server
(pip install pain001-lsp, runpain001-lsp). Diagnostics,
completion, hover, and a multi-record "add missing required fields"
code action; both JSON-record and CSV modes (the CSV engine
is the in-treepain001.lsp.diagnostics). Supports both startup
(initializationOptions.messageType) and live
(workspace/didChangeConfiguration) message-type overrides.- Console script rename — the in-tree entry points are renamed to
pain001-mcp-builtinandpain001-lsp-builtinso the canonical
command names (pain001-mcp,pain001-lsp) belong to the standalone
packages when both are installed. Python import paths
(pain001.mcp.server,pain001.lsp.server,
pain001.lsp.diagnostics) are unchanged.
Bug Fixes
This release also clears every then-open code-scanning alert on the
repo (12 total, including one HIGH path-injection report and several
notes):
- Refactored
pain001/api/_resolve_generation_pathsinto two named
sanitiser helpers (_gate_output_dirusingos.path.realpath+
os.path.commonpath,_sanitise_message_typedoing an explicit
allow-list check). Both helpers are registered with the existing
CodeQLpain001-securitymodel so the taint tracker treats their
return values as sanitised. - Restored eight
def test_streaming_*(self)methods to
class TestStreamingLoadersintests/test_streaming_loaders.py.
They had been mis-indented inside the body of a top-level test
function after a prior refactor and were silently skipped (now they
run; collection grew from 6 to 14 tests in that file). - Removed bare
... # pragma: no coverellipsis-as-statement bodies
from theJobStoreProtocol stubs inpain001/api/job_store.py;
the docstring is the sole body content (still valid for Protocols).
Migration Notes
The two standalone packages are independent installs, not
replacements:
| Want | Install | Run |
|---|---|---|
| Core library only | pip install pain001 |
pain001 ... |
| Core + in-tree MCP | pip install "pain001[mcp]" |
pain001-mcp-builtin |
| Core + in-tree LSP | pip install "pain001[lsp]" |
pain001-lsp-builtin |
| Standalone MCP | pip install pain001-mcp |
pain001-mcp |
| Standalone LSP | pip install pain001-lsp |
pain001-lsp |
Both pain001-mcp and pain001-lsp depend on pain001 >= 0.0.52.
Upgrade
pip install --upgrade pain001
# Plus, optionally:
pip install pain001-mcp pain001-lsp