Skip to content

Releases: dta-au/errorworks

v0.2.0 — ChaosSMTP, ChaosBlob, engine/MCP fixes

Choose a tag to compare

@johnm-dta johnm-dta released this 24 May 18:05

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.workers default is now 1 (was 4). Multi-worker mode is now opt-in and requires a file-backed metrics.database; the previous default silently fragmented metrics across worker processes. Top-level config validators now reject workers > 1 combined with an in-memory metrics database.

Fixed

  • Engine: explicit MalformedContentLength rejection (closes the silent size-guard bypass caused by RequestBodyTooLarge subclassing ValueError).
  • Engine: graceful config-handoff fallback when the temp file is gone (shared engine/config_handoff.py helper 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/config POST: unknown sections and non-object values rejected with 400.
  • LLM X-Fake-Template: hardened against helper errors; random_words(...) hard-capped to 10 000 words.
  • MCP SQL query(): row cap enforced via fetchmany, defeating LIMIT -1 bypasses.
  • MCP analyzer: now truly read-only (file:...?mode=ro, no WAL/SHM side files).

Removed (security)

  • Pre-authorised rm -rf $REPO/.git && git init permission entry from .claude/settings.local.json.

v0.1.3

Choose a tag to compare

@johnm-dta johnm-dta released this 24 May 02:38

Changed

  • Dependency: Loosen starlette cap from <1 to <2 to 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

Choose a tag to compare

@johnm-dta johnm-dta released this 16 Mar 14:15

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_DB imports in CLI modules
  • Minor lint issues (unsorted __all__, raw regex strings, trailing whitespace)

Full Changelog: v0.1.0...v0.1.1

v0.1.0

Choose a tag to compare

@johnm-dta johnm-dta released this 14 Mar 22:40

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