diff --git a/backend/apps/gateway/tests/architecture.rs b/backend/apps/gateway/tests/architecture.rs index c5cca2540..b2361a325 100644 --- a/backend/apps/gateway/tests/architecture.rs +++ b/backend/apps/gateway/tests/architecture.rs @@ -383,7 +383,9 @@ fn workspace_modules_follow_conventional_file_layout() { let targets = test_source_roots(); for member in WORKSPACE_MEMBERS { let member_root = backend_root().join(member); - assert_module_tree(&member_root.join("src"), &["lib.rs", "main.rs"]); + let src = member_root.join("src"); + assert_module_tree(&src, &["lib.rs", "main.rs"]); + assert_directory_modules_have_children(&src, &["lib.rs", "main.rs"]); let tests = member_root.join("tests"); if tests.is_dir() { @@ -396,6 +398,29 @@ fn workspace_modules_follow_conventional_file_layout() { } } +fn assert_directory_modules_have_children(root: &Path, crate_roots: &[&str]) { + let files = super::rust_files(root); + for relative in &files { + if crate_roots + .iter() + .any(|candidate| relative == Path::new(candidate)) + || relative.file_name().and_then(|value| value.to_str()) != Some("mod.rs") + { + continue; + } + + let directory = relative.parent().expect("mod.rs parent"); + assert!( + files + .iter() + .any(|candidate| candidate != relative && candidate.starts_with(directory)), + "{} is a leaf module and must use {}", + root.join(relative).display(), + root.join(directory).with_extension("rs").display(), + ); + } +} + #[derive(Debug, Clone, Copy, PartialEq, Eq)] enum ModuleLayout { File, diff --git a/backend/crates/gateway-api/src/middleware/websocket/mod.rs b/backend/crates/gateway-api/src/middleware/websocket.rs similarity index 100% rename from backend/crates/gateway-api/src/middleware/websocket/mod.rs rename to backend/crates/gateway-api/src/middleware/websocket.rs diff --git a/backend/crates/gateway-api/src/openai/responses/websocket/connection/middleware/mod.rs b/backend/crates/gateway-api/src/openai/responses/websocket/connection/middleware.rs similarity index 100% rename from backend/crates/gateway-api/src/openai/responses/websocket/connection/middleware/mod.rs rename to backend/crates/gateway-api/src/openai/responses/websocket/connection/middleware.rs diff --git a/backend/crates/gateway-api/tests/architecture.rs b/backend/crates/gateway-api/tests/architecture.rs index 10be61f1b..4f963dfe9 100644 --- a/backend/crates/gateway-api/tests/architecture.rs +++ b/backend/crates/gateway-api/tests/architecture.rs @@ -68,7 +68,7 @@ fn source_tree_should_match_frozen_machine_manifest() { "src/lib.rs", "src/middleware/headers.rs", "src/middleware/mod.rs", - "src/middleware/websocket/mod.rs", + "src/middleware/websocket.rs", "src/openai/middleware/http.rs", "src/openai/middleware/mod.rs", "src/openai/middleware/request.rs", @@ -87,7 +87,7 @@ fn source_tree_should_match_frozen_machine_manifest() { "src/openai/responses/response.rs", "src/openai/responses/validation.rs", "src/openai/responses/websocket/connection/mod.rs", - "src/openai/responses/websocket/connection/middleware/mod.rs", + "src/openai/responses/websocket/connection/middleware.rs", "src/openai/responses/websocket/forward.rs", "src/openai/responses/websocket/mod.rs", "src/openai/responses/websocket/protocol.rs", @@ -136,7 +136,7 @@ fn test_tree_should_match_frozen_rust_mirror() { "tests/key_usage/fixtures.rs", "tests/main.rs", "tests/middleware/mod.rs", - "tests/middleware/websocket/mod.rs", + "tests/middleware/websocket.rs", "tests/openai/middleware/mod.rs", "tests/openai/auth.rs", "tests/openai/error.rs", @@ -148,7 +148,7 @@ fn test_tree_should_match_frozen_rust_mirror() { "tests/openai/responses/mod.rs", "tests/openai/responses/request.rs", "tests/openai/responses/websocket/connection/mod.rs", - "tests/openai/responses/websocket/connection/middleware/mod.rs", + "tests/openai/responses/websocket/connection/middleware.rs", "tests/openai/responses/websocket/forward.rs", "tests/openai/responses/websocket/interrupt.rs", "tests/openai/responses/websocket/mod.rs", diff --git a/backend/crates/gateway-api/tests/middleware/websocket/mod.rs b/backend/crates/gateway-api/tests/middleware/websocket.rs similarity index 100% rename from backend/crates/gateway-api/tests/middleware/websocket/mod.rs rename to backend/crates/gateway-api/tests/middleware/websocket.rs diff --git a/backend/crates/gateway-api/tests/openai/responses/websocket/connection/middleware/mod.rs b/backend/crates/gateway-api/tests/openai/responses/websocket/connection/middleware.rs similarity index 100% rename from backend/crates/gateway-api/tests/openai/responses/websocket/connection/middleware/mod.rs rename to backend/crates/gateway-api/tests/openai/responses/websocket/connection/middleware.rs diff --git a/backend/crates/gateway-core/src/middleware/http/upgrade/mod.rs b/backend/crates/gateway-core/src/middleware/http/upgrade.rs similarity index 100% rename from backend/crates/gateway-core/src/middleware/http/upgrade/mod.rs rename to backend/crates/gateway-core/src/middleware/http/upgrade.rs diff --git a/backend/crates/gateway-core/src/middleware/service/mod.rs b/backend/crates/gateway-core/src/middleware/service.rs similarity index 100% rename from backend/crates/gateway-core/src/middleware/service/mod.rs rename to backend/crates/gateway-core/src/middleware/service.rs diff --git a/backend/crates/gateway-core/src/middleware/websocket/mod.rs b/backend/crates/gateway-core/src/middleware/websocket.rs similarity index 100% rename from backend/crates/gateway-core/src/middleware/websocket/mod.rs rename to backend/crates/gateway-core/src/middleware/websocket.rs diff --git a/backend/crates/gateway-core/src/operation/mod.rs b/backend/crates/gateway-core/src/operation.rs similarity index 100% rename from backend/crates/gateway-core/src/operation/mod.rs rename to backend/crates/gateway-core/src/operation.rs diff --git a/backend/crates/gateway-core/src/provider_ports/mod.rs b/backend/crates/gateway-core/src/provider_ports.rs similarity index 100% rename from backend/crates/gateway-core/src/provider_ports/mod.rs rename to backend/crates/gateway-core/src/provider_ports.rs diff --git a/backend/crates/gateway-core/src/task/mod.rs b/backend/crates/gateway-core/src/task.rs similarity index 100% rename from backend/crates/gateway-core/src/task/mod.rs rename to backend/crates/gateway-core/src/task.rs diff --git a/backend/crates/gateway-core/tests/operation/mod.rs b/backend/crates/gateway-core/tests/operation.rs similarity index 100% rename from backend/crates/gateway-core/tests/operation/mod.rs rename to backend/crates/gateway-core/tests/operation.rs diff --git a/backend/crates/gateway-core/tests/provider_ports/mod.rs b/backend/crates/gateway-core/tests/provider_ports.rs similarity index 100% rename from backend/crates/gateway-core/tests/provider_ports/mod.rs rename to backend/crates/gateway-core/tests/provider_ports.rs diff --git a/backend/crates/gateway-core/tests/task/mod.rs b/backend/crates/gateway-core/tests/task.rs similarity index 100% rename from backend/crates/gateway-core/tests/task/mod.rs rename to backend/crates/gateway-core/tests/task.rs diff --git a/backend/crates/gateway-host/src/pricing/mod.rs b/backend/crates/gateway-host/src/pricing.rs similarity index 100% rename from backend/crates/gateway-host/src/pricing/mod.rs rename to backend/crates/gateway-host/src/pricing.rs diff --git a/backend/crates/gateway-host/src/workers/mod.rs b/backend/crates/gateway-host/src/workers.rs similarity index 100% rename from backend/crates/gateway-host/src/workers/mod.rs rename to backend/crates/gateway-host/src/workers.rs diff --git a/backend/crates/gateway-host/tests/pricing/mod.rs b/backend/crates/gateway-host/tests/pricing.rs similarity index 100% rename from backend/crates/gateway-host/tests/pricing/mod.rs rename to backend/crates/gateway-host/tests/pricing.rs diff --git a/backend/crates/gateway-host/tests/workers/mod.rs b/backend/crates/gateway-host/tests/workers.rs similarity index 100% rename from backend/crates/gateway-host/tests/workers/mod.rs rename to backend/crates/gateway-host/tests/workers.rs diff --git a/backend/crates/gateway-plugin/runtime/src/adapter/policy/http/mod.rs b/backend/crates/gateway-plugin/runtime/src/adapter/policy/http.rs similarity index 100% rename from backend/crates/gateway-plugin/runtime/src/adapter/policy/http/mod.rs rename to backend/crates/gateway-plugin/runtime/src/adapter/policy/http.rs diff --git a/backend/crates/gateway-plugin/runtime/src/adapter/policy/service/mod.rs b/backend/crates/gateway-plugin/runtime/src/adapter/policy/service.rs similarity index 100% rename from backend/crates/gateway-plugin/runtime/src/adapter/policy/service/mod.rs rename to backend/crates/gateway-plugin/runtime/src/adapter/policy/service.rs diff --git a/backend/crates/gateway-plugin/runtime/src/adapter/policy/websocket/mod.rs b/backend/crates/gateway-plugin/runtime/src/adapter/policy/websocket.rs similarity index 100% rename from backend/crates/gateway-plugin/runtime/src/adapter/policy/websocket/mod.rs rename to backend/crates/gateway-plugin/runtime/src/adapter/policy/websocket.rs diff --git a/backend/crates/gateway-plugin/runtime/src/callback/facts/mod.rs b/backend/crates/gateway-plugin/runtime/src/callback/facts.rs similarity index 100% rename from backend/crates/gateway-plugin/runtime/src/callback/facts/mod.rs rename to backend/crates/gateway-plugin/runtime/src/callback/facts.rs diff --git a/backend/crates/gateway-plugin/runtime/src/callback/http_middleware/websocket/mod.rs b/backend/crates/gateway-plugin/runtime/src/callback/http_middleware/websocket.rs similarity index 100% rename from backend/crates/gateway-plugin/runtime/src/callback/http_middleware/websocket/mod.rs rename to backend/crates/gateway-plugin/runtime/src/callback/http_middleware/websocket.rs diff --git a/backend/crates/gateway-plugin/runtime/src/callback/services/mod.rs b/backend/crates/gateway-plugin/runtime/src/callback/services.rs similarity index 100% rename from backend/crates/gateway-plugin/runtime/src/callback/services/mod.rs rename to backend/crates/gateway-plugin/runtime/src/callback/services.rs diff --git a/backend/crates/gateway-plugin/runtime/src/callback/websocket_middleware/mod.rs b/backend/crates/gateway-plugin/runtime/src/callback/websocket_middleware.rs similarity index 100% rename from backend/crates/gateway-plugin/runtime/src/callback/websocket_middleware/mod.rs rename to backend/crates/gateway-plugin/runtime/src/callback/websocket_middleware.rs diff --git a/backend/crates/gateway-plugin/sdk/src/call/middleware/http/mod.rs b/backend/crates/gateway-plugin/sdk/src/call/middleware/http.rs similarity index 100% rename from backend/crates/gateway-plugin/sdk/src/call/middleware/http/mod.rs rename to backend/crates/gateway-plugin/sdk/src/call/middleware/http.rs diff --git a/backend/crates/gateway-plugin/sdk/src/call/middleware/websocket/mod.rs b/backend/crates/gateway-plugin/sdk/src/call/middleware/websocket.rs similarity index 100% rename from backend/crates/gateway-plugin/sdk/src/call/middleware/websocket/mod.rs rename to backend/crates/gateway-plugin/sdk/src/call/middleware/websocket.rs diff --git a/backend/crates/gateway-plugin/sdk/src/call/model/facts/mod.rs b/backend/crates/gateway-plugin/sdk/src/call/model/facts.rs similarity index 100% rename from backend/crates/gateway-plugin/sdk/src/call/model/facts/mod.rs rename to backend/crates/gateway-plugin/sdk/src/call/model/facts.rs diff --git a/backend/crates/gateway-plugin/sdk/src/call/policy/mod.rs b/backend/crates/gateway-plugin/sdk/src/call/policy.rs similarity index 100% rename from backend/crates/gateway-plugin/sdk/src/call/policy/mod.rs rename to backend/crates/gateway-plugin/sdk/src/call/policy.rs diff --git a/backend/crates/gateway-plugin/sdk/src/client/middleware/call/mod.rs b/backend/crates/gateway-plugin/sdk/src/client/middleware/call.rs similarity index 100% rename from backend/crates/gateway-plugin/sdk/src/client/middleware/call/mod.rs rename to backend/crates/gateway-plugin/sdk/src/client/middleware/call.rs diff --git a/backend/crates/gateway-plugin/sdk/src/client/middleware/http/mod.rs b/backend/crates/gateway-plugin/sdk/src/client/middleware/http.rs similarity index 100% rename from backend/crates/gateway-plugin/sdk/src/client/middleware/http/mod.rs rename to backend/crates/gateway-plugin/sdk/src/client/middleware/http.rs diff --git a/backend/crates/gateway-plugin/sdk/src/client/middleware/service/mod.rs b/backend/crates/gateway-plugin/sdk/src/client/middleware/service.rs similarity index 100% rename from backend/crates/gateway-plugin/sdk/src/client/middleware/service/mod.rs rename to backend/crates/gateway-plugin/sdk/src/client/middleware/service.rs diff --git a/backend/crates/gateway-plugin/sdk/src/client/middleware/websocket/mod.rs b/backend/crates/gateway-plugin/sdk/src/client/middleware/websocket.rs similarity index 100% rename from backend/crates/gateway-plugin/sdk/src/client/middleware/websocket/mod.rs rename to backend/crates/gateway-plugin/sdk/src/client/middleware/websocket.rs diff --git a/backend/crates/gateway-plugin/sdk/tests/call/policy/mod.rs b/backend/crates/gateway-plugin/sdk/tests/call/policy.rs similarity index 100% rename from backend/crates/gateway-plugin/sdk/tests/call/policy/mod.rs rename to backend/crates/gateway-plugin/sdk/tests/call/policy.rs