Compare two DB snapshots of symbols for one file (before vs after scan).
Used by the daemon for push-based structural event detection.
Returns (changes, modified_sym_ids). Budget guard clears modified_sym_ids
when total changes exceed BUDGET_GUARD_THRESHOLD.
Compare old (git blob parsed) symbols against current (DB) symbols for one file.
Used by since_against_ref() for git ref comparison.
Returns (changes, modified_sym_ids). Budget guard clears modified_sym_ids
when total changes exceed BUDGET_GUARD_THRESHOLD.