Skip to content

Commit e282ac0

Browse files
IronAdamantclaude
andcommitted
v0.5.2: Fix fragile tuple default, stale glossary formula, CLI subcommand count
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent f5f7eb7 commit e282ac0

7 files changed

Lines changed: 14 additions & 6 deletions

File tree

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,14 @@ All notable changes to Chisel are documented in this file.
55
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
66
This project uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.5.2] - 2026-03-22
9+
10+
### Fixed
11+
12+
- `metrics.py`: Fragile tuple default `(None,)` in `compute_co_changes()` changed to `(None, None)` for consistency with the 2-element tuple structure
13+
- `wiki-local/glossary.md`: Stale 4-component risk formula updated to current 5-component formula (0.35/0.25/0.2/0.1/0.1 with test_instability)
14+
- `CLAUDE.md`: Corrected CLI subcommand count from 18 to 17
15+
816
## [0.5.1] - 2026-03-22
917

1018
### Fixed

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ chisel/
1414
metrics.py — Pure computation: churn scoring, ownership aggregation, co-change detection. _parse_iso_date shared utility.
1515
test_mapper.py — Test file discovery, framework detection, dependency extraction, edge building.
1616
impact.py — Impact analysis, risk scoring, stale test detection, reviewer suggestions. Caches failure rates.
17-
cli.py — argparse CLI (18 subcommands). _run_tool() shared handler. Entry point: chisel.cli:main
17+
cli.py — argparse CLI (17 subcommands). _run_tool() shared handler. Entry point: chisel.cli:main
1818
schemas.py — JSON Schema definitions for all 15 tools + dispatch table. Shared by HTTP and stdio servers.
1919
mcp_server.py — HTTP MCP server (GET /tools, /health, POST /call). ThreadedHTTPServer. dispatch_tool() shared by both servers.
2020
mcp_stdio.py — stdio MCP server (requires optional 'mcp' package). _configure_server() for engine lifecycle mgmt.

COMPLETE_PROJECT_DOCUMENTATION.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Test impact analysis and code intelligence for LLM agents. Zero external dependencies.
44

5-
**Version:** 0.5.1
5+
**Version:** 0.5.2
66
**PyPI:** `chisel-test-impact`
77
**License:** MIT
88
**Python:** >= 3.9

chisel/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.5.1"
1+
__version__ = "0.5.2"

chisel/metrics.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ def compute_co_changes(commits, min_count=3):
196196
"file_a": a,
197197
"file_b": b,
198198
"co_commit_count": count,
199-
"last_co_commit": pair_last.get((a, b), (None,))[0],
199+
"last_co_commit": pair_last.get((a, b), (None, None))[0],
200200
})
201201

202202
result.sort(key=lambda x: x["co_commit_count"], reverse=True)

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "chisel-test-impact"
7-
version = "0.5.1"
7+
version = "0.5.2"
88
description = "Test impact analysis and code intelligence for LLM agents"
99
readme = "README.md"
1010
requires-python = ">=3.9"

wiki-local/glossary.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ The role assigned to entries returned by the `ownership` tool. Determined by `gi
4747
A test edge whose `code_id` points to a code unit that no longer exists in the `code_units` table. This is possible because SQLite foreign key enforcement is intentionally disabled. Orphaned references are the mechanism by which stale test detection works.
4848

4949
**Risk score**
50-
A composite metric indicating how risky it is to change a file. Formula: `0.4 * churn + 0.3 * coupling_breadth + 0.2 * (1 - test_coverage) + 0.1 * author_concentration`. Each component is normalized to the 0-1 range. Higher values indicate higher risk. Computed by `ImpactAnalyzer.compute_risk_score()`.
50+
A composite metric indicating how risky it is to change a file. Formula: `0.35 * churn + 0.25 * coupling + 0.2 * coverage_gap + 0.1 * author_concentration + 0.1 * test_instability`. Each component is normalized to the 0-1 range. Higher values indicate higher risk. Computed by `ImpactAnalyzer.compute_risk_score()`.
5151

5252
**RWLock (read-write lock)**
5353
A concurrency primitive in `rwlock.py` that allows multiple concurrent readers or one exclusive writer. Used by `ChiselEngine` to protect storage access: `tool_*()` read methods acquire a read lock, while `analyze()` and `update()` acquire a write lock.

0 commit comments

Comments
 (0)