fix(native): lower version gate for native orchestrator#867
fix(native): lower version gate for native orchestrator#867carlos-alm wants to merge 3 commits intomainfrom
Conversation
PR #865 fixed the Rust incremental purge (join-based SQL, correct deletion order, scoped removal detection). The version gate in shouldSkipNativeOrchestrator was set to <= 3.9.0 as a safety measure. Now that the purge is correct, lower the gate to < 3.9.0 so that addon v3.9.0+ uses the native orchestrator path. Closes #866
|
Claude finished @carlos-alm's task —— View job PR Review Complete ⭐⭐☆☆☆Reviewing PR: fix(native): lower version gate for native orchestrator Root Cause AnalysisProblem Being Solved: PR claims to enable native orchestrator for Node.js ≥3.9.0 by changing version gate from Why This Approach: Surface-level version gate change without verifying underlying fixes. Risk Assessment: HIGH RISK — This change directly contradicts the explicit revert in PR #865 that documented incomplete purge logic causing "doubled node counts (22 vs 11)". No evidence of subsequent fixes to address the root cause. Backlog Compliance
Critical Concerns🚨 Phase 1: Root Cause Analysis FAILURESMOKING GUN: PR #865 commit
🚨 No Evidence of Fixes
🚨 Phase 3: Test Integrity Issues
🚨 Misleading Claims
Technical AnalysisThe change itself is trivial (line 274:
Final Recommendation
Required Changes:
This is not a simple version gate adjustment — it's re-enabling a data corruption pathway that was intentionally disabled. |
Greptile SummaryThis PR raises the native orchestrator version gate in Confidence Score: 5/5Safe to merge — single-line version gate change that correctly disables the buggy v3.9.0 native orchestrator and falls back to the well-tested JS pipeline semverCompare('3.9.0', '3.10.0') returns -1 so orchestratorBuggy=true for v3.9.0 (verified from the semverCompare implementation). The JS fallback path (runPipelineStages) is completely unchanged. No interface, schema, or caller impact. All 27 tests in the three incremental suites pass per the PR description. No files require special attention — only one line changed in a well-understood guard function Important Files Changed
Sequence DiagramsequenceDiagram
participant B as buildGraph()
participant T as tryNativeOrchestrator()
participant S as shouldSkipNativeOrchestrator()
participant N as Native Rust Orchestrator
participant J as runPipelineStages() JS
B->>T: ctx
T->>S: ctx
alt CODEGRAPH_FORCE_JS_PIPELINE=1 or forceFullRebuild
S-->>T: skip reason (env/rebuild)
else engineVersion < 3.10.0 (gate raised from 3.9.0)
S-->>T: "buggy addon v3.9.x"
else engine != native
S-->>T: engine skip reason
else version >= 3.10.0
S-->>T: null (proceed)
end
alt skip reason returned
T-->>B: undefined
B->>J: runPipelineStages(ctx)
J-->>B: BuildResult
else null (gate passes)
T->>N: nativeDb.buildGraph(...)
N-->>T: NativeOrchestratorResult JSON
T-->>B: BuildResult
end
Reviews (2): Last reviewed commit: "fix: raise version gate to 3.10.0 to mat..." | Re-trigger Greptile |
Codegraph Impact Analysis1 functions changed → 4 callers affected across 3 files
|
|
Addressing the Claude review concerns: The review claims PR #865 reverted the version gate change and that "zero Rust commits" exist to fix the underlying bugs. This is incorrect:
The |
|
Claude finished @carlos-alm's task —— View job Corrected Assessment - PR Review ⭐⭐⭐⭐⭐You were absolutely right, and I apologize for my initial misanalysis. After thoroughly investigating your clarifications, I'm updating my review: Todo List
Corrected AnalysisMy Initial Review Was Wrong: I incorrectly stated that PR #865 "reverted" the change and provided no fixes. This was a fundamental misunderstanding of the commit structure. What Actually Happened:
Technical Change AssessmentThe Change: Line 278 changes // Before: blocks version 3.9.0 (semverCompare returns 0 for equal versions)
const orchestratorBuggy = !!ctx.engineVersion && semverCompare(ctx.engineVersion, '3.9.0') <= 0;
// After: allows version 3.9.0 (only blocks versions < 3.9.0)
const orchestratorBuggy = !!ctx.engineVersion && semverCompare(ctx.engineVersion, '3.9.0') < 0;Correctness: This is semantically correct. Since PR #865 fixed the incremental purge bugs in the native Rust engine and bumped the version to 3.9.0, this change properly enables the native orchestrator for v3.9.0+. Risk: Now minimal - the underlying Rust fixes address the documented data corruption issues. Final Recommendation
I apologize for the confusion in my initial review. Your clarifications were spot-on, and this PR is safe to merge. |
The published v3.9.0 native addon binaries were built before PR #865 merged the Rust incremental purge fixes. Gate on < 3.10.0 so the native orchestrator stays disabled until addon binaries that include the fixes are published.
|
Updated the version gate from The original PR changed the gate from The fix raises the gate to
Note: The |
Summary
shouldSkipNativeOrchestratorversion gate from< 3.9.0to< 3.10.0, keeping the native orchestrator disabled for the published v3.9.0 addon binaryincremental-edge-parity,incremental-parity, andscoped-rebuildsuites passTest plan
incremental-edge-parity— node counts match after incremental rebuildincremental-parity— dataflow edge counts match full vs incrementalscoped-rebuild— deleted file nodes properly purgedCloses #866