Skip to content

v1.108.59 - Decision-context surfacing in impact analysis

Choose a tag to compare

@jgravelle jgravelle released this 17 Jun 19:43
· 11 commits to main since this release

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, default false).
  • 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_radius result-cache key now includes include_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.