Remove spurious collision-related code after ultrathink review
After 2 weeks of collision/stale-data fixes, reviewed all changes to identify
spurious code that is no longer needed after content-hash resolution was implemented.
**Removed:**
1. countReferences() function from collision.go (lines 274-328)
- Was used for reference-count based collision scoring
- Completely unused after switching to content-hash based resolution (commit 2e87329)
- Still exists in duplicates.go for deduplication (different use case)
2. ReferenceScore field from CollisionDetail struct
- Marked as DEPRECATED but never removed
- No longer used by ScoreCollisions() which now uses content hashing
3. TestCountReferences and TestCountReferencesWordBoundary tests
- Tested the now-deleted countReferences() function
- No longer relevant
**Fixed:**
- Updated CheckpointWAL comments to remove misleading "staleness detection" claim
- Staleness detection uses metadata (last_import_time), NOT file mtime
- CheckpointWAL is still valuable for data persistence and WAL size reduction
- Comments now accurately reflect actual benefits
**Verified:**
- All tests pass (internal/storage/sqlite)
- Content-hash collision resolution still works correctly
- No behavioral changes, just cleanup
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -31,7 +31,6 @@ type CollisionDetail struct {
|
||||
IncomingIssue *types.Issue // The issue from the import file
|
||||
ExistingIssue *types.Issue // The issue currently in the database
|
||||
ConflictingFields []string // List of field names that differ
|
||||
ReferenceScore int // Number of references to this issue (for scoring) - DEPRECATED
|
||||
RemapIncoming bool // If true, remap incoming; if false, remap existing
|
||||
}
|
||||
|
||||
@@ -271,62 +270,6 @@ func ScoreCollisions(ctx context.Context, s *SQLiteStorage, collisions []*Collis
|
||||
return nil
|
||||
}
|
||||
|
||||
// countReferences counts how many times an issue ID is referenced
|
||||
// Returns: text mentions + dependency references
|
||||
func countReferences(issueID string, allIssues []*types.Issue, allDeps map[string][]*types.Dependency) (int, error) {
|
||||
count := 0
|
||||
|
||||
// Count text mentions in all issues' text fields
|
||||
// Use word boundary regex to match exact IDs (e.g., "bd-10" but not "bd-100")
|
||||
pattern := fmt.Sprintf(`\b%s\b`, regexp.QuoteMeta(issueID))
|
||||
re, err := regexp.Compile(pattern)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("failed to compile regex for %s: %w", issueID, err)
|
||||
}
|
||||
|
||||
for _, issue := range allIssues {
|
||||
// Skip counting references in the issue itself
|
||||
if issue.ID == issueID {
|
||||
continue
|
||||
}
|
||||
|
||||
// Count mentions in description
|
||||
count += len(re.FindAllString(issue.Description, -1))
|
||||
|
||||
// Count mentions in design
|
||||
count += len(re.FindAllString(issue.Design, -1))
|
||||
|
||||
// Count mentions in notes
|
||||
count += len(re.FindAllString(issue.Notes, -1))
|
||||
|
||||
// Count mentions in acceptance criteria
|
||||
count += len(re.FindAllString(issue.AcceptanceCriteria, -1))
|
||||
}
|
||||
|
||||
// Count dependency references
|
||||
// An issue can be referenced as either IssueID or DependsOnID
|
||||
for _, deps := range allDeps {
|
||||
for _, dep := range deps {
|
||||
// Skip self-references
|
||||
if dep.IssueID == issueID && dep.DependsOnID == issueID {
|
||||
continue
|
||||
}
|
||||
|
||||
// Count if this issue is the source (IssueID)
|
||||
if dep.IssueID == issueID {
|
||||
count++
|
||||
}
|
||||
|
||||
// Count if this issue is the target (DependsOnID)
|
||||
if dep.DependsOnID == issueID {
|
||||
count++
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return count, nil
|
||||
}
|
||||
|
||||
// deduplicateIncomingIssues removes content-duplicate issues within the incoming batch
|
||||
// Returns deduplicated slice, keeping the first issue ID (lexicographically) for each unique content
|
||||
func deduplicateIncomingIssues(issues []*types.Issue) []*types.Issue {
|
||||
|
||||
Reference in New Issue
Block a user