Releases: dta-au/errorworks
Releases · dta-au/errorworks
Release list
v0.2.0 — ChaosSMTP, ChaosBlob, engine/MCP fixes
Two new chaos plugins, three engine/MCP fixes, one breaking default change.
See CHANGELOG.md for the full notes.
Highlights
Added
- ChaosBlob — S3-compatible-ish object-storage chaos server (PUT/GET/HEAD/DELETE/ListObjectsV2, blob-specific fault injection, metrics, CLI, presets, fixture, docs).
- ChaosSMTP — outbound-email chaos server. Stage-aware error injection across MAIL/RCPT/DATA, slow-reply latency, accepted-but-dropped messages, three capture modes (
metadata/discard/full), admin app, immutable captured-header policy, metrics, CLI, presets, fixture, docs. Mail is never relayed.
Changed (breaking)
server.workersdefault is now1(was4). Multi-worker mode is now opt-in and requires a file-backedmetrics.database; the previous default silently fragmented metrics across worker processes. Top-level config validators now rejectworkers > 1combined with an in-memory metrics database.
Fixed
- Engine: explicit
MalformedContentLengthrejection (closes the silent size-guard bypass caused byRequestBodyTooLargesubclassingValueError). - Engine: graceful config-handoff fallback when the temp file is gone (shared
engine/config_handoff.pyhelper used by blob/llm/web). - LLM MCP
analyze_latency: percentiles now computed over the full population (was the smallest-100 lower tail). - LLM completions: non-object JSON body returns
400 invalid_request_error. - Admin
/admin/configPOST: unknown sections and non-object values rejected with400. - LLM
X-Fake-Template: hardened against helper errors;random_words(...)hard-capped to 10 000 words. - MCP SQL
query(): row cap enforced viafetchmany, defeatingLIMIT -1bypasses. - MCP analyzer: now truly read-only (
file:...?mode=ro, no WAL/SHM side files).
Removed (security)
- Pre-authorised
rm -rf $REPO/.git && git initpermission entry from.claude/settings.local.json.
v0.1.3
Changed
- Dependency: Loosen
starlettecap from<1to<2to support Starlette 1.x.
Starlette 1.0 removed deprecated APIs that errorworks does not use; the full test
suite (1128 tests) passes against starlette 1.1.0 with no source changes. This
unblocks downstream consumers that need to pull starlette 1.x.
Full Changelog: v0.1.2...v0.1.3
v0.1.1
Documentation & Branding
Added
- Professional README with badges, value proposition, quickstart, and architecture overview
- MkDocs-Material documentation site with DTA brand theme (Getting Started, Guides, Reference, Architecture)
- GitHub Actions workflow for automatic docs deployment to GitHub Pages
- Community files: CONTRIBUTING.md, SECURITY.md, CODE_OF_CONDUCT.md
- GitHub issue templates (bug report, feature request) and PR template
- Pre-commit configuration (ruff lint/format, mypy)
- PyPI project URLs (Documentation, Changelog, Bug Tracker, Homepage)
Changed
- Docs directory excluded from sdist distribution
Fixed
- Unused
DEFAULT_MEMORY_DBimports in CLI modules - Minor lint issues (unsorted
__all__, raw regex strings, trailing whitespace)
Full Changelog: v0.1.0...v0.1.1
v0.1.0
errorworks v0.1.0
Initial release of the errorworks chaos-testing framework.
Features
- ChaosLLM: Fake OpenAI-compatible server with fault injection (HTTP errors, connection failures, malformed responses)
- ChaosWeb: Fake web server for scraping resilience tests (SSRF redirects, encoding mismatches, content malformations)
- Shared engine: Composable InjectionEngine, MetricsStore, LatencySimulator, ConfigLoader
- MCP server: ChaosLLM metrics analysis via Model Context Protocol
- Pytest fixtures: In-process test fixtures with marker-based configuration
- Preset system: YAML presets with deep-merge configuration
Install
pip install errorworks