From bcc2a5c7ca12b69af39ff23187f0b859a9572c3f Mon Sep 17 00:00:00 2001 From: Illia Polosukhin Date: Sat, 18 Jul 2026 01:19:03 +0000 Subject: [PATCH] =?UTF-8?q?refactor(reborn):=20rename=20LocalDevOutboundSt?= =?UTF-8?q?ores=20->=20OutboundStores=20(=C2=A74.4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Second §4.4 de-prefix slice (after C1's LocalDevRootFilesystem inline). Advances the doc's §4.4 enforcement endgame — "no public type name contains Local/LocalDev/Hosted/Enterprise" — one more type. `LocalDevOutboundStores` is a plain bundle struct (four outbound-store handle fields), NOT a cfg-switched policy/mode type. Its own constructor comment says it "works in both durable (libsql/postgres) and no-durable (in-memory backend) builds" — so the `LocalDev` prefix is factually wrong (it is used in libsql/ postgres PRODUCTION builds, not just local-dev). This is a bucket-2-style mis-prefix: a genuine composition type that only LOOKS like a deployment-mode leak, so the fix is a de-prefix rename, not the bucket-1 DeploymentConfig resolution the cfg-switched `LocalDev*Store` aliases need. Renamed the struct + its 3 use sites (all in factory.rs) to `OutboundStores` (name was free); trimmed it from the R2 `reborn_localdev_typename` ratchet allowlist. The `local_dev_outbound_store` builder fn keeps its name (fn names are not type-name leaks; the ratchet inventories types only). Pure type rename, semantically identical. Verified: localdev ratchet 4; `cargo build -p ironclaw_reborn_composition` (default + libsql+slack+telegram) clean; clippy -D warnings clean; fmt + pre-commit clean. Stacked on #6218. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../tests/reborn_localdev_typename_ratchet.rs | 1 - crates/ironclaw_reborn_composition/src/factory.rs | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/crates/ironclaw_architecture/tests/reborn_localdev_typename_ratchet.rs b/crates/ironclaw_architecture/tests/reborn_localdev_typename_ratchet.rs index c271c7465ac..37d1d0907d0 100644 --- a/crates/ironclaw_architecture/tests/reborn_localdev_typename_ratchet.rs +++ b/crates/ironclaw_architecture/tests/reborn_localdev_typename_ratchet.rs @@ -75,7 +75,6 @@ const FROZEN_LOCALDEV_TYPES: &[&str] = &[ "LocalDevExtensionSurfaceSource", "LocalDevMountProfile", "LocalDevNetworkProfile", - "LocalDevOutboundStores", "LocalDevOverride", "LocalDevPersistentApprovalPolicyStore", "LocalDevProviderPolicy", diff --git a/crates/ironclaw_reborn_composition/src/factory.rs b/crates/ironclaw_reborn_composition/src/factory.rs index 9fe674ddacb..6fa3f825c68 100644 --- a/crates/ironclaw_reborn_composition/src/factory.rs +++ b/crates/ironclaw_reborn_composition/src/factory.rs @@ -3839,7 +3839,7 @@ fn local_dev_scoped_filesystem( /// (where `DeliveredGateRouteStore`/`TriggeredRunDeliveryStore` used separate /// in-memory instances not visible to the shared preference tree). /// See docs/plans/2026-05-29-trigger-loop-delivery-resolution-implementation.md. -pub(crate) struct LocalDevOutboundStores { +pub(crate) struct OutboundStores { pub(crate) outbound_preferences: Arc, #[cfg(any(feature = "slack-v2-host-beta", feature = "telegram-v2-host-beta"))] pub(crate) outbound_state: Arc, @@ -3849,7 +3849,7 @@ pub(crate) struct LocalDevOutboundStores { pub(crate) triggered_run_delivery: Arc, } -fn local_dev_outbound_store(filesystem: Arc) -> LocalDevOutboundStores { +fn local_dev_outbound_store(filesystem: Arc) -> OutboundStores { // One store instance over the composition-owned per-user scoped filesystem // (`/outbound` → `/tenants//users//outbound`). All four outbound // roles — preferences, state, delivered-gate routes, triggered-run delivery @@ -3862,7 +3862,7 @@ fn local_dev_outbound_store(filesystem: Arc) -> LocalDe let store: Arc> = Arc::new( FilesystemOutboundStateStore::new(local_dev_scoped_filesystem(filesystem)), ); - LocalDevOutboundStores { + OutboundStores { outbound_preferences: Arc::clone(&store) as Arc, #[cfg(any(feature = "slack-v2-host-beta", feature = "telegram-v2-host-beta"))] outbound_state: Arc::clone(&store) as Arc,