audit fixes, repo restructure, and documentation

Soundness and performance audit (17 fixes):
- See AUDIT.md for full details and @claude comments in code

Repo restructure:
- Inline json-ptr and json-patch submodules as regular directories
- Remove cbor submodule, replace serde_cbor with ciborium
- Rename patch-db/ -> core/, patch-db-macro/ -> macro/,
  patch-db-macro-internals/ -> macro-internals/, patch-db-util/ -> util/
- Purge upstream CI/CD, bench, and release cruft from json-patch
- Remove .gitmodules

Test fixes:
- Fix proptest doesnt_crash (unique file paths, proper close/cleanup)
- Add PatchDb::close() for clean teardown

Documentation:
- Add README.md, ARCHITECTURE.md, CONTRIBUTING.md, CLAUDE.md, AUDIT.md
- Add TSDocs to TypeScript client exports

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Matt Hill
2026-02-23 19:06:42 -07:00
parent 05c93290c7
commit 86b0768bbb
46 changed files with 5744 additions and 95 deletions

48
core/Cargo.toml Normal file
View File

@@ -0,0 +1,48 @@
[package]
authors = ["Aiden McClelland <aiden@start9labs.com>"]
categories = ["database-implementations"]
description = "A database that tracks state updates as RFC 6902 JSON Patches"
edition = "2018"
keywords = ["json", "json-pointer", "json-patch"]
license = "MIT"
name = "patch-db"
readme = "README.md"
repository = "https://github.com/Start9Labs/patch-db"
version = "0.1.0"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[features]
debug = ["tracing"]
trace = ["debug", "tracing-error"]
unstable = []
[dependencies]
async-trait = "0.1.42"
fd-lock-rs = "0.1.3"
futures = "0.3.8"
imbl = "6"
imbl-value = "0.4.1"
json-patch = { path = "../json-patch" }
json-ptr = { path = "../json-ptr" }
lazy_static = "1.4.0"
tracing = { version = "0.1.29", optional = true }
tracing-error = { version = "0.2.0", optional = true }
nix = "0.30.1"
patch-db-macro = { path = "../macro" }
serde = { version = "1", features = ["rc"] }
ciborium = "0.2"
thiserror = "2"
tokio = { version = "1", features = ["sync", "fs", "rt", "io-util", "macros"] }
[dev-dependencies]
proptest = "1.0.0"
serde = { version = "1.0.118", features = ["rc", "derive"] }
tokio = { version = "1.0.1", features = [
"sync",
"fs",
"rt",
"rt-multi-thread",
"io-util",
"macros",
] }
rand = "0.9.1"