mirror of
https://github.com/ModernRelay/omnigraph.git
synced 2026-06-27 02:39:38 +02:00
docs(user): split language/branching pages + add front-door pages (Phase 2) (#225)
Content build-out on top of the Phase 1 topic move. No behavior changes. Splits (existing content relocated, cross-linked): - queries/index.md → mutations/index.md (insert/update/delete + the inserts-vs-deletes rule) and search/index.md (the multi-modal search functions + a hybrid-ranking overview tying nearest/bm25/rrf together). queries/index.md now covers the read shape and points at both. - branching/index.md → branching/time-travel.md (snapshots/time travel) and branching/merge.md (three-way merge + the 7 conflict kinds, verified against error.rs MergeConflictKind). New pages (written from the code, user-facing): - quickstart.md — init → load → query → branch, with verified CLI flags. - concepts/index.md — what OmniGraph is + the L1/L2 (Lance/OmniGraph) framing. Expanded operations/audit.md from a 7-line struct dump into a real actor-tracking page (server token-resolved vs CLI --as chain; reading the trail; the omnigraph:recovery reserved actor). Index wiring: docs/user/index.md and AGENTS.md's topic table link every new page; also normalized AGENTS.md's docs/user link display text to match the Phase 1 retargeted paths. Verified: zero broken .md links; check-agents-md.sh green (57 links, 54 docs). Deferred to Phase 3: de-dev polish (grammar paths, IR internals still in queries/branching), guides/, and a possible reference/config.md split (the config schema is already coherent in cli/reference.md). Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
d46e50dd6d
commit
612741b387
11 changed files with 399 additions and 67 deletions
|
|
@ -43,11 +43,9 @@ Notes:
|
|||
|
||||
## L2 — Snapshots & time travel
|
||||
|
||||
- `snapshot()` — current snapshot for the bound branch; cached.
|
||||
- `snapshot_of(target)` — snapshot at a `ReadTarget` (branch | snapshot id).
|
||||
- `snapshot_at_version(v: u64)` — historical snapshot from any manifest version.
|
||||
- `entity_at(table_key, id, version)` — single-entity time travel without building a full snapshot.
|
||||
- A `Snapshot` is a `(version, HashMap<table_key, SubTableEntry>)` — cheap to build, snapshot-isolated cross-table reads.
|
||||
Reading a branch at a past version, or a single entity at a past version, is
|
||||
covered on the [time travel](time-travel.md) page. Merging branches and the
|
||||
conflict kinds are on the [merge](merge.md) page.
|
||||
|
||||
## L2 — Internal system branches
|
||||
|
||||
|
|
|
|||
47
docs/user/branching/merge.md
Normal file
47
docs/user/branching/merge.md
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
# Merging Branches
|
||||
|
||||
Merging integrates the changes on one branch into another. OmniGraph merges are
|
||||
**three-way and row-level**: it compares both branches against their common
|
||||
ancestor and merges each node/edge table row by row, then publishes the result as
|
||||
**one atomic commit** across the whole graph.
|
||||
|
||||
```bash
|
||||
omnigraph branch merge review/2026-04-25 --into main s3://bucket/graph.omni
|
||||
```
|
||||
|
||||
`branch merge <source> [--into <target>]` merges `<source>` into `<target>`
|
||||
(default `main`).
|
||||
|
||||
## Outcomes
|
||||
|
||||
A merge resolves to one of three outcomes:
|
||||
|
||||
- **Already up to date** — the target already contains every change on the source;
|
||||
nothing to do.
|
||||
- **Fast-forward** — the target has no changes the source lacks, so the target
|
||||
simply advances to the source.
|
||||
- **Merged** — both sides diverged; a new merge commit is created with two parents.
|
||||
|
||||
## Conflicts
|
||||
|
||||
When both branches changed the same data incompatibly, the merge fails with a
|
||||
structured list of conflicts (the HTTP server returns `409` with a
|
||||
`merge_conflicts[]` array). No partial result is published — the merge is
|
||||
all-or-nothing. The conflict kinds are:
|
||||
|
||||
| Kind | Meaning |
|
||||
|---|---|
|
||||
| `DivergentInsert` | The same id was inserted on both branches. |
|
||||
| `DivergentUpdate` | The same row was updated differently on both branches. |
|
||||
| `DeleteVsUpdate` | One side deleted a row the other side updated. |
|
||||
| `OrphanEdge` | An edge references a node the other side deleted. |
|
||||
| `UniqueViolation` | The merged result would violate a unique constraint. |
|
||||
| `CardinalityViolation` | The merged result would violate an edge cardinality constraint. |
|
||||
| `ValueConstraintViolation` | The merged result would violate a value constraint (enum/range). |
|
||||
|
||||
Each conflict carries the table, the row id (when applicable), the kind, and a
|
||||
message. Resolve conflicts by reconciling the two branches — typically by making
|
||||
the conflicting change on one side and re-merging.
|
||||
|
||||
See [branches & commits](index.md) for the branch and commit-DAG model, and
|
||||
[changes](changes.md) for diffing two branches before you merge.
|
||||
31
docs/user/branching/time-travel.md
Normal file
31
docs/user/branching/time-travel.md
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
# Snapshots & Time Travel
|
||||
|
||||
Every read in OmniGraph happens against a **snapshot** — a consistent, cross-table
|
||||
view of the graph at one manifest version. A query holds one snapshot for its whole
|
||||
lifetime, so it never sees a partial write from a concurrent commit (see
|
||||
[transactions](transactions.md)).
|
||||
|
||||
## Reading the past
|
||||
|
||||
- **Current head** — by default a read targets the current head of the bound branch.
|
||||
- **By snapshot id** — read a branch or a specific snapshot id (`--snapshot` on
|
||||
`omnigraph read`).
|
||||
- **By version** — reconstruct a historical snapshot from any past manifest version.
|
||||
- **Single entity** — look up one entity at a past version without building a full
|
||||
snapshot (cheaper when you only need one node or edge).
|
||||
|
||||
Snapshots are cheap to build: a snapshot is just the set of visible sub-table
|
||||
versions at a manifest version, so cross-table reads stay snapshot-isolated.
|
||||
|
||||
## CLI
|
||||
|
||||
```bash
|
||||
# Read a query against a past snapshot
|
||||
omnigraph read --query ./q.gq --name find --snapshot <snapshot-id> s3://bucket/graph.omni
|
||||
```
|
||||
|
||||
Time travel composes with branches: every branch has its own version history, and
|
||||
you can read any branch at any of its past versions. Commits and the commit DAG
|
||||
that these versions correspond to are described in
|
||||
[branches & commits](index.md); diffing two versions is on the
|
||||
[changes](changes.md) page.
|
||||
Loading…
Add table
Add a link
Reference in a new issue