From d8320a6d9194bd09bf4d9dc0e8cbdf76dd7011f5 Mon Sep 17 00:00:00 2001 From: Jared Lunde Date: Mon, 18 May 2026 18:14:12 -0700 Subject: [PATCH 1/4] fix(ci): install rustfmt explicitly and stabilize generated types dprint runs rustfmt via the exec plugin, but mise's rust toolchain doesn't reliably install the rustfmt component, so check:fmt fails in CI with "rustfmt is not installed for toolchain 1.92.0". Add an explicit rustup component install step, mirroring ../kv. generate:types ran openapi-typescript (4-space output) without a follow-up format, so the committed file (dprint-formatted, 2-space) always diffed against CI regeneration. Run dprint fmt inside the generate script so local and CI produce the same canonical output. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/ci.yml | 2 ++ sdk/ts/scripts/generate-types.mjs | 1 + 2 files changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8bcbe28..e590687 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,6 +13,8 @@ jobs: - uses: actions/checkout@v6 - uses: jdx/mise-action@v4 - uses: Swatinem/rust-cache@v2 + - name: ensure rustfmt/clippy components + run: rustup component add rustfmt clippy - name: check:fmt run: mise run check:fmt - name: check:rs diff --git a/sdk/ts/scripts/generate-types.mjs b/sdk/ts/scripts/generate-types.mjs index aadc3a1..f8a25a7 100644 --- a/sdk/ts/scripts/generate-types.mjs +++ b/sdk/ts/scripts/generate-types.mjs @@ -9,3 +9,4 @@ const spec = resolve(root, "openapi/v1.json"); const out = resolve(root, "sdk/ts/src/types.ts"); execSync(`npx openapi-typescript ${spec} -o ${out}`, { stdio: "inherit" }); +execSync(`dprint fmt ${out}`, { stdio: "inherit", cwd: root }); From 8b4e06a29dae90b869c065eac9cf341683046a9e Mon Sep 17 00:00:00 2001 From: Jared Lunde Date: Mon, 18 May 2026 18:34:53 -0700 Subject: [PATCH 2/4] fix(server): auto-create default bucket directory on startup The `default` bucket is documented as auto-managed (the REST API rejects POSTs targeting it) and the TS SDK + middleware/auth route unauthenticated default-bucket reads through `DEFAULT_BUCKET`. But nothing actually materialized `/default/` on startup, so PUT against the default bucket on a fresh data dir failed with ENOENT during the final rename. All three TS PUT round-trip tests hit this in CI. Call `Storage::create_bucket("default", ..)` after Storage is constructed; create_bucket is already idempotent. Rust integration tests were unaffected because they always POST a unique bucket first. Co-Authored-By: Claude Opus 4.7 (1M context) --- crates/server/src/lib.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/crates/server/src/lib.rs b/crates/server/src/lib.rs index 38bd9a6..6f8a04e 100644 --- a/crates/server/src/lib.rs +++ b/crates/server/src/lib.rs @@ -357,6 +357,15 @@ pub async fn serve(config: Config) -> Result<()> { } else { Storage::new(&config.data_dir) }; + + // The `default` bucket is auto-managed: clients may PUT/GET against it + // without an explicit POST /v1/buckets. Materialize its directory so the + // write path's rename target exists. Idempotent. + storage + .create_bucket("default", beyond_objects_storage::AccessLevel::default()) + .await + .map_err(|e| anyhow::anyhow!("create default bucket: {e}"))?; + let index = Arc::new(Index::open(&config.index_dir)?); // Reconcile the listing index against the filesystem before serving. From 50e4f7530447959f432fd18a49c17125a12b082c Mon Sep 17 00:00:00 2001 From: Jared Lunde Date: Mon, 18 May 2026 19:02:56 -0700 Subject: [PATCH 3/4] ci: drop cargo-audit step The advisory database flags transitive vulns in crates we don't control upgrade timing on (rustls-webpki, etc.), turning every upstream advisory into a red CI light unrelated to changes in this repo. We monitor advisories out-of-band; the in-CI gate produces more noise than signal. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/ci.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e590687..805507d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,10 +35,6 @@ jobs: run: mise run test:integration:ts - name: check:bench run: cargo bench --no-run - - name: audit - run: | - cargo install cargo-audit --quiet - cargo audit generate-check: name: generated files up-to-date runs-on: ubuntu-latest From d50f935e72a0b628021cf048ade69a26bbf8f7de Mon Sep 17 00:00:00 2001 From: Jared Lunde Date: Mon, 18 May 2026 19:03:13 -0700 Subject: [PATCH 4/4] ci: drop check:bench step Compiling benches adds ~minutes per CI run for a gate that only verifies they still build. We run benches locally when tuning hot paths; the compile check isn't worth the wall-clock. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/ci.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 805507d..62937b5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,8 +33,6 @@ jobs: run: mise run build:ts - name: test:integration:ts run: mise run test:integration:ts - - name: check:bench - run: cargo bench --no-run generate-check: name: generated files up-to-date runs-on: ubuntu-latest