diff --git a/alembic/versions/0126_drop_cross_project_hook_uses.py b/alembic/versions/0126_drop_cross_project_hook_uses.py new file mode 100644 index 00000000..03721556 --- /dev/null +++ b/alembic/versions/0126_drop_cross_project_hook_uses.py @@ -0,0 +1,34 @@ +"""drop write-path uses edges that cross projects + +Revision ID: 0126 +Revises: 0125 +Create Date: 2026-10-26 + +The write path records a `uses` edge with basis `hook` when a session pulled a +snippet and then wrote code naming its symbol. That is by-name evidence, like +the proposer's `reference` edges 0125 removed, and a body never calls a +function defined in another project's repository. The write path now applies +the same by-name test, so it writes no such edge; this removes the ones it +wrote before. Judged edges keep their own basis and are left alone. + +Downgrade restores nothing: the removed edges were never facts. +""" +from alembic import op + +revision = "0126" +down_revision = "0125" +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.execute( + "DELETE FROM code_shape_uses u USING code_shapes s, notes n " + "WHERE u.shape_id = s.id AND u.snippet_id = n.id " + "AND u.basis = 'hook' " + "AND n.project_id IS NOT NULL AND n.project_id <> s.project_id" + ) + + +def downgrade() -> None: + pass