From d1f2195d2aa61ab5369b8673b00d6806e7febce2 Mon Sep 17 00:00:00 2001 From: Justin Chung Date: Tue, 1 Sep 2026 21:35:46 -0400 Subject: [PATCH 1/4] chore(wire)!: move capsule-wire into the Salvo review bucket `capsule-wire` carried the framework-free response taxonomy `S-C27` extracted so the contract could outlive the transport. The transport swapped and the taxonomy did not come with it: `capsule-server::problem`, `::limits` and `::body` own it on Kynos, no live crate names `capsule_wire`, and a third of the crate is a `salvo_responses!` adapter for a framework that left the workspace with `S-C59`. Its only real consumers are the 42 macro call sites under `legacy-review/server-salvo/`, so the crate lands beside them at `legacy-review/server-salvo/wire/` with its manifest disabled, per the convention every other quarantined crate follows. `capsule-server` loses a path dependency it never imported; the module comment states where the taxonomy went instead of linking a crate that is no longer built. BREAKING CHANGE: `capsule-wire` is no longer a workspace member and `capsule-server` no longer depends on it. Nothing in the workspace imported it, so no public API moves. --- Cargo.lock | 9 --------- Cargo.toml | 2 -- capsule-server/Cargo.toml | 3 --- capsule-server/src/lib.rs | 5 +++-- .../server-salvo/wire/Cargo.toml.disabled | 0 .../server-salvo/wire}/src/headers.rs | 0 .../server-salvo/wire}/src/lib.rs | 0 .../server-salvo/wire}/src/response.rs | 0 .../server-salvo/wire}/src/salvo_adapter.rs | 0 9 files changed, 3 insertions(+), 16 deletions(-) rename capsule-wire/Cargo.toml => legacy-review/server-salvo/wire/Cargo.toml.disabled (100%) rename {capsule-wire => legacy-review/server-salvo/wire}/src/headers.rs (100%) rename {capsule-wire => legacy-review/server-salvo/wire}/src/lib.rs (100%) rename {capsule-wire => legacy-review/server-salvo/wire}/src/response.rs (100%) rename {capsule-wire => legacy-review/server-salvo/wire}/src/salvo_adapter.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index af416a67..7fdfcde9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -753,7 +753,6 @@ dependencies = [ "capsule-core", "capsule-i18n", "capsule-sdk", - "capsule-wire", "clap", "color-eyre", "http-body-util", @@ -783,14 +782,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "capsule-wire" -version = "0.1.0" -dependencies = [ - "serde", - "serde_json", -] - [[package]] name = "cargo-platform" version = "0.1.9" diff --git a/Cargo.toml b/Cargo.toml index 12b28f90..a848730b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,7 +9,6 @@ members = [ "capsule-sdk", "capsule-wasm", "capsule-server", - "capsule-wire", "xtask", ] # capsule-sdk's REST client is generated at build time by spargen from the committed @@ -22,7 +21,6 @@ default-members = [ "capsule-core-ffi", "capsule-i18n", "capsule-server", - "capsule-wire", ] resolver = "3" diff --git a/capsule-server/Cargo.toml b/capsule-server/Cargo.toml index a79b4def..9040075f 100644 --- a/capsule-server/Cargo.toml +++ b/capsule-server/Cargo.toml @@ -44,9 +44,6 @@ kynos = { workspace = true } # refuse-by-default invariants — and the crypto types they read. The default `native` feature pulls # SQLite, sqlite-vec, OpenMLS and libcrux, none of which a key-free server touches. capsule-core = { path = "../capsule-core", default-features = false } -# The framework-free wire contracts (slice `S-C27`). The response taxonomy lives here so it -# outlives whichever framework renders it. -capsule-wire = { path = "../capsule-wire" } serde = { workspace = true } # The state ports (slice `S-C29`). `thiserror` because these are a library surface; # `jiff` because every record and every TTL is a time and chrono is banned; `tracing` because diff --git a/capsule-server/src/lib.rs b/capsule-server/src/lib.rs index 55afe755..32a4bf4e 100644 --- a/capsule-server/src/lib.rs +++ b/capsule-server/src/lib.rs @@ -4,8 +4,9 @@ //! //! The previous server was Salvo, and its wire-contract types were themselves salvo-typed, so //! replacing it was never a transport swap (`SLICES.md`, the salvo→kynos row). `S-C27` moved the -//! response taxonomy into the framework-free [`capsule_wire`]; this crate is where the surfaces -//! that taxonomy describes get rebuilt. +//! response taxonomy into a framework-free crate so the contract could outlive the transport; +//! that crate retired with the Salvo tree it adapted (ADR-0004), and this crate is where the +//! surfaces the taxonomy described get rebuilt. `problem`, `limits` and `body` own it now. //! //! # What the framework buys, and why it was chosen //! diff --git a/capsule-wire/Cargo.toml b/legacy-review/server-salvo/wire/Cargo.toml.disabled similarity index 100% rename from capsule-wire/Cargo.toml rename to legacy-review/server-salvo/wire/Cargo.toml.disabled diff --git a/capsule-wire/src/headers.rs b/legacy-review/server-salvo/wire/src/headers.rs similarity index 100% rename from capsule-wire/src/headers.rs rename to legacy-review/server-salvo/wire/src/headers.rs diff --git a/capsule-wire/src/lib.rs b/legacy-review/server-salvo/wire/src/lib.rs similarity index 100% rename from capsule-wire/src/lib.rs rename to legacy-review/server-salvo/wire/src/lib.rs diff --git a/capsule-wire/src/response.rs b/legacy-review/server-salvo/wire/src/response.rs similarity index 100% rename from capsule-wire/src/response.rs rename to legacy-review/server-salvo/wire/src/response.rs diff --git a/capsule-wire/src/salvo_adapter.rs b/legacy-review/server-salvo/wire/src/salvo_adapter.rs similarity index 100% rename from capsule-wire/src/salvo_adapter.rs rename to legacy-review/server-salvo/wire/src/salvo_adapter.rs From 443cc002fe2e064a03de8cbd2fa95330933b5171 Mon Sep 17 00:00:00 2001 From: Justin Chung Date: Tue, 1 Sep 2026 21:38:50 -0400 Subject: [PATCH 2/4] chore(xtask,ci): close the boundary capsule-wire left `architecture-check` reads `cargo metadata`, so listing `capsule-wire` in `RETIRED_DEPENDENCIES` makes a re-added path dependency in any member a boundary violation rather than a review question. It joins the list under its retired arm, beside `capsule-media`. It stays out of `RETIRED_COMPONENT_NAMES` deliberately: `check_retired_references` is a substring scan over live `.md`/`.rs`/`.toml` and `ignored_path` excludes `legacy-review/` but neither `SLICES.md` nor `adr/`, so listing the name there would make the records of this retirement fail the check that enforces it. CI's `rust` paths filter loses the `capsule-wire/**` entry, which now names a directory outside the workspace, and the Salvo review notes say which of the moved crate's surfaces must not come back. --- .github/workflows/ci.yml | 1 - legacy-review/server-salvo/REVIEW.md | 4 ++++ xtask/src/architecture.rs | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ef44697e..2a070ee6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -51,7 +51,6 @@ jobs: - 'hk.pkl' - '.cargo/**' - 'capsule-server/**' - - 'capsule-wire/**' - 'capsule-i18n/**' - 'capsule-cli/**' - 'capsule-core/**' diff --git a/legacy-review/server-salvo/REVIEW.md b/legacy-review/server-salvo/REVIEW.md index e36aea3d..078c83a1 100644 --- a/legacy-review/server-salvo/REVIEW.md +++ b/legacy-review/server-salvo/REVIEW.md @@ -23,6 +23,10 @@ ## Do not reuse - Salvo handlers, response writers, OpenAPI registration, or configuration projections. +- `wire/`'s `salvo_responses!` macro and the `WireResponses` taxonomy it expands. It was the + workspace crate `capsule-wire` until the Kynos port; `capsule-server`'s `problem`, `limits` and + `body` modules are the live response taxonomy, and Kynos makes the status part of the return + type, which is the defect the taxonomy was extracted to prevent. - Server-side media decoding or metadata extraction. Those files were deleted during quarantine. - The plaintext asset schema, transformation endpoints, filename-based storage layout, or upload finalization that marks an asset visible before the complete encrypted bundle is durable. diff --git a/xtask/src/architecture.rs b/xtask/src/architecture.rs index e77c6eba..46094cac 100644 --- a/xtask/src/architecture.rs +++ b/xtask/src/architecture.rs @@ -21,6 +21,7 @@ const RETIRED_DEPENDENCIES: &[&str] = &[ "async-graphql", "async-graphql-salvo", "capsule-media", + "capsule-wire", "graphql-client", "object_store", "progenitor", From b54dc818c90bda876a9fc9cab996cd44c8bacb2e Mon Sep 17 00:00:00 2001 From: Justin Chung Date: Tue, 1 Sep 2026 21:42:54 -0400 Subject: [PATCH 3/4] docs(slices,adr): record capsule-wire's retirement MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ADR-0004 flips from `proposed` to `accepted` and gains the `Contract:` line `adr/README.md` requires of a landed decision — without it the record is prose no reader can falsify. `S-C27` becomes `done`, by retirement rather than by completion. Its part 2 was owed to the Kynos port; the port declined it, because the 39 `ToSchema` derives the DTO move was waiting on retired with the Salvo tree instead of moving. The row's own "Done when" — `rg salvo capsule-api/*/src/models` empty plus a byte-identical `openapi.json` — is vacuous now that `capsule-api` does not exist and the SDK generates from the Kynos document, so leaving the row at `part 1 done` would name owed work nobody can do. The salvo→kynos register row says the same, and its claim that `architecture-check` reports 63 violations is put in the past tense it belongs in: the check is clean because the tree it counted is quarantined. `module-map.md`'s crate table and the `ROADMAP.md` package row drop `capsule-wire`: both enumerate what the workspace declares, and the roadmap check resolves rows against `[workspace] members` and the depth-one `legacy-review/*/` buckets, neither of which now names it. The three disabled Salvo manifests point at `../wire` so the quarantined tree stays internally consistent for whoever reads it. --- ROADMAP.md | 1 - SLICES.md | 15 +++++++++++++-- adr/0004-capsule-wire-is-retired.md | 3 ++- .../src/content/docs/design/module-map.md | 1 - .../server-salvo/auth/Cargo.toml.disabled | 2 +- .../server-salvo/media/Cargo.toml.disabled | 2 +- .../server-salvo/upload/Cargo.toml.disabled | 2 +- 7 files changed, 18 insertions(+), 8 deletions(-) diff --git a/ROADMAP.md b/ROADMAP.md index 4a93b604..377cf4fb 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -41,7 +41,6 @@ A closed set. A row's state is a claim about the package, not about the programm | `capsule-core-ffi` | cargo | The app umbrella staticlib and the `capsule_core_ffi` uniffi namespace | stabilizing | `mise run check-rust` | [Module Map — Client Boundaries](capsule-docs/src/content/docs/design/module-map.md#client-boundaries) | — | Public-API freeze (#399) | Links `capsule-sdk`'s uniffi surface so one Rust library carries both namespaces an app consumes | | `capsule-sdk` | cargo | Session, upload, sync, recovery and protocol-version orchestration over the spargen-generated REST client | stabilizing | `mise run check-rust` | [API Surfaces](capsule-docs/src/content/docs/design/api-surfaces.md) | `S-D9`, `S-D17`, `S-E3`, `S-N2` | Close the four contract gaps (#408) | Both items the tracker owed this crate landed: one transport (`GET /v1/sync` through the generated client) and one document (`capsule-server/openapi.json`) | | `capsule-server` | cargo | The Kynos REST/OpenAPI application and the committed `capsule-server/openapi.json` contract | rebuilding | `mise run check-rust` | [Module Map — Server Modules](capsule-docs/src/content/docs/design/module-map.md#server-modules) | `S-C8`, `S-C39`, `S-C47`, `S-C49`, `S-C51`, `S-E2`, `S-E5`, `S-N1` | A binary, configuration and a serve task (#401) | Fifty-nine operations and a test suite over the real router, with no binary, no configuration loading and no Postgres or Valkey adapter | -| `capsule-wire` | cargo | Framework-free protocol headers and the response taxonomy across the retiring Salvo boundary | stabilizing | `mise run check-rust` | [API Surfaces](capsule-docs/src/content/docs/design/api-surfaces.md) | `S-C27` | Retired (#400) | Only retired code still depends on it; `capsule-server` owns `problem`, `limits` and `body` | | `capsule-wasm` | cargo | The browser boundary — share-link open, guest drop sealing, and LQIP decode | stabilizing | `mise run check-rust` | [Web Upload](capsule-docs/src/content/docs/design/web-upload.md) | — | Public-API freeze (#399) | `S-B14` owes it an `lqip` entry point; the encoder already compiles for `wasm32-unknown-unknown` | | `capsule-i18n` | cargo | The generated Rust catalog bundle, the runtime formatter, and the `error.*` code contract | stabilizing | `mise run check-rust` | [i18n](capsule-docs/src/content/docs/design/i18n.md) | — | ICU plural evaluation (#414) | Generated from `locales/` by `mise run i18n`; `mise run i18n-check` fails on drift | | `capsule-cli` | cargo | The `capsule` binary — local library commands plus auth, sync, push, import and cull | stabilizing | `mise run check-rust` | [Clients](capsule-docs/src/content/docs/design/clients.md) | `S-B17`, `S-B18`, `S-I8`, `S-Q1`, `S-Q2`, `S-Q3`, `S-Q4` | Help text from the catalogs and an enrichment read surface (#413) | The networked commands have no server to reach until #401 lands one | diff --git a/SLICES.md b/SLICES.md index 7ef5081b..9820b458 100644 --- a/SLICES.md +++ b/SLICES.md @@ -275,7 +275,7 @@ lives. | S-C24 | Album-upgrade server halves (quiescence/drain/lineage) | server | S-C42 | M-L | RETIRED | done\* | the ceremony's wire vocabulary was `mls`-gated and therefore unreachable; the projection deliberately gets no lineage | | S-C25 | Album provisioning + UUID album ids (unblocks push) | server | S-C29 | M | RETIRED | done\* | also lands the first real `WriteAuthority`; sharing widens it → `S-C4`/`S-C5` | | S-C26 | Retire the plaintext album name/description columns | server | S-C25 | S | RETIRED | done | the Kynos schema never declared them; a document tripwire keeps it that way | -| S-C27 | Wire-contract types on plain serde behind an adapter | server | — | M | RETIRED | part 1 done | DTO move → Kynos rebuild; status gaps → `S-C28` | +| S-C27 | Wire-contract types on plain serde behind an adapter | server | — | M | RETIRED | done | part 2 declined by the Kynos port; the crate retired with the Salvo tree | | S-C28 | Publish the statuses the server actually returns | server | S-C27 | S | RETIRED | done\* | auth surface closed; folds into each remaining port | | S-C29 | The two storage ports + typed ceremony stores | server | S-C27 | L | RETIRED | done\* | Valkey + Postgres adapters owed; counters → `S-C32` | | S-C30 | Feed `manifest_cbor` carries the signed manifest | server | S-C1, S-C2 | M | RETIRED | done\* | server half stores and serves verbatim; client producer owed to `S-D1` | @@ -2304,6 +2304,17 @@ working on a surface written after it. crate may not depend on salvo at all) and an adapter crate cannot implement a foreign trait for a foreign type. The structs move when Kynos replaces salvo as the schema source, which is why the "Done when" above stays unmet and this row is not `done`. +- **Landed 2026-09-01 — done by retirement.** Part 2 is **declined, not deferred**: the Kynos + port removed the condition it was waiting on. The 39 `ToSchema` derives retired with the Salvo + tree (`S-C59`) instead of moving, `capsule-api` no longer exists, and the SDK generates from + `capsule-server/openapi.json`, so the "Done when" above — `rg salvo capsule-api/*/src/models` + empty plus a byte-identical `openapi.json` — is **vacuous rather than unmet**. The taxonomy's + live home is `capsule-server`'s `problem`, `limits` and `body` modules, where the status is part + of the return type and `tests/conformance.rs` asserts both directions of the agreement this + extraction existed to keep. `capsule-wire` itself moved to `legacy-review/server-salvo/wire/` + beside the 41 `salvo_responses!` call sites that are its only consumers, its manifest disabled, + and `architecture-check` lists it as a retired dependency so a member cannot declare it again + (ADR-0004). ### S-C28 — Publish the statuses the server actually returns @@ -5763,7 +5774,7 @@ table hides what it would cost. | Migration | Status | Measured cost today | Unblocks when | | --- | --- | --- | --- | -| `salvo` → [`kynos`](https://github.com/getkono/kynos) | **started; the precondition has landed** | The measurement that scoped this row was 648 `salvo` occurrences across 84 files, including 51 `impl Writer` and 41 `EndpointOutRegister` blocks. `S-C27` part 1 has since deleted the mechanical half: **315 occurrences across 86 files, 12 `impl Writer`, 2 `EndpointOutRegister`**, with 40 call sites now expanding from one `salvo_responses!` table each, and `auth/src/models/responses.rs` down from 1440 to 1019 lines. What remains is the part that was never boilerplate: 63 `#[handler]`/`#[endpoint]` route fns, 68 `ToSchema` derives and 68 `Depot` reads. The `ToSchema` derives are exactly why **part 2 is owed to the port rather than to another refactor** — a framework-neutral crate cannot carry that derive (optional deps count against the boundary check) and an adapter cannot implement a foreign trait for a foreign type, so the DTO structs move when the framework does. `architecture-check` reports **63 boundary violations**, which is the rebuild worklist. | Kynos is **published at 0.1.0 and consumed from crates.io**; the git-rev pin this row used to require is retired. `capsule-server` exists with a conformance suite, so the port is incremental from here rather than a cutover. | +| `salvo` → [`kynos`](https://github.com/getkono/kynos) | **started; the precondition has landed** | The measurement that scoped this row was 648 `salvo` occurrences across 84 files, including 51 `impl Writer` and 41 `EndpointOutRegister` blocks. `S-C27` part 1 has since deleted the mechanical half: **315 occurrences across 86 files, 12 `impl Writer`, 2 `EndpointOutRegister`**, with 40 call sites now expanding from one `salvo_responses!` table each, and `auth/src/models/responses.rs` down from 1440 to 1019 lines. What remains is the part that was never boilerplate: 63 `#[handler]`/`#[endpoint]` route fns, 68 `ToSchema` derives and 68 `Depot` reads. The `ToSchema` derives are exactly why **part 2 is owed to the port rather than to another refactor** — a framework-neutral crate cannot carry that derive (optional deps count against the boundary check) and an adapter cannot implement a foreign trait for a foreign type, so the DTO structs move when the framework does. `architecture-check` reported **63 boundary violations** while the Salvo tree was still in the workspace, which was the rebuild worklist. Part 2 is now **declined rather than owed**: the `ToSchema` derives retired with the tree instead of moving, and the framework-free crate that carried the taxonomy went with them to `legacy-review/server-salvo/wire/` (`S-C27`, ADR-0004). | Kynos is **published at 0.1.0 and consumed from crates.io**; the git-rev pin this row used to require is retired. `capsule-server` exists with a conformance suite, so the port is incremental from here rather than a cutover. | | `progenitor` → [`spargen`](https://github.com/getkono/spargen) | **done** | — | Complete. Progenitor is gone from `Cargo.lock` and every manifest; `generate_openapi.sh` was deleted in `2996a13`; spargen is shipped and on crates.io. Open items: spargen's object-typed-query-param lowering (gates table), and re-sourcing the SDK's schema from Kynos rather than the Salvo `gen_openapi` binary (`S-D8`). | | Real image codecs (JXL/AVIF/WebP encode, RAW decode) | **deferred** | Nine format modules are decode/encode stubs; only JPEG and PNG are real. | `rawshift` stabilizes for RAW; the JXL/AVIF/WebP encode half is picked up separately against the thumbnails.md format table. `S-B13` makes the gap a typed `UnsupportedFormat` error and reports it at derivative time (`DerivativeStatus::DeferredNoCodec`, warned + counted per run); originals still import signed and verifiable, so the deferral cannot cause incorrect behaviour — only visibly absent thumbnails. | | Test bootstrap: hand-rolled `docker` CLI → Kynos `TestClient` + the `S-C29` conformance suite | **deferred deliberately; retires rather than migrates** | `capsule-api-testing` is a declared default-member, so its 242 lines compile on every build, and it has **zero consumers** — `rg` for the package name outside itself returns nothing. Its `common.rs` shells out to the `docker` CLI via `std::process::Command` to start Postgres, which is a second container-bootstrap approach competing with the testcontainers six other sites hand-roll; its `schema.rs` is entirely `#[cfg(test)]` tests of sea-orm entity CRUD, and those three tests do run and pass in the workspace suite. | Nothing. This is recorded so it is not re-litigated as slimming: reviving it means teaching six call sites in the retiring Salvo tree to share a fixture, which is thrown away at Stage 7.5, and deleting it now removes the only live coverage of the sea-orm migration path while that path is still in use. It retires **with** `capsule-api`. The replacement needs no container at all — Kynos's `TestClient` drives a built `Service` in-process, and `S-C29`'s shared conformance suite is what lets the in-memory adapter stand in for Valkey. | diff --git a/adr/0004-capsule-wire-is-retired.md b/adr/0004-capsule-wire-is-retired.md index 44012145..b3f92aea 100644 --- a/adr/0004-capsule-wire-is-retired.md +++ b/adr/0004-capsule-wire-is-retired.md @@ -1,9 +1,10 @@ # ADR-0004 — `capsule-wire` is retired once no member depends on it -- **Status:** proposed +- **Status:** accepted - **Date:** 2026-09-01 - **Supersedes:** — - **Superseded by:** — +- **Contract:** [API Surfaces](../capsule-docs/src/content/docs/design/api-surfaces.md) - **Slices:** S-C27, S-C59 ## Context diff --git a/capsule-docs/src/content/docs/design/module-map.md b/capsule-docs/src/content/docs/design/module-map.md index fdea8fa0..5c2c1219 100644 --- a/capsule-docs/src/content/docs/design/module-map.md +++ b/capsule-docs/src/content/docs/design/module-map.md @@ -16,7 +16,6 @@ whether something exists today, find its slice: `rg 'S-C16' SLICES.md`. | `capsule-core` | Cryptography (including the MLS album authority), canonical CBOR, validation, CRDTs, sidecars, backup, lifecycle, client filesystem, local SQLite and vector index, import scan/plan/execute, culling, LQIP, share and drop crypto, aggregated federation views, ML orchestration | | `capsule-server` | The Kynos REST/OpenAPI application — see [Server Modules](#server-modules) | | `capsule-sdk` | The Spargen-generated REST client plus the orchestration over it Capsule owns: auth and session refresh, the resumable upload state machine, sync, recovery, protocol-version negotiation, LAN peering | -| `capsule-wire` | The response taxonomy shared by server and SDK. Framework-free by construction: `serde` is its only dependency, so neither side's transport choices reach the other | | `capsule-wasm` | The browser sealing surface `capsule-web` loads — share-link open and guest-drop sealing over `capsule-core` with default features off. Built by `mise run build-wasm`; never committed | | `capsule-i18n` + `xtask::i18n` | Canonical ICU catalogs, runtime localization, generated platform catalogs | | `capsule-core-ffi` | UniFFI bindings for native Swift and Kotlin consumers, on one UniFFI version across both surfaces | diff --git a/legacy-review/server-salvo/auth/Cargo.toml.disabled b/legacy-review/server-salvo/auth/Cargo.toml.disabled index 1319f731..8a0818c4 100644 --- a/legacy-review/server-salvo/auth/Cargo.toml.disabled +++ b/legacy-review/server-salvo/auth/Cargo.toml.disabled @@ -15,7 +15,7 @@ capsule-core = { path = "../../capsule-core" } capsule-api-model = { path = "../model" } capsule-api-service = { path = "../service", features = ["auth"] } capsule-i18n = { path = "../../capsule-i18n" } -capsule-wire = { path = "../../capsule-wire" } +capsule-wire = { path = "../wire" } argon2 = { workspace = true } bb8 = { workspace = true } bb8-redis = { workspace = true } diff --git a/legacy-review/server-salvo/media/Cargo.toml.disabled b/legacy-review/server-salvo/media/Cargo.toml.disabled index f12b5651..410b0ffc 100644 --- a/legacy-review/server-salvo/media/Cargo.toml.disabled +++ b/legacy-review/server-salvo/media/Cargo.toml.disabled @@ -21,7 +21,7 @@ capsule-api-upload = { path = "../upload" } # crate's own capsule-core dependency unifies features in the workspace build anyway). capsule-core = { path = "../../capsule-core", default-features = false } capsule-i18n = { path = "../../capsule-i18n" } -capsule-wire = { path = "../../capsule-wire" } +capsule-wire = { path = "../wire" } base64 = { workspace = true } bytes = { workspace = true } derive_more = { workspace = true, features = ["from"] } diff --git a/legacy-review/server-salvo/upload/Cargo.toml.disabled b/legacy-review/server-salvo/upload/Cargo.toml.disabled index 2c9052f6..8fb6563a 100644 --- a/legacy-review/server-salvo/upload/Cargo.toml.disabled +++ b/legacy-review/server-salvo/upload/Cargo.toml.disabled @@ -17,7 +17,7 @@ capsule-api-model = { path = "../model" } capsule-api-service = { path = "../service" } capsule-core = { path = "../../capsule-core", features = ["media"] } capsule-i18n = { path = "../../capsule-i18n" } -capsule-wire = { path = "../../capsule-wire" } +capsule-wire = { path = "../wire" } bb8-redis = { workspace = true } eyre = { workspace = true } futures-util = { workspace = true } From 393d78d627d36302c0b6fb9e9d1245e8ed330bbf Mon Sep 17 00:00:00 2001 From: Justin Chung Date: Tue, 1 Sep 2026 22:18:20 -0400 Subject: [PATCH 4/4] docs(slices): correct the S-C27 call-site count to 40 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Landed note said 41 `salvo_responses!` call sites. The count that produced it was taken with no `--include`, so it swept the same change's new `REVIEW.md` bullet, which names the macro in prose. Restricted to `.rs` outside the moved crate the tree has 40 invocations — which is what the salvo→kynos register row already says — plus two `use capsule_wire::…` lines, giving the 42 `capsule_wire` references measured separately. --- SLICES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SLICES.md b/SLICES.md index 9820b458..f2bd6d03 100644 --- a/SLICES.md +++ b/SLICES.md @@ -2312,7 +2312,7 @@ working on a surface written after it. live home is `capsule-server`'s `problem`, `limits` and `body` modules, where the status is part of the return type and `tests/conformance.rs` asserts both directions of the agreement this extraction existed to keep. `capsule-wire` itself moved to `legacy-review/server-salvo/wire/` - beside the 41 `salvo_responses!` call sites that are its only consumers, its manifest disabled, + beside the 40 `salvo_responses!` call sites that are its only consumers, its manifest disabled, and `architecture-check` lists it as a retired dependency so a member cannot declare it again (ADR-0004).