feat(mcp): the books door served in-process for fuzzing (P12)

The local socket and the tunnel already mount the same four routes; naming
that table `router` gives the fuzz targets the very door a client reaches,
not a copy of it. `local/fuzz_door` (behind the `fuzzing` feature, off in
every shipped build) builds a book, two live tokens and that router, and
answers one request through `tower::oneshot`: no socket, no port, no clock.

The target's oracle is then the code that enforces it: INVARIANT 8 (a book
only behind a live bearer token) is checked by asking `Books::bearer`, not
by a second model of the rule that could drift from it.
This commit is contained in:
swaits committed 2026-11-05 08:36:15 -07:00
1 parent 4b0196e416
commit 5e474cd1ac
3 files changed
+210 -7

No files matched your search

+6
View File
@@ -39,12 +39,18 @@ toml = "1"
# The vault's TINs, decoded for the filing scan (tin_files.rs), are wiped
# from memory when dropped, as the vault's own are.
zeroize = "1"
tempfile = { version = "3", optional = true }
# The socket's peer credentials (SO_PEERCRED, getpeereid) for local.rs's
# same-user check: std has no call for them.
[target.'cfg(unix)'.dependencies]
libc = "0.2"
[features]
# The door in-process, for fuzz/ (local.rs fuzz_door). Off in every build
# but the fuzz workspace's.
fuzzing = ["dep:tempfile"]
[lints]
workspace = true