Skip to content

Persist the dependency graph edge list (enables neighborhood/interaction-level risk hypotheses) #2992

Closed

Description

@squid-protocol

Why

The temporal-crucible program falsified per-file, isolated, standing 'risk' (see #2991 and the #2982 record) and the open frontier is interaction-level hypotheses: a file's risk as a function of its graph neighbors' markers (concurrency markers meeting shared-state markers across an edge; allocation in file A with cleanup responsibility in file B; neighborhood marker load beyond own-file load). There is already a whisper of graph transmission in the data: the api_exposure spillover ripple on untouched files rides popularity/pagerank shifts.

The gap

The engine builds the full dependency graph in memory every scan (network_risk_sensor, GraphBuilder — pagerank, betweenness, in/out degree all computed from it) but persists only per-node degree summaries (popularity, import_count, internal_dependency_links, pagerank_score). The edge list is discarded. Every neighborhood hypothesis is therefore untestable from the scan DB.

Ask

Persist the per-snapshot edge list — e.g. an edge_data(repo_name, commit_hash, src_file_id, dst_file_id, edge_kind) table, or a compact adjacency JSON per snapshot. Constraints: keyed like the other tables ((repo_name, commit_hash), FK to file_data), tolerable size (curl-scale graphs are thousands of edges — trivial next to function_data), and written under the same --db-only path so history batches capture it. Note js/ts historically built no edges despite reporting dependency_links (comment at network_risk_sensor.py:153) — worth surfacing per-language edge coverage while at it.

Unblocks

INT-level hypotheses in the #2982 program (neighborhood marker load, cross-file discipline splits, marker×edge interactions), plus system-level graph statistics per snapshot (component structure over time). Related: #2991 (reframe), temporal-crucible#29 (history-enabled mode), #2982.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature, sensor, or structural signatureschemaData schema updates for JSON outputs or SQLite tables

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions