1901010996
Addresses the P1 brittleness in the Step 3 verifier so learned_from edges (graph/live.ts:413) can't be silently zeroed on stage. - Capture overlap AT detection time as Collision.gitOverlap (podman.ts), while engineer_states are still fresh, instead of re-deriving from possibly-stale state when the user clicks. deriveWasRealCollision() now prefers this stored evidence and only falls back to a live re-derivation for older collisions. - Canonicalize engineer names (trim + lowercase) on both the capture and the fallback path, so "Karti" vs "karti" no longer misses the git state. - conflictKey now reuses the shared comparableBasename() helper (dedupe). shared/src/collision.ts gains optional `gitOverlap?: boolean` (additive). shared rebuilt; backend+frontend typecheck + eslint pass. PLAN.md rung 3 updated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>