/** * Lane coherence / domain-spread signal (TRL-117 AC5). * * Reuses Idea Garden context-switch affinity (directory overlap) applied live * to a single lane journal. When spread > 1 domain, suggest `lane split`. */ import type { LaneMeta } from './lane.js'; import type { VcsOp } from './types.js'; export interface LaneDomain { /** Stable label for display (dir affinity, issue, or lane name). */ label: string; /** Files in this affinity group. */ files: string[]; /** How the domain was derived. */ source: 'affinity' | 'issue' | 'name' | 'intent'; } export interface LaneCoherence { domainCount: number; domains: LaneDomain[]; repoCount: number; repos: string[]; /** True when more than one domain affinity group is present. */ suggestSplit: boolean; reason?: string; } /** Partition consecutive file ops into directory-affinity groups (Garden heuristic). */ export declare function partitionFileOpsByAffinity(ops: VcsOp[]): VcsOp[][]; /** Infer repo roots touched by relative / absolute / parent paths. */ export declare function inferReposFromPaths(filePaths: string[]): string[]; /** * Live coherence report for one lane. * Domain spread > 1 → suggest `trellis lane split`. */ export declare function analyzeLaneCoherence(meta: LaneMeta, ops: VcsOp[], filePaths: string[]): LaneCoherence; //# sourceMappingURL=lane-coherence.d.ts.map