mirror of
https://github.com/ModernRelay/omnigraph.git
synced 2026-07-12 03:12:11 +02:00
Refactor AGENTS.md from encyclopedia to map; move spec into docs/
Splits the 990-line AGENTS.md into a 184-line map (architecture, where-to-find index, always-on invariants, capability matrix, maintenance contract) plus 18 new docs/*.md files holding the deep content per topic (storage, schema and query languages, indexes, embeddings, branches/commits, runs, merge, changes, execution, policy, server, CLI reference, audit, errors, CI, constants, v0.3.1 notes). Adds scripts/check-agents-md.sh and a check_agents_md CI job that verifies every docs/ link in AGENTS.md resolves and every doc in the canonical set is linked. CLAUDE.md remains a symlink to AGENTS.md. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
cfea41e942
commit
a335d98854
23 changed files with 1069 additions and 924 deletions
30
docs/merge.md
Normal file
30
docs/merge.md
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
# Merging (three-way) and Conflicts
|
||||
|
||||
`exec/merge.rs`.
|
||||
|
||||
## Strategy
|
||||
|
||||
Ordered, row-by-row cursor merge:
|
||||
|
||||
- `OrderedTableCursor` scans each table sorted by `id` and supports peek/pop matching.
|
||||
- `StagedTableWriter` buffers `MERGE_STAGE_BATCH_ROWS = 8192` rows into a temp Lance dataset (`OMNIGRAPH_MERGE_STAGING_DIR`).
|
||||
- The merge runs per sub-table; results are published as one atomic manifest update.
|
||||
|
||||
## Outcome enum
|
||||
|
||||
`MergeOutcome { AlreadyUpToDate | FastForward | Merged }`
|
||||
|
||||
## Conflict types (`error.rs`)
|
||||
|
||||
```
|
||||
MergeConflictKind:
|
||||
DivergentInsert // same id inserted on both branches
|
||||
DivergentUpdate // updated differently on both branches
|
||||
DeleteVsUpdate // one side deletes, other updates
|
||||
OrphanEdge // edge references a node deleted by the other side
|
||||
UniqueViolation
|
||||
CardinalityViolation
|
||||
ValueConstraintViolation
|
||||
```
|
||||
|
||||
Returned as `OmniError::MergeConflicts(Vec<MergeConflict { table_key, row_id?, kind, message }>)`. The HTTP server surfaces this as a 409 with structured `merge_conflicts[]` (top 3 + "+N more").
|
||||
Loading…
Add table
Add a link
Reference in a new issue