You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AGENTS.md
+36-23Lines changed: 36 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ IssunDB is an embedded graph database with vector and full-text search, written
8
8
Priorities, in order:
9
9
10
10
1. Correct storage behavior: ACID transactions, adjacency consistency, and ID uniqueness.
11
-
2. Clear boundaries between the storage engine, query layer, vector index, and public facade.
11
+
2. Clear boundaries between the storage engine, query layer, vector and text indexes, and public facade.
12
12
3. Reproducible, benchmark-backed performance; no premature optimization before correctness is covered.
13
13
4. Idiomatic Rust: ownership, zero-cost abstractions, and `unsafe` only where necessary and documented.
14
14
@@ -21,7 +21,7 @@ Priorities, in order:
21
21
the public facade, and the binding crates (`issundb-rest`, `issundb-mcp`, `issundb-py`) consume only the
22
22
`issundb` facade and its extension crates. Do not import across those boundaries in the wrong direction.
23
23
- Keep all mutable state inside `Graph` and `Storage`; do not introduce module-level `static mut` or `lazy_static` globals for runtime state.
24
-
- Writes are serialized via the `parking_lot::Mutex<()>` write lock on `Graph`; LMDB enforces the same constraint at the storage level. Do not bypass
24
+
- Writes are serialized via the `parking_lot::ReentrantMutex<()>` write lock on `Graph`; LMDB enforces the same constraint at the storage level. Do not bypass
25
25
either.
26
26
- Add comments only when they clarify a non-obvious storage invariant, an LMDB lifetime constraint, or a GraphBLAS semiring choice.
27
27
- Maintain the permissive license boundary of the workspace (MIT or Apache-2.0). Do not add dependencies or statically link libraries with copyleft,
@@ -43,13 +43,13 @@ Quick examples:
43
43
- Use Oxford commas in inline lists: "a, b, and c" not "a, b, c".
44
44
- Do not use em dashes. Restructure the sentence, or use a colon or semicolon instead.
45
45
- Avoid colorful adjectives and adverbs. Write "adjacency query" not "blazing adjacency query".
46
-
-Use noun phrases for checklist items, not imperative verbs. Write "temp directory teardown" not "tear down the temp directory".
46
+
-Prefer noun phrases for checklist items over imperative verbs. Write "temp directory teardown" not "tear down the temp directory".
47
47
- Headings in Markdown files must be in title case: "Build from Source" not "Build from source". Minor words (a, an, the, and, but, or, for, in, on,
48
48
at, to, by, of) stay lowercase unless they are the first word.
49
49
50
50
## Repository Layout
51
51
52
-
The current tree includes storage, CSR snapshots, vector search, hybrid retrieval primitives, Cypher, the CLI, an REST API, language bindings,
52
+
The current tree includes storage, CSR snapshots, vector search, hybrid retrieval primitives, Cypher, the CLI, a REST API, language bindings,
53
53
and shared test utilities.
54
54
This layout describes the current structure and target decoupled crate boundaries.
55
55
Do not invent modules that do not yet exist when answering questions, but do place new modules according to this map.
@@ -85,23 +85,28 @@ Do not invent modules that do not yet exist when answering questions, but do pla
85
85
(resize plus per-element set and drop) and the self-contained `dense_to_id`/`id_to_dense` mapping the matrix-view consumers read.
86
86
-`src/error.rs`: `Error` enum; all storage and serialization errors unify here.
0 commit comments