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

View File

@@ -0,0 +1,286 @@
[
{
"comment": "Can revert add (replace key)",
"doc": {
"foo": {
"bar": {
"baz": true
}
}
},
"patch": [
{
"op": "add",
"path": "/foo",
"value": false
},
{
"op": "remove",
"path": "/foo/bar"
}
],
"error": "invalid pointer"
},
{
"comment": "Can revert add (insert into array)",
"doc": {
"foo": [1, 2, 3]
},
"patch": [
{
"op": "add",
"path": "/foo/1",
"value": false
},
{
"op": "remove",
"path": "/foo/bar"
}
],
"error": "invalid pointer"
},
{
"comment": "Can revert add (insert last element into array)",
"doc": {
"foo": [1, 2, 3]
},
"patch": [
{
"op": "add",
"path": "/foo/-",
"value": false
},
{
"op": "remove",
"path": "/foo/bar"
}
],
"error": "invalid pointer"
},
{
"comment": "Can revert remove (object)",
"doc": {
"foo": {
"bar": {
"baz": true
}
}
},
"patch": [
{
"op": "remove",
"path": "/foo"
},
{
"op": "remove",
"path": "/foo/bar"
}
],
"error": "invalid pointer"
},
{
"comment": "Can revert remove (array)",
"doc": {
"foo": [1, 2, 3]
},
"patch": [
{
"op": "remove",
"path": "/foo/1"
},
{
"op": "remove",
"path": "/foo/bar"
}
],
"error": "invalid pointer"
},
{
"comment": "Can revert replace (replace key)",
"doc": {
"foo": {
"bar": {
"baz": true
}
}
},
"patch": [
{
"op": "replace",
"path": "/foo",
"value": false
},
{
"op": "remove",
"path": "/foo/bar"
}
],
"error": "invalid pointer"
},
{
"comment": "Can revert replace (replace array element)",
"doc": {
"foo": [1, 2, 3]
},
"patch": [
{
"op": "replace",
"path": "/foo/1",
"value": false
},
{
"op": "remove",
"path": "/foo/bar"
}
],
"error": "invalid pointer"
},
{
"comment": "Can revert move (move into key)",
"doc": {
"foo": {
"bar": {
"baz": true
}
},
"abc": {
"def": {
"ghi": false
}
}
},
"patch": [
{
"op": "move",
"from": "/abc",
"path": "/foo",
"value": false
},
{
"op": "remove",
"path": "/foo/bar"
}
],
"error": "invalid pointer"
},
{
"comment": "Can revert move (move into array)",
"doc": {
"foo": [1, 2, 3],
"abc": {
"def": {
"ghi": false
}
}
},
"patch": [
{
"op": "move",
"path": "/foo/1",
"from": "/abc"
},
{
"op": "remove",
"path": "/foo/bar"
}
],
"error": "invalid pointer"
},
{
"comment": "Can revert move (move into last element of an array)",
"doc": {
"foo": [1, 2, 3],
"abc": {
"def": {
"ghi": false
}
}
},
"patch": [
{
"op": "move",
"path": "/foo/-",
"from": "/abc"
},
{
"op": "remove",
"path": "/foo/bar"
}
],
"error": "invalid pointer"
},
{
"comment": "Can revert copy (copy into key)",
"doc": {
"foo": {
"bar": {
"baz": true
}
},
"abc": {
"def": {
"ghi": false
}
}
},
"patch": [
{
"op": "copy",
"from": "/abc",
"path": "/foo",
"value": false
},
{
"op": "remove",
"path": "/foo/bar"
}
],
"error": "invalid pointer"
},
{
"comment": "Can revert copy (copy into array)",
"doc": {
"foo": [1, 2, 3],
"abc": {
"def": {
"ghi": false
}
}
},
"patch": [
{
"op": "copy",
"path": "/foo/1",
"from": "/abc"
},
{
"op": "remove",
"path": "/foo/bar"
}
],
"error": "invalid pointer"
},
{
"comment": "Can revert copy (copy into last element of an array)",
"doc": {
"foo": [1, 2, 3],
"abc": {
"def": {
"ghi": false
}
}
},
"patch": [
{
"op": "copy",
"path": "/foo/-",
"from": "/abc"
},
{
"op": "remove",
"path": "/foo/bar"
}
],
"error": "invalid pointer"
}
]