Seam structure
- ID — ULID string for unique identification
- CellA / CellB — Coordinates of the two related cells
- SeamType — Type of relationship (e.g., “conflict”, “supersedes”)
- Reason — Human-readable explanation of the relationship
- ConfidenceDelta — Difference in confidence between the two cells
- DetectedAt — When the seam was created
- ResolutionStatus — Current state (e.g., “unresolved”, “merged”, “superseded”)
- ResolutionNote — Notes on how the conflict was resolved
Seam types
Conflict
A conflict seam marks outright contradictions between two facts:Supersession
A supersession seam marks preference evolution — one cell replaces another:Finding seams
Query seams within a radius of a center coordinate:FindSeamsAt:
Resolving seams
Resolution is an explicit application-guided operation. Update the resolution status:- unresolved — Default state, conflict still active
- merged — Cells were combined into a new cell
- superseded — One cell replaced the other
- archived — Conflict deemed irrelevant or outdated
Seam visibility in context
When assembling context withLoadContextPack, you can include seams and control supersession filtering:
Seam storage
Seams are stored as first-class entities with their own keyspace:- Primary key:
seam/<ulid> - Secondary:
seam-by-cells/<packed_a>/<packed_b>/<ulid>
Secondary indexes
Seams are indexed by source and time for efficient discovery:Manual vs automatic seam creation
Manual:- Explicit
MarkConflictorMarkSupersedescalls - Full control over when seams are created
- Recommended for production use
- Synchronous check during
PutCellorLinkCells - Creates seam when embedding delta plus provenance mismatch exceeds threshold
- Optional background scanning for heavy analysis
See also
- Cells — Core data units
- Edges — Directed relationships between cells
- Context assembly — Budgeted context with seam inclusion