Every ticket as the root of its provenance graph — goal, patch, approval, runs and (as the ticket-class build lands) mandate, manifestations, guarantees, journey, artifacts and children. Rendered through the <<<TicketGraphList>>> tag.
Build: source dedup engine — cluster the match collection into canonical + duplicates (exact via sha, near via similarity)
goal
Consume the resolver's match collection and CLUSTER it: exact duplicates via content sha256 (identical blobs across repos), near-duplicates via similarity threshold (#190), grouped by AST-normalized function/module (codebean lower_*, #183). Output per cluster: the CANONICAL source + its duplicate locations {repo, path, line-range, associated tickets} + a dedup recommendation (which to keep, which to collapse/reference). Read-only proposal (no auto-delete). ACCEPTANCE: seed N known copies of a module across repos; the engine clusters all N, names one canonical, and lists the rest as dups with their tickets.
patch
none
approval
unapproved
runs
no runs recorded
mandate (clauses)
not yet recorded — lands with the ticket-class build
manifestations
not yet recorded — lands with the ticket-class build
guarantees
not yet recorded — lands with the ticket-class build
journey (blunders & successes)
not yet recorded — lands with the ticket-class build
artifacts (forge)
not yet recorded — lands with the ticket-class build