diff --git a/Cargo.lock b/Cargo.lock
index cf6d2a6..217ee09 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1527,6 +1527,16 @@ dependencies = [
"syn",
]
+[[package]]
+name = "pythonize"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ffd1c3ef39c725d63db5f9bc455461bafd80540cb7824c61afb823501921a850"
+dependencies = [
+ "pyo3",
+ "serde",
+]
+
[[package]]
name = "quote"
version = "1.0.45"
@@ -1691,6 +1701,7 @@ dependencies = [
"futures-util",
"parking_lot 0.12.5",
"pyo3",
+ "pythonize",
"serde",
"serde_json",
"tokio",
diff --git a/Makefile b/Makefile
index 71a583d..c8b0c27 100644
--- a/Makefile
+++ b/Makefile
@@ -74,6 +74,11 @@ docker-down:
lint: $(RUFF)
$(RUFF) check .
+.PHONY: format
+format: $(RUFF)
+ $(RUFF) check --fix .
+ $(RUFF) format .
+
$(RUFF):
@echo "Installing ruff..."
@python3 -m venv .venv || true
diff --git a/docs/proposals/SNAPSHOTS.md b/docs/proposals/SNAPSHOTS.md
index 00e1459..e103df6 100644
--- a/docs/proposals/SNAPSHOTS.md
+++ b/docs/proposals/SNAPSHOTS.md
@@ -192,7 +192,7 @@ impl SnapshotManager {
/// Find snapshot by tag (O(1) lookup via tag ref)
/// Returns single snapshot since tags are immutable
- pub async fn find_by_tag(&self, tag: &str) -> Result