Skip to content

Impact analysis

Use impact_bundle when you need a bounded, target-centered change-impact packet rather than several unrelated symbol lookups.

  • The repository is adopted and its freshness is understood.
  • You have a stable search, outline, or navigation result for the code target.

Search for the exact symbol or defining text. Prefer a row with target_ref:

{
"query": "ResultCompleteness",
"path_class": "runtime",
"limit": 10
}

Copy the selected target_ref unchanged. This avoids reranking an overloaded name inside the impact request.

Legacy symbol input is available when no target exists. If equal-rank candidates are ambiguous, Frigg returns disambiguation and does not run child sections. Resolve a target and retry instead of guessing.

{
"target": {
"kind": "result_match",
"result_handle": "<RESULT_HANDLE>",
"match_id": "m1",
"target_scope": "<OPAQUE_SCOPE>"
},
"include_implementations": true,
"include_test_mentions": true,
"response_mode": "compact"
}

Use repository_id only as an equality assertion when a target already names its repository. path_class defaults to runtime for legacy symbol resolution.

Do not reduce the bundle to one count. For every section, inspect three independent dimensions:

  1. execution
  2. trust
  3. completeness
Section Evidence Trust caution
symbol The resolved target. Confirm target_selection when legacy symbol input was used.
reference Definition/declaration/reference rows. Navigation mode controls precision; completeness controls coverage.
incoming_call Caller rows. Read availability and navigation mode.
implementation Implementation edges. Included automatically by target kind or forced by include_implementations.
test_mention Exact literal mentions under test/tests. A mention does not prove runtime execution or test coverage.

execution=included with exact total=0 is an honest zero. omitted_by_policy means the section did not run by design. not_run_target_unresolved means target resolution failed. Neither omission is evidence of absence.

Outgoing calls are deliberately excluded because current callee edges are provisional. Run outgoing_calls separately and verify material edges with source reads, references, or structural search.

Included sections can expose child result handles and proof_targets. Each proof target identifies its section, handle/match pair, target scope, and the canonical action ID that reads it.

Prefer the matching next_actions proof-read entry. It carries an exact read_match request. If you invoke read_match manually, keep the section’s result handle paired with its own match ID.

Use presentation_mode=citation on the proof read when the analysis needs line-addressable evidence.

impact_bundle summarizes child sections but does not pretend every child is exhaustive. The aggregate completeness preserves child incompleteness.

When a section is truncated or incomplete:

  • follow its canonical next action when provided;
  • re-run the underlying navigation tool with the resolved target for deeper paging;
  • report heuristic or unavailable coverage explicitly;
  • never upgrade the compact summary into a stronger claim than the section contract supports.

Before presenting a blast-radius conclusion:

  • proof-read the defining symbol and material references;
  • verify provisional outgoing edges separately if relevant;
  • distinguish literal test mentions from executed coverage;
  • state omitted, unavailable, heuristic, partial, or truncated sections;
  • use exact totals only where completeness.total is present.
  • ../frigg/crates/cli/src/mcp/types/navigation.rs
  • ../frigg/crates/cli/src/mcp/types/target.rs
  • ../frigg/crates/cli/src/mcp/types/completeness.rs
  • ../frigg/crates/cli/src/mcp/server/navigation_tools/impact_bundle.rs
  • ../frigg/crates/cli/tests/tool_handlers/navigation.rs
  • ../frigg/crates/cli/tests/tool_handlers/proof_handle_producers.rs