From 7a1e47e0ccc0376d3bf6ebda3dd0cab251295bdd Mon Sep 17 00:00:00 2001 From: Marius Ciepluch <11855163+norandom@users.noreply.github.com> Date: Sun, 11 Oct 2026 11:21:33 +0200 Subject: [PATCH] docs(g2): increment 0 confirmed -- CPG build cheap, candidate enumeration is the overspend Timed live bedrock replay: build_seconds=66.69, query_seconds=0.0, total 303s, 4095 candidate questions all analysis_not_started=deadline_exhausted, selected=[], regions_scanned=0. ~67s builds the CPG; ~236s enumerates/ranks/prepares 4095 repo-wide candidates for a 3-file change, then the deadline hits before any query runs. The CPG build is not the bottleneck; the over-broad candidate set is -> change-scoping is the confirmed lever (and compounds with the correspondence fix, since per-candidate prep includes correspondence work). Co-Authored-By: Claude Opus 4.8 --- .kiro/specs/engine-change-scoped-analysis/brief.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.kiro/specs/engine-change-scoped-analysis/brief.md b/.kiro/specs/engine-change-scoped-analysis/brief.md index 5e0f698..0ff9953 100644 --- a/.kiro/specs/engine-change-scoped-analysis/brief.md +++ b/.kiro/specs/engine-change-scoped-analysis/brief.md @@ -37,10 +37,13 @@ detection is being lost, not in Joern's capability. ## Increments (progress tracking) -- [ ] **0. Confirm the cost split.** Instrument one replay (bedrock) to measure CPG-build vs rank vs analysis time - within the 300 s budget. If the **CPG build** alone exhausts it, scoping the analysis won't help (needs a build-time - or budget fix instead); if **ranking the whole repo** is the overspend (candidates got ranked, so the build likely - finished), change-scoping is the right lever. Decides the whole approach — do this first (instrument rule). +- [x] **0. Cost split confirmed (2026-10-11, timed live replay).** `build_seconds=66.69` (CPG build is cheap), + `query_seconds=0.0` (no query ever executed), total 303 s (hit the deadline), **4,095** candidate questions all + `analysis_not_started=deadline_exhausted`, `selected: []`, `regions_scanned=0`. So of the 303 s, ~67 s built the + CPG and ~236 s went to enumerating/ranking/preparing 4,095 repo-wide candidate questions for a **3-file** change — + the budget was spent before a single query ran. The CPG build is NOT the bottleneck; the over-broad candidate set + is. Change-scoping is confirmed as the right lever, and because per-candidate prep includes the line-correspondence + work, fewer candidates also cuts that cost (the two fixes compound). - [ ] **1. Locate the exact selection/budget code** in `rank.py`/`mapping.py` that marks candidates `selected` vs `deferred:deadline_exhausted`. - [ ] **2. Seed analysis from the change.** Prioritize (or restrict first-pass to) the changed declarations plus