Deep Dive

Graph Implementation

Adjacency list, BFS, 22 relation types and N-hop traversal in code.

01
Storage Format

relations.json is a simple edge list. Adjacency list built at runtime. 22 types with automatic reverse in RELATION_TYPES dict.

# relations.json
{"edges": [
  {"from":"arch-001","to":"dec-001",
   "relation":"depends_on"}
]}

"depends_on": {"reverse": "required_by"}
"contradicts": {"reverse": "contradicts"} ← symmetric!
02
BFS Path Finding

find_path() builds adjacency list on-the-fly, traverses BOTH directions. Reverse edges marked with ~. Max 6 hops.

for edge in edges:
  adj[from].append((to, rel))
  adj[to].append((from, f"~{rel}"))

queue = deque([(start, [start])])
if current == target: return path
03
Context Traversal

get_related_context() collects all nodes within N hops. BFS with depth limit. Results sorted by distance.

queue = deque([(node_id, 0)])
while queue:
  current, depth = queue.popleft()
  if depth > max_depth: continue
  result.append({id, distance: depth})