Skip to content

feat(impact): blast radius — reverse-dependency traversal (5.3)#36

Merged
officialCodeWork merged 1 commit into
developmentfrom
build/phase-5/step-5.3-blast-radius
Jul 15, 2026
Merged

feat(impact): blast radius — reverse-dependency traversal (5.3)#36
officialCodeWork merged 1 commit into
developmentfrom
build/phase-5/step-5.3-blast-radius

Conversation

@officialCodeWork

Copy link
Copy Markdown
Owner

What

TRACKER step 5.3 — Blast radius (reverse traversal) (failure mode F2).

blastRadius(graph, target) in @coderadar/core: everything that depends on a node, so a change can be reviewed for impact. It's a dependency-direction-aware reverse BFS — dependencyOf() maps each edge kind to which endpoint is the resource and which depends on it, so impact propagates the correct way regardless of edge direction (a data source's consumers are reached through both incoming fetches-from and outgoing provides-data). Journey edges (handles/triggers/navigates-to/exits-app/enters-at) are behaviour, not data/render dependencies, so they don't propagate.

  • Resolves a target by node id, component name, API endpoint, state name, or route path.
  • Returns ImpactNode[]{ node, relation, distance }, nearest-first — always high-confidence (deterministic traversal).
  • Wired into the context bundle's blastRadius section (compact Name@file:line labels).
  • New CLI impact <node> command, -d/--depth cap, indented by distance.

Accept

c1-shared-datatable golden gains a blast block:

  • changing the shared DataTable definition → both page instances (d1) + both pages that render them (d2);
  • changing /api/users → every consumer (the fetching page + the table instance it feeds), with an over-reach guard forbidding InvoicesPage / /api/invoices.

New GoldenBlast type + blast check kind in the eval harness.

Verification

  • 6 packages build/typecheck clean
  • unit tests: 170 pass (core 46 incl. 5 new blast tests, agent-sdk 14, vision 3, parser 107)
  • eval: 258 pass · 0 fail · 0 xfail — precision/recall 1.000, high-conf 1.000, poison 0.000, gate OK

🤖 Generated with Claude Code

blastRadius(graph, target) in core: a dependency-direction-aware reverse
BFS. dependencyOf() maps each edge kind to resource↔dependent so a change
propagates the correct way regardless of edge direction (fetches-from and
provides-data both reach a data source's consumers); journey edges don't
propagate impact. Resolves a target by node id, component name, endpoint,
state name, or route path; returns ImpactNode[] (node, relation, distance)
nearest-first, always high-confidence.

Wired into the context bundle's blastRadius section and a new CLI
`impact <node>` command (--depth cap). c1 golden gains a `blast` block:
both DataTable instances (d1) + both pages (d2) for the shared definition,
and every /api/users consumer with an over-reach guard forbidding the
invoices side. New GoldenBlast type + `blast` check kind in the harness.

5 core unit tests; eval 258/0/0, gate OK.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@officialCodeWork
officialCodeWork merged commit ad35a1c into development Jul 15, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants