Problem
The Native Edge Graph is hallucinating priorities. Specifically, blocked issues (like #9299 which is blocked by #9915) are incorrectly surfacing in the Golden Path despite explicit BLOCKED_BY attributes. This represents a critical regression from the intended topological discounting algorithms designed in #9910.
Architectural Root Cause:
Following the shift to the localized SQLite neo_graph_nodes architecture, the Graph layer was migrated to heavily rely on Lazy Vicinity Loading (loadNodeVicinitySync) rather than a full upfront RAM boot, to protect Node.js V8 memory limits.
However, the logic evaluating edge weights within DreamService.mjs directly queries the raw RAM stores (GraphService.db.edges.items and getByIndex()) without first invoking GraphService.db.getAdjacentNodes().
Since the cache remained completely cold organically, the BLOCKS edges inserted into SQLite were NEVER mapped into RAM during synthesizeGoldenPath(). This caused blockers arrays to evaluate as completely empty, silently bypassing the isBlocked circuit-breaker logic.
Solution
- Ensure
GraphService.db.getAdjacentNodes(issueId, 'both') is executed immediately prior to querying GraphService.db.edges.items in ingestIssueStates() to guarantee the active topological bounds are mapped into Neo.data.Store.
- Similarly, invoke
GraphService.db.getAdjacentNodes(issueId, 'both') before the getByIndex block inside synthesizeGoldenPath().
- Validating the Golden Path re-calculates
#9299 accurately as structurally rejected.
Problem
The Native Edge Graph is hallucinating priorities. Specifically, blocked issues (like
#9299which is blocked by#9915) are incorrectly surfacing in the Golden Path despite explicitBLOCKED_BYattributes. This represents a critical regression from the intended topological discounting algorithms designed in#9910.Architectural Root Cause: Following the shift to the localized SQLite
neo_graph_nodesarchitecture, the Graph layer was migrated to heavily rely on Lazy Vicinity Loading (loadNodeVicinitySync) rather than a full upfront RAM boot, to protect Node.jsV8memory limits. However, the logic evaluating edge weights withinDreamService.mjsdirectly queries the raw RAM stores (GraphService.db.edges.itemsandgetByIndex()) without first invokingGraphService.db.getAdjacentNodes().Since the cache remained completely cold organically, the
BLOCKSedges inserted into SQLite were NEVER mapped into RAM duringsynthesizeGoldenPath(). This causedblockersarrays to evaluate as completely empty, silently bypassing theisBlockedcircuit-breaker logic.Solution
GraphService.db.getAdjacentNodes(issueId, 'both')is executed immediately prior to queryingGraphService.db.edges.itemsiningestIssueStates()to guarantee the active topological bounds are mapped intoNeo.data.Store.GraphService.db.getAdjacentNodes(issueId, 'both')before thegetByIndexblock insidesynthesizeGoldenPath().#9299accurately as structurally rejected.