Releases: IronAdamant/Chisel
Releases · IronAdamant/Chisel
chisel-test-impact 0.7.0
Highlights
- Static test discovery: When DB test edges are missing,
suggest_testsscans test files forrequire/importpaths (merged with git/DB impact as hybrid when both agree). - Working tree: Untracked test files and git-untracked source paths participate in static resolution when
working_tree=true. - Go: Import path resolution for static edges (with existing JS/TS/Python heuristics via
import_graph). diff_impact: Structuredgit_errorwitherror,cwd, and hints when git is unavailable.- LLM contract:
chisel/llm_contract.py,docs/LLM_CONTRACT.md, schema trust notes, improvednext_stepsforcoupling(dict response) andsuggest_tests.
Install: pip install chisel-test-impact==0.7.0
Stdlib-only core; see docs/ZERO_DEPS.md and docs/LLM_CONTRACT.md.
v0.6.5
[0.6.5] - 2026-03-27
Added
CHISEL_BOOTSTRAP: optional dotted import path loaded atChiselEnginestartup (chisel/bootstrap.py) so users can callregister_extractor()without forking the CLI. Tree-sitter / other parsers remain user-installed — Chisel stays stdlib-only.docs/CUSTOM_EXTRACTORS.md: full guide forregister_extractor, bootstrap env, and optional third-party parsers.examples/chisel_bootstrap_example.py: commented template for copy-paste.tests/test_bootstrap.pyfor bootstrap loading.
Documentation
- Cross-links from README, CONTRIBUTING, CLAUDE,
docs/ZERO_DEPS.md, COMPLETE_PROJECT_DOCUMENTATION, ARCHITECTURE.
v0.6.4
[0.6.4] - 2026-03-27
Added
- Import-graph test impact:
get_impacted_tests/suggest_testswalk undirected static import edges to suggest tests that cover reachable modules (e.g. facade tests for inner modules).storage.py:get_importers(),get_imported_files(). tool_coupling: Numericcochange_coupling,import_coupling,effective_coupling, plus breadth counts — import coupling stays visible in solo / low-commit repos.- Risk breakdown:
coverage_fractionalongside quantizedcoverage_gapincompute_risk_scoreandget_risk_map. diff_impact: On git failure, returnsstatus: "git_error"withmessage,project_dir, andhint(never a silent empty list). CLI prints hint;next_stepssuggests fixing project directory.
Changed
- Docs: README, CLAUDE, ARCHITECTURE, COMPLETE_PROJECT_DOCUMENTATION,
wiki-local/spec-project.md, CONTRIBUTING — agent-first, solo maintainer, multi-agent session positioning; MCP tool specs updated (22 tools,triage, locks,next_steps). schemas.py: Tool descriptions foranalyze,update,suggest_tests,coupling,diff_impact.
v0.6.2
Scale Fixes — Validated on Grafana (21k files, 62k code units)
Fixed
git_analyzer.py: Diff lines containing tabs were misidentified as numstat entries, causingValueErrorcrash on non-numeric fields like+. Now validates fields before parsing.
Changed
engine.py: Unit-level churn (git log -Lper function) is now skipped when the repo exceeds 2,000 code files. Each function spawns a subprocess, making it O(n×m) — impractical for large monorepos. File-level churn is still computed for all files.
Stress Test Results (Grafana — 21,464 files)
| Metric | Value |
|---|---|
| Code files scanned | 14,334 |
| Code units extracted | 62,379 |
| Test files discovered | 3,870 |
| Test units parsed | 5,389 |
| Test edges built | 22,155 |
| Full analysis time | ~3 minutes |
risk_map (14k files) |
0.8 seconds |
test_gaps (48k results) |
0.2 seconds |
Full Changelog: v0.6.1...v0.6.2
v0.6.1
Fix Multi-Line Block Comments, Python 3.11+, Test Coverage
Fixed
_strip_strings_and_commentsnow tracks/* */block comment state across lines — braces inside multi-line comments were being miscounted for C/C++/Java/Go/Rust/etc.- Removed dead
Z-suffix workaround in_parse_iso_date(native since Python 3.11)
Changed
- Minimum Python: 3.9 → 3.11 (3.9 is EOL, 3.10 EOL Oct 2026)
- CI matrix: 3.11, 3.12, 3.13, 3.14
Added
- Integration tests for
tool_record_resultandtool_stats - Tests for
--limitCLI parameter and MCPlimitpass-through - 6 tests for multi-line block comment handling
- 553 tests total (up from 540)
Full Changelog: v0.6.0...v0.6.1
v0.6.0
Pluggable Extractors, Batch SQL, Cross-Platform Locks, Shared Reads
Four architectural improvements addressing scale, extensibility, and platform support.
Added
- Pluggable AST extractors:
register_extractor(language, fn)overrides built-in regex extractors with tree-sitter, LSP, or custom backends. Zero new dependencies. - Batch SQL queries: 5 new
get_*_batch()methods eliminate N+1 pattern inrisk_mapcomputation (~5 queries instead of N×5) - Process-level read locks: All read tools acquire shared process locks for safe concurrent multi-process reads
- Cross-platform ProcessLock:
fcntl.flockon Unix,LockFileExvia ctypes on Windows — both support shared and exclusive locks - 18 new tests (540 total)
Changed
impact.get_risk_map()rewritten with batch queriesProcessLock._acquire()uses platform-neutralexclusive: boolparameter
Full Changelog: v0.5.4...v0.6.0
v0.5.4
Codebase Audit — Simplify, Modernize, Fix Latent Bugs
Full audit via 7 parallel agents across all 12 source files.
Fixed
engine.py: UnhandledOSErrorwhen a file vanishes between scan and parse — now gracefully skipsschemas.py: Shared mutable_LIMIT_PROPdict across all tool schemas — now each gets its own copycli.py:record-resultwithout--passed/--failedsilently defaulted to "passed" — now requiredglossary.md: Co-change coupling risk weight corrected (0.3 → 0.25), dispatch table location fixed
Changed
- Simplified
_detect_diff_base()withnext(), removed deadgetattrguards, set comprehensions - Walrus operator in
get_changed_files(), dispatch dict replaces 11-branch if-chain inextract_test_dependencies() test_mapper.pyusesnormalize_path()for cross-platform path consistency- Added Python 3.14 classifier
- All documentation updated
Stats
- 16 files changed, +117 / -55 lines
- 522 tests pass, zero regressions
Full Changelog: v0.5.3...v0.5.4
v0.4.0 — Full audit, refactor, open-source readiness
What's New
Chisel v0.4.0 is the first release-quality version — a full codebase audit, architectural refactor, and open-source packaging in one release.
Highlights
- PyPI ready —
pip install chisel-test-impact(package name:chisel-test-impact) - MCP-first README — Claude Code and Cursor config snippets, 15-tool reference table
- Architecture cleanup — 3 new modules (
metrics.py,schemas.py), all modules under 510 LOC - Performance — failure rate caching eliminates N redundant DB scans in risk_map; co-change cap prevents O(k²) on bulk commits
- 419 tests, zero lint errors, zero TODOs
Bug Fixes
- TOCTOU race in
cleanup_orphaned_test_results(now atomic) - Engine resource leak in
mcp_stdio.create_serveron failure update()stats were incomplete vsanalyze()(missingcode_units_found)- None coercion bug in churn stat lookups
Breaking Changes
_test_instability()now accepts(test_ids, failure_rates)instead of(storage, test_ids)compute_churn,compute_ownership,compute_co_changesmoved fromGitAnalyzermethods to standalone functions inchisel.metrics_TOOL_SCHEMASmoved frommcp_server.pytoschemas.py- Package name is
chisel-test-impact(barechiselis taken on PyPI)
Install
pip install chisel-test-impact
# With MCP support for Claude Code / Cursor:
pip install chisel-test-impact[mcp]See README for MCP config snippets.
Full changelog: CHANGELOG.md