Complete 5 beads for the Phase B temporal intelligence feature: - bd-1oo: Register migration 015 (commit SHAs, closes watermark) and create migration 016 (mr_file_changes table with 4 indexes for Gate 4 file-history) - bd-20e: Define TimelineEvent model with 9 event type variants, EntityRef, ExpandedEntityRef, UnresolvedRef, and TimelineResult types. Ord impl for chronological sorting with stable tiebreak. - bd-32q: Implement timeline seed phase - FTS5 keyword search to entity IDs with discussion-to-parent resolution, entity dedup, and evidence note extraction with snippet truncation. - bd-ypa: Implement timeline expand phase - BFS cross-reference expansion over entity_references with bidirectional traversal, depth limiting, mention filtering, provenance tracking, and unresolved reference collection. - bd-3as: Implement timeline event collection - gathers Created, StateChanged, LabelAdded/Removed, MilestoneSet/Removed, Merged, and NoteEvidence events. Merged dedup (state=merged -> Merged variant only). NULL label/milestone fallbacks. Chronological interleaving with since filter and limit. 38 new tests, all 445 tests pass. All quality gates clean. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
21 lines
984 B
SQL
21 lines
984 B
SQL
-- Migration 016: MR file changes table
|
|
-- Powers file-history and trace commands (Gates 4-5)
|
|
|
|
CREATE TABLE mr_file_changes (
|
|
id INTEGER PRIMARY KEY,
|
|
merge_request_id INTEGER NOT NULL REFERENCES merge_requests(id) ON DELETE CASCADE,
|
|
project_id INTEGER NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
|
old_path TEXT,
|
|
new_path TEXT NOT NULL,
|
|
change_type TEXT NOT NULL CHECK (change_type IN ('added', 'modified', 'renamed', 'deleted')),
|
|
UNIQUE(merge_request_id, new_path)
|
|
);
|
|
|
|
CREATE INDEX idx_mfc_project_path ON mr_file_changes(project_id, new_path);
|
|
CREATE INDEX idx_mfc_project_old_path ON mr_file_changes(project_id, old_path) WHERE old_path IS NOT NULL;
|
|
CREATE INDEX idx_mfc_mr ON mr_file_changes(merge_request_id);
|
|
CREATE INDEX idx_mfc_renamed ON mr_file_changes(project_id, change_type) WHERE change_type = 'renamed';
|
|
|
|
INSERT INTO schema_version (version, applied_at, description)
|
|
VALUES (16, strftime('%s', 'now') * 1000, 'MR file changes table');
|