v1.108.59 - Decision-context surfacing in impact analysis
Decision-context surfacing in impact analysis
Impact analysis tells you what breaks. This release adds why the code is the way it is: a new opt-in include_decisions flag on get_blast_radius and get_impact_preview attaches a read-only decisions block.
A new resolver (tools/decision_context.py) mines the git history of the focal symbol's file and the impacted files for decision-bearing commits — reverts, performance rewrites, refactors, renames, and root-cause bugfixes — reusing the existing commit classifier. It returns a deduped, recency-ranked digest plus a one-line volatility read, e.g.:
8 decision-bearing commits in 180d across 5 files (3 revert, 2 perf, 3 bugfix) — high-churn history; review the rationale before changing.
Design
- Source is the durable git commit record, not ephemeral agent session logs — language- and agent-agnostic, and already half-parsed.
- Surface-only. Nothing is persisted, no decision graph is written, and no user file is touched (read-only charter). It is a read of history attached to the response and then forgotten.
- Bounded cost (capped files × capped commits per file), which is why it is opt-in (
include_decisions, defaultfalse). - Degrades honestly: GitHub-indexed repos (no local working tree) and non-git source roots return
{available: false, reason, hint}rather than a fabricated result. - Absent the flag, both tools are byte-identical to prior behavior; the
get_blast_radiusresult-cache key now includesinclude_decisions.
8 tests in tests/test_v1_108_59.py (git-seeded repo: category surfacing, volatility, cache-keying, off-path parity, no-git honest hints). Tool count stays 82. Full matrix (Ubuntu + Windows, py3.10–3.13) green.