fix: dogfood v2.4.0 — win32 native binary, embedder crashes, stdout pollution#117
fix: dogfood v2.4.0 — win32 native binary, embedder crashes, stdout pollution#117carlos-alm merged 2 commits intomainfrom
Conversation
…ashes - Add @optave/codegraph-win32-x64-msvc to optionalDependencies (was missing, causing fallback to WASM on Windows) - Pin all native binary packages to 2.4.0 - Add bounds check in extractLeadingComment to prevent crash on stale graph data where node line numbers exceed file length - Route model loading messages through logger (stderr) instead of console.log (stdout) to fix pipe-clean JSON output for search --json Closes #113 Closes #114 Closes #115 Impact: 2 functions changed, 9 affected
|
Claude finished @carlos-alm's task —— View job PR Review: Dogfood v2.4.0 Bug FixesTodo List:
Phase 1: Root Cause Analysis ✅Problem Being Solved: This PR addresses three legitimate bugs discovered during v2.4.0 dogfooding:
Why This Approach: All three fixes target root causes rather than symptoms:
Risk Assessment: LOW RISK - These are targeted bug fixes with clear justification Phase 2: Configuration Change Detection ✅NO HIGH-RISK CONFIG CHANGES DETECTED
Only legitimate dependency additions and version pinning. Phase 3: Test Integrity Assessment ✅NO TEST INTEGRITY CONCERNS
Phase 4: Code Quality Review ✅package.json ChangesEXCELLENT - The + "@optave/codegraph-win32-x64-msvc": "2.4.0" // Adds missing Windows support
- "@optave/codegraph-darwin-arm64": "2.3.0", // Pins to current version
+ "@optave/codegraph-darwin-arm64": "2.4.0", // for consistencyThis ensures platform-specific native binaries are consistently versioned and Windows gets proper native support instead of falling back to WASM. embedder.js ChangesSOLID DEFENSIVE CODING:
Code Analysis
Critical ConcernsNONE IDENTIFIED - This is a well-executed bug fix PR. Minor Observations
Final RecommendationAPPROVE - This PR demonstrates good engineering practices and addresses legitimate issues discovered through dogfooding. |
Greptile SummaryThis PR fixes three bugs discovered during v2.4.0 dogfooding, all with targeted, minimal changes: #113 — Windows native binary fallback: Added missing #114 — Crash on stale graph data: Added bounds checks in #115 — JSON output pollution: Changed model loading messages from All fixes are defensive and backward-compatible. Confidence Score: 5/5
Important Files Changed
Last reviewed commit: 4d13b0b |
|
Claude finished @carlos-alm's task —— View job PR Review: Dogfood v2.4.0 Bug FixesTodo List:
Phase 1: Root Cause Analysis ✅Problem Being Solved: Three legitimate bugs found during v2.4.0 dogfooding - missing Windows binary, embedder crash on stale data, stdout pollution breaking JSON output Phase 2: Configuration Change Detection ✅NO HIGH-RISK CONFIG CHANGES DETECTED
Only legitimate dependency additions and version pinning. Phase 3: Test Integrity Assessment ✅NO TEST INTEGRITY CONCERNS
Phase 4: Code Quality Review ✅package.json ChangesEXCELLENT - The + "@optave/codegraph-win32-x64-msvc": "2.4.0" // Adds missing Windows support
- "@optave/codegraph-darwin-arm64": "2.3.0", // Pins to current version
+ "@optave/codegraph-darwin-arm64": "2.4.0", // for consistencyThis ensures platform-specific native binaries are consistently versioned and Windows gets proper native support instead of falling back to WASM. embedder.js ChangesSOLID DEFENSIVE CODING:
Code Analysis
Critical ConcernsNONE IDENTIFIED - This is a well-executed bug fix PR. Minor Observations
Final RecommendationAPPROVE - This PR demonstrates good engineering practices and addresses legitimate issues discovered through dogfooding. |
* fix: strict type validation for threshold values in complexity queries
Replace loose `!= null` checks with `typeof === 'number' && Number.isFinite()`
to prevent `Number("")`, `Number(null)`, and `Number(true)` from silently
coercing into valid SQL values. Add integration test verifying exceeds
arrays and summary.aboveWarn are correctly computed.
Addresses Greptile review feedback on #136.
Impact: 2 functions changed, 3 affected
* docs: add complexity, communities, and manifesto to all docs
Update README, CLAUDE.md, BACKLOG, titan-paradigm, recommended-practices,
and CLI/MCP examples to reflect today's merged PRs: complexity metrics
(#130/#139), Louvain community detection (#133/#134), and manifesto rule
engine (#138). Updates MCP tool count from 21 to 24 (25 in multi-repo),
marks backlog items 6/11/21/22 as done, and adds real CLI output examples.
* fix: remove redundant condition in paginate guard clauses
When limit === undefined, limit !== 0 is always true — the && check
was dead code. Simplified to just check limit === undefined.
Impact: 2 functions changed, 18 affected
* docs: update dogfood report with fix statuses
All 4 bugs now fixed (PR #117 merged, #116 closed via reverse-dep
cascade). 3 of 4 suggestions addressed. MCP tool counts updated
18→23 / 19→24. Rating upgraded 7/10 → 9/10 post-fix.
* fix: rename misleading test to match actual behavior
Test was named "handles non-numeric thresholds gracefully" but only
validated baseline exceeds/aboveWarn with valid thresholds. Actual
non-numeric threshold tests exist separately. Renamed to "produces
correct exceeds and aboveWarn with valid thresholds".
* fix: update stale MCP tool count in dogfood skill (21→24)
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* fix: strict type validation for threshold values in complexity queries
Replace loose `!= null` checks with `typeof === 'number' && Number.isFinite()`
to prevent `Number("")`, `Number(null)`, and `Number(true)` from silently
coercing into valid SQL values. Add integration test verifying exceeds
arrays and summary.aboveWarn are correctly computed.
Addresses Greptile review feedback on #136.
Impact: 2 functions changed, 3 affected
* docs: add complexity, communities, and manifesto to all docs
Update README, CLAUDE.md, BACKLOG, titan-paradigm, recommended-practices,
and CLI/MCP examples to reflect today's merged PRs: complexity metrics
(#130/#139), Louvain community detection (#133/#134), and manifesto rule
engine (#138). Updates MCP tool count from 21 to 24 (25 in multi-repo),
marks backlog items 6/11/21/22 as done, and adds real CLI output examples.
* fix: remove redundant condition in paginate guard clauses
When limit === undefined, limit !== 0 is always true — the && check
was dead code. Simplified to just check limit === undefined.
Impact: 2 functions changed, 18 affected
* docs: update dogfood report with fix statuses
All 4 bugs now fixed (PR #117 merged, #116 closed via reverse-dep
cascade). 3 of 4 suggestions addressed. MCP tool counts updated
18→23 / 19→24. Rating upgraded 7/10 → 9/10 post-fix.
* fix: rename misleading test to match actual behavior
Test was named "handles non-numeric thresholds gracefully" but only
validated baseline exceeds/aboveWarn with valid thresholds. Actual
non-numeric threshold tests exist separately. Renamed to "produces
correct exceeds and aboveWarn with valid thresholds".
* fix: update stale MCP tool count in dogfood skill (21→24)
* feat: add complexity analysis for Python, Go, Rust, Java, C#, Ruby, PHP
Parameterize the complexity algorithm to support all 10 languages instead
of just JS/TS/TSX. Add per-language COMPLEXITY_RULES, HALSTEAD_RULES, and
COMMENT_PREFIXES with three else-if detection patterns (else-wraps-if,
explicit elif, alternative field). Guard against tree-sitter keyword leaf
tokens that share node type names with their parent constructs.
Impact: 4 functions changed, 4 affected
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

Summary
Fixes 3 bugs found during dogfooding v2.4.0:
@optave/codegraph-win32-x64-msvcwas missing fromoptionalDependencies, causing Windows installs to fall back to WASM engine. Also pins all platform packages to 2.4.0.extractLeadingCommentinembedder.jscrashes withTypeError: Cannot read properties of undefined (reading 'trim')when node line numbers exceed file length (stale graph data).search --jsonleaks "Loading embedding model..." and "Model loaded." to stdout, breaking pipe-clean JSON. Rerouted throughinfo()logger (which writes to stderr).Not fixed: #116 (incremental rebuild drops edges) — requires deeper changes to the incremental rebuild algorithm.
Found during
Dogfooding v2.4.0 — see dogfood report in this PR.
Test plan
npm install @optave/codegraphon Windows should pull win32 native binarycodegraph embed --strategy structuredon stale graph does not crashcodegraph search "query" --json 2>/dev/nulloutputs clean JSON