chore(types): remove dead protoMethodsMs field and stale comment#1494
Conversation
… diff Adds snapshot-pre-bash.sh (PreToolUse Bash) + track-bash-writes.sh (PostToolUse Bash): the pre-hook captures git status --porcelain to a per-worktree temp file before each Bash call; the post-hook diffs the before/after state and appends newly modified or created files to .claude/session-edits.log. This closes the gap where files written by sed -i, printf redirects, tee, heredocs, or build tools (Cargo.lock, lockfiles) were never recorded, causing guard-git.sh to emit false-positive BLOCKED errors. Closes #1457
- clojure.rs: annotate lifetime-anchor assignment to silence false-positive - cfg.rs: remove never-called start_line_of method - complexity.rs: remove never-constructed NotHandled variant; convert irrefutable if-let patterns to plain let destructures - dataflow.rs: remove never-read callee fields from CallReturn/Destructured - incremental.rs: remove never-read lang field from CacheEntry cargo check and cargo clippy both clean after these changes.
Adds .github/workflows/perf-canary.yml — a path-filtered workflow that fires on PRs touching src/extractors/, src/domain/graph/, or crates/** and runs only the incremental-benchmark suite (full build + no-op + 1-file rebuild, both engines). Catches the class of regressions that accumulated invisibly across the Phase 8.x PRs and were only detected at v3.12.0 publish time. The regression guard gains BENCH_CANARY=1 mode: raises thresholds to 50%/100%/150% (standard/noisy/WASM) and skips the build, query, and resolution suites — only incremental checks run. This absorbs shared- runner timing variance while still blocking catastrophic regressions (+98% full build, +1827% 1-file rebuild from v3.12.0). Closes #1433
On incremental builds, runPostNativeCha previously scanned all call→qualified-method edges in the DB (~12ms flat, O(graph size)), even for 1-file changes where no hierarchy or RTA evidence changed. Add two cheap indexed gate queries. Gate A checks whether any changed file introduced a class/interface/trait/struct/record node (hierarchy may have new implementors reachable from unchanged call sites). Gate B checks whether any changed file added a call edge to a class-kind target (RTA set may have grown, enabling previously filtered expansions in unchanged callers). If neither gate fires, restrict the candidate query to src.file IN changedFiles — safe because the hierarchy and instantiated set are unchanged for all other files. Full builds (isFullBuild=true) and cases where either gate fires retain the existing full-scan behaviour. Mirrors the changed-files scoping pattern of runPostNativeThisDispatch. Closes #1441
Times each JS post-pass in tryNativeOrchestrator and exposes the
measurements in BuildResult.phases:
- gapDetectMs — dropped-language gap detection + backfill
- chaMs — CHA expansion (interface dispatch)
- thisDispatchMs — this/super dispatch WASM re-parse (was already
tracked but now properly named alongside the rest)
- reclassifyMs — scoped role re-classification after edge insertion
- techniqueBackfillMs — technique-column UPDATE on native-written edges
Previously only thisDispatchMs was reported, causing wall-clock vs
phaseSum to diverge by 1.1s+ on 1-file rebuilds and making benchmark
regressions undiagnosable from committed history.
Updates update-incremental-report.ts to render the new phases in a
collapsible details block under each engine's 1-file rebuild section.
Closes #1434
…ld for required-tier grammars The docstring claimed pool cost was "amortised over enough parse work" — measurements show IPC overhead scales linearly (~55–64ms/file pool vs ~8–10ms/file inline). The real motivation is crash safety for exotic WASM grammars (#965); JS/TS/TSX (required-tier, used in all this-dispatch backfill calls) have never triggered the V8 fatal crash class and are safe to run inline. Raise threshold 16 → 32 to keep typical this-dispatch batches (≤ 18 files on the codegraph corpus) on the inline fast path. Exotic-language drops are almost always well under 32 files and also benefit from the inline path without meaningful crash risk increase. Closes #1435
…e incremental rebuilds On 1-file native incremental builds, two JS post-passes ran unconditionally even when they had no work to do: - `backfillNativeDroppedFiles`: called whenever changedCount > 0, even when detectDroppedLanguageGap returned an empty gap. Gate now checks gap.missingAbs.length > 0 || gap.staleRel.length > 0 directly, matching backfillNativeDroppedFiles's own internal early-exit guard. - Node/edge COUNT(*) re-count: ran unconditionally after all post-passes even when none of them wrote any edges. COUNT(*) over 50K+ edge tables is non-trivial, especially via the NativeDbProxy napi-rs round-trip. Now gated on postPassWroteData (backfill | CHA edges | this-dispatch edges). Closes #1454
The post-pass it timed (runPostNativePrototypeMethods) was deleted in b5c03a2 when func-prop extraction moved to Rust (#1432). The optional field was never set by any code path that survived the deletion. Also remove the stale reference to "prototype-methods post-pass" from the parseFilesWasmForBackfill docstring — only the this-dispatch post-pass uses symbolsOnly now. Closes #1432
|
Claude finished @carlos-alm's task —— View job PR Review
Phase 1: Root Cause AnalysisProblem Being Solved: Two dead-code artifacts remained after
Why This Approach: These are straightforward deletions of genuinely dead code — no behavior changes, no logic alterations. Correct approach. Risk Assessment: Minimal. Phase 2: Configuration Change DetectionNo lint rules changed, no tsconfig modifications, no test configuration touched. Clean. Phase 3: Test IntegrityNo test files modified. The PR description states "prototype-method-resolution integration tests (WASM + native) pass" — consistent with a pure dead-code removal that cannot affect runtime behavior. Phase 4: Code Quality
No concerns on either change. Phase 5: Backlog Compliance
Final Assessment |
Greptile SummaryThis PR cleans up two dead-code artifacts left over after
Confidence Score: 5/5Safe to merge: the TypeScript changes are pure dead-code and docstring cleanup with no logic impact; the new skill file operates only when explicitly invoked and touches no production code paths. Both TypeScript changes are mechanical removals of a field that was never written and a comment that was no longer accurate — neither alters any runtime behaviour. The new SKILL.md adds a developer tool with no production coupling. The only real nit is that the skill hardcodes .claude/skills/resolve/SKILL.md — the hardcoded Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A["/resolve <pr-number>"] --> B["Phase 0: Pre-flight\nVerify git, gh, jq; fetch PR metadata"]
B --> C["Phase 1: Branch Setup\ngh pr checkout; git merge origin/base"]
C --> D{Conflicts?}
D -- No --> E["Exit clean"]
D -- Yes --> F["Phase 2: Conflict Archaeology\nTrace incoming commits → source PRs\nFetch source PR descriptions & diffs"]
F --> G["Phase 3: Current PR Context\nRead this PR's description & per-file diffs"]
G --> H["Phase 4: Resolution\nEdit files; apply both-sides intent\nStage by name (never git add .)"]
H --> I{Ambiguous?}
I -- Yes --> J["STOP — explain to user\nwhat decision is needed"]
I -- No --> K["Phase 5: Verification\nDiff vs both parents; confirm\nno intentional change was dropped"]
K --> L["Phase 6: Validation\nRun tests & lint"]
L --> M["Phase 7: Commit & Push\ngit commit; git push\nclean up .codegraph/resolve/"]
Reviews (2): Last reviewed commit: "fix: resolve merge conflicts with main" | Re-trigger Greptile |
Codegraph Impact Analysis1 functions changed → 0 callers affected across 0 files
|
The core work for #1432 landed in b5c03a2 —
runPostNativePrototypeMethodswas deleted and Pattern 3 (fn.method = function(){}/ arrow) was added to the Rust extractor. Two dead-code artifacts were not cleaned up:protoMethodsMs?: numberinBuildResult.phases— declared, never set by any surviving code pathparseFilesWasmForBackfilldocstring still mentioned "prototype-methods post-pass" alongside this-dispatch, but only the this-dispatch post-pass usessymbolsOnlynowRemoves both. Lint and prototype-method-resolution integration tests (WASM + native) pass.
Closes #1432