Changelog
v0.5.0 — 2026-05
OAuth auth, PySpark reader, quell pr, --no-llm, GitHub Actions installer
quell auth login— OAuth 2.0 PKCE browser flow, stores credentials at~/.quell/credentials.json(chmod 600). Single-session enforcement server-side.quell auth logout/quell auth status— revoke token and check session stateQUELL_API_KEYenv var — zero-config CI auth without browser- PySpark schema reader — AST-only
StructTypeparsing, nopysparkimport required at scan time. GeneratesNOT_NULLrequirements for non-nullable columns andTYPE_CHECKrequirements for all columns. NOT_NULLandTYPE_CHECKConstraintKinds — rule engine generatespytest.raises/assertSchemaEqualtests; auto-createsconftest.pywith session-scopedSparkSessionquell pr <N>— fetches PR diff from GitHub API, runs spec readers on changed Python files, posts formatted comment with score emoji and gap table--no-llmflag onquell check— disables all LLM calls, forces rule-based only. Prints "Your code never left your machine." after--fix.--format jsononquell check— machine-readable output for CI scripts- Method column in
quell checkoutput — shows[rule-based, no network]or[llm]per requirement quell install --hook— writes pre-commit config to user's projectquell install --pr— writes GitHub Actions workflow YAML for PR comments- Zero-config default —
quell checkworks with nopyproject.toml(defaults to rule-based, no LLM) pip install quelltest[pyspark]— optional extra for running generated PySpark tests
v0.4.4 — 2026-05
Rule engine improvements — 75% score on real-world projects
must_raisetests now use non-existent paths for Path parameters, correctly triggeringFileNotFoundErrorand similar exceptionssig_inspector: added stubs forCallable[..., T](lambda: None),logging.LogRecord,datetime.datetime,datetime.date,re.Pattern- Violation injector: replaces ALL non-None
returnstatements in the target function (not just the first), fixingdoesnt_catch_violationfor functions with early-return paths doesnt_catch_violationcount dropped from 6 → 0 on the reference projectunknown_type_frequencycleared — no more unknown stubs for common stdlib types
v0.4.3 — 2026-05
quell --version and version sync
- Added
--version/-Vflag to the CLI (quell --versionnow works) - Synced
quell.__version__withpyproject.toml(was stale at0.1.0)
v0.4.2 — 2026-05
Targeted violation injection and optional-return detection
- Violation injector now targets ONLY lines inside the named function using AST line ranges — prevents accidentally violating a different function that shares the same pattern
must_returnskips test generation when the return annotation isOptional[X]orX | None— avoids tests that would fail on cache-miss / empty inputsVerifierwalks up topyproject.toml/setup.pyto resolve the correct pytest working directory for nested packages
v0.4.1 — 2026-05
Privacy-safe diagnostic report and real callable test generation
- Every
--fixrun now writes.quell/report.json— records success/failure per requirement, unknown types, and failure reasons. No source code, no full paths. Safe to share. - Rule engine now uses AST-based signature inspection (
sig_inspector.py) to build real callable tests — no moreraise NotImplementedErrorscaffolds - Type stubs:
str,int,float,bool,Path(→tmp_path),Optional[X],List[X],Dict, and name-based inference sdk._fix_gaps()implemented —quell check --fixnow actually runs the rule engine, verifier, and writer- File scanner excludes
.venvandsite-packagesto avoid picking up installed library code
v0.4.0 — 2026-05
Spec-first architecture — reads requirements, not mutants
This release is a full architectural pivot. Quell no longer requires a mutation testing tool. Instead, it reads specifications that already exist in your codebase.
quell check— scan docstrings and Pydantic models for requirement gaps;--fixgenerates verified testsquell reproduce— convert a plain-English bug description into a verified failing testquell prove— show requirement coverage score for a file or function- Docstring reader — extracts
MUST_RAISE,BOUNDARY,ENUM_VALID,MUST_RETURNfrom docstrings - Type reader — extracts
BOUNDARYandENUM_VALIDfrom PydanticFieldvalidators andLiteralannotations - Bug reader — LLM-powered
BUG_REPROrequirement generation from natural language - Unified
Requirementmodel with typedConstraintKindenum - Verifier rewritten: PASS on original code + FAIL on violated code (both required)
- Violation injection:
MUST_RAISE→ comment out raise;BOUNDARY→ weaken threshold;MUST_RETURN→ return None - AST-based coverage checker — no test execution required for the scan phase
- Rule engine updated for spec-based generation (MUST_RAISE, BOUNDARY, ENUM_VALID, MUST_RETURN)
- Score now measures requirement coverage (not mutation score)
- Published
quelltest 0.4.0to PyPI
v0.3.0 — 2026-05
GitHub integration and VS Code extension
quell github-comment— post/update score as idempotent PR comment- GitHub App webhook server for automatic PR comments
- VS Code extension — inline score annotations and status bar badge
v0.2.0 — 2026-04
CI, Score, Repair, MCP, and SDK
quell cicommand with threshold enforcementquell scorecommand with SVG badge generationquell-mcpMCP server with AI agent integrationquell.sdk.QuellPython SDK class
v0.1.0 — 2026-03
Initial release
- Mutation testing foundation: scan, fix, auto, report commands
- Rule-based generators for 9 mutation operators
- Verification engine with subprocess isolation
- libcst-based test injection
- mutmut 2.x + 3.x + Stryker adapters
- Published to PyPI as
quelltest