Lineage timeline
Why chronology decides direction.
The single most decisive fact in a lineage question is which repository existed first. This is why the timeline is rendered as a first-class part of every report.
The rules, in code
- A target whose earliest commit predates the origin's cannot have been derived from it. Every origin-to-target explanation is ruled out, whatever the similarity scores say.
- A target that appeared only after the origin matured is *permissive*, not evidentiary. Two unrelated projects started a year apart look identical, so this signal is capped and cannot carry a verdict alone.
- A signal whose first occurrence predates the target's first commit is directional evidence. The reverse is not.
These rules run in Python, not in model prose. A model cannot argue its way past them.
Reading the timeline
Each commit marker is real: a SHA, a timestamp, an author and a message from the repository itself. Where a defect was introduced and later fixed is visible, because Bug DNA reads code at specific points in history rather than only at HEAD.