How ForkReason works
The eight-stage pipeline, end to end.
Analysis runs in a durable worker, never inside an HTTP request. Each stage below is observable in the UI, and each one reflects work that actually happened.
StageWhat it does
Repository snapshotsMaterialize the pinned commit with git archive. Never execute repository code.
Commit historyRead chronology for both repositories. Establishes which came first.
Structural fingerprintsNormalized token, structure and constant fingerprints across both trees.
Historical signalsBug, test, language and architecture layers, weighted by rarity.
Shared upstreamLook for a plausible common ancestor, which must predate the later repository.
Alternative explanationsScore every explanation, including the ones that exonerate.
Evidence manifestBuild the canonical bounded manifest and hash it.
Consensus preparationAssemble the bounded digest a GenLayer validator will evaluate.
Determinism
The same pinned commits and the same configuration produce a byte-identical evidence manifest, and therefore the same SHA-256 hash. Analysis is reproducible, which is what makes the hash worth recording.
Bounded by construction
Every intake has explicit limits on repository size, file size, file count, history depth, evidence count and wall-clock time. A limit that truncates the inventory is reported to the user rather than hidden.