src/: main library and binary. Key submodules:core/(IDs, schema, snapshots),storage/(Lance datasets, LSM deltas),runtime/(WAL, L0 buffer, gryf runtime),query/(Cypher parser, planner, executor).tests/: integration tests (tests/*.rs).benches/: Criterion benchmarks (benches/micro_benchmarks.rs).docs/: design and status docs likeDESIGN.mdanddocs/KNOWN_ISSUES.md.demos/: runnable demo scripts and walkthroughs.
cargo build: compile the project.cargo run: run the local binary.cargo nextest run: run all tests (parallel, preferred).cargo nextest run -E 'test(<name>)': run a specific test by name.cargo nextest run --run-ignored all: include ignored/slow perf tests.cargo bench: run Criterion benchmarks.cargo fmt: format code.cargo clippy: lint for common issues.- Use
cargo nextestinstead ofcargo testfor regular test runs.
- Follow standard Rust style and format with
rustfmt. snake_casefor modules/functions,CamelCasefor types/traits,SCREAMING_SNAKE_CASEfor constants.- Keep file names aligned with module paths (e.g.,
src/runtime/wal.rs). - Add brief comments only when logic is not obvious.
- Unit tests live next to code in
src/**with#[cfg(test)] mod tests. - Integration tests live in
tests/and often use#[tokio::test]. - Benchmarks go in
benches/using Criterion. - If a test is flaky or sensitive to parallelism, document it in
docs/KNOWN_ISSUES.md. - For TCK compliance runs, use
scripts/run_tck_with_report.sh. - For filtered TCK subsets, use
scripts/run_tck_with_report.sh "~Match1"(replace filter as needed). - TCK run artifacts are written under
target/cucumber/(results/report) and synced intocompliance_reports/by mode.
- Use Conventional Commits as in history:
feat: ...,fix: ...,docs: ...,chore: .... - PRs should include a short rationale, tests run, and links to related issues.
- Update
DESIGN.mdandCYPHER_GAPS.mdwhen architecture or Cypher support changes.
- Do not perform any git action unless the user has explicitly instructed it in the current conversation turn.
- This includes all git commands and git-related workflows (for example:
status,diff,add,commit,push,pull,checkout,reset,merge,rebase,tag,stash,cherry-pick).