Skip to content

layers: delete pplx-space-common-svc - #1575

Merged
ac-pplx merged 1 commit into
ac/postgres-poolfrom
ac/delete-common-svc
Nov 6, 2026
Merged

ac-pplx merged 1 commit into
ac/postgres-poolfrom
ac/delete-common-svc

Conversation

@ac-pplx

@ac-pplx ac-pplx commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Deletes pplx-space-common-svc, the last of three changes.

  • Its remaining modules move to owning crates:
    • bootstrap → new pplx-space-grpc-server (crates/l40_api/grpc/server), except SandboxSpanLayer, which
      moves to net-gateway, its only user;
    • local_health → new pplx-space-local-health (crates/l40_api/local/health);
    • grpc-server and local-health are l40_api, like service-host: the trace layer declares SPACE span fields and
      interprets the space retry class, and every user is an l40 crate;
    • the init_service* family, shutdown_telemetry and TelemetryGuard → new pplx-space-service-host
      (crates/l40_api/service/host, features otel and datadog; l40 because it reads the process cluster ID);
    • ServiceName → pplx_space_node_runtime_manager::service_name, its only user;
    • the disk-admission handle → pplx_space_node_mgr::disk_admission::cache_handle, its only user.
  • Thirteen public types nothing used are deleted (AuthContext, DomainParseError, GrpcParseError,
    invalid_argument, HttpParseError, HttpBadRequest, bad_request, HttpsPollingUrl, ServiceEndpoint,
    VsockUdsPath, SpacedHostSocketPath, NetGatewayControlSocketPath, BridgeControlSocketPath).
  • Every dependent imports from the owning crates. A crate's otel/datadog features forward to service-host where
    it calls it, otherwise to observability; the deprecated datadog-otel is not carried over. volmgr's and cluster-controller-server's
    features say they reach only their own tests (their svc binaries enable service-host's). node-mgr's
    dev-dependencies declare tokio rt-multi-thread, which used to arrive through common-svc.
  • common-svc leaves ARCHITECTURE.toml's unmoved and legacy lists; its remaining direction, storage_access
    and crate_names baseline entries go. CI drops common-svc's clippy step and its isolated-crates special case;
    grpc-server, local-health and service-host join the isolated-crates ALSO list, which covers service-host without
    its telemetry features. Docs, skills, Kind pointers and the log-fixture script (now -p pplx-space-service-host)
    follow.

Event targets that change: the grpc.server span (pplx_space_common_svc::bootstrap::grpc_trace →
pplx_space_grpc_server::grpc_trace); five local_health events (→ pplx_space_local_health); four
disk_admission events (→ pplx_space_node_mgr::disk_admission::cache_handle); one root event
(→ pplx_space_service_host). Events with an explicit target: "grpc.server" don't change. No metric, span field or
wire text changes.

Dependency graphs of the 17 service binaries and sbx-mgr against main: no kept crate gains a feature. The binaries
stop linking packages only common-svc pulled in (sqlx-postgres, redis, rustls-native-certs and similar). The only
runtime-relevant feature losses are tracing/log in 4 binaries and tower/log in 14.

Porting from pplx-space-common-svc

Where each item lives after this stack (#1516, #1574 and this PR), for open PRs that still use it:

Old (pplx_space_common_svc::…) New
init_service, init_service_with_log_context, init_service_subprocess*, shutdown_telemetry; features otel, datadog pplx_space_service_host (features otel, datadog)
TelemetryGuard, LogContext, ObservabilityError, observability pplx_space_observability
shutdown_token*, sigterm_shutdown, stop_tokens, StopTokens, wait_for_sigterm, lifecycle, DEFAULT_SERVICE_MUTEX_TIMEOUT, DEFAULT_DRAIN_TIMEOUT, drain_server, DrainSignal pplx_space_service_lifecycle
tokio_runtime pplx_space_tokio_runtime
grpc_server_builder*, grpc_health_service, grpc_trace_layer, GRPC_REQUEST_TIMEOUT, GRPC_HTTP2_KEEPALIVE_*, format_grpc_request_params, log_failed_grpc_request_params, record_safe_grpc_request_params, truncate_utf8_for_log pplx_space_grpc_server
current_service_name, set_current_service_name, CLIENT_SERVICE_METADATA_KEY pplx_space_common_grpc
http_trace_layer, HttpServerTraceLayer, HttpServerMakeSpan, HttpSpanMetadata, TraceparentResponseLayer, is_probe_request, REDACTED_HTTP_PATH_VALUE, http_listener pplx_space_http_server
request_id_from_headers pplx_space_request_id
bind_unix_socket, UnixSocketOptions, SocketGroup, unix_group_exists, apply_unix_socket_permissions pplx_space_unix_socket_bind
types::UnixSocketPath pplx_space_unix_socket_path
local_health, LocalHealth*, local_health_pair pplx_space_local_health
auth, template_lookup (features k8s, test-hooks, test-support) pplx_space_rpc_auth (same features); kube_client → pplx_space_kube_client
sql (pools, identity); sql::contention pplx_space_postgres_pool; pplx_space_postgres_pool::contention
sql::sandbox_residency pplx_space_sandbox_residency
the other sql stores their store crates: federated-grant-store, node-registration-store, sandbox-quarantine-store, sandbox-routability
feature migration-checksums pplx-space-migration-checksums
types::k8s (space_k8s_node_id, space_node_id) pplx_space_k8s_node_id
types::reconcile, types::auto_lifecycle pplx_space_state_reconciliation, pplx_space_auto_lifecycle_receipt
peer_auth and its re-exports (PeerIdentity, UdsPeerAuthorizer, …) pplx_space_uds_peer_auth
service_mutex and its re-exports (ServiceMutex, …) pplx_space_service_mutex
rate_limiter and its re-exports pplx_space_grpc_rate_limiter
core; space_api_route*; bearer_token; dependency_drain; ecw_credential; federated_identity; page_cache; systemd; ingress_admission; redis, shared_valkey; install_default_rustls_crypto_provider the crate each re-exported: pplx_space_common_core, pplx_space_api_route, pplx_space_bearer_token, pplx_space_dependency_drain, pplx_space_ecw_credential, pplx_space_federated_identity, pplx_space_page_cache, pplx_space_systemd_watchdog, pplx_space_ingress_admission, pplx_space_valkey, pplx_space_rustls_provider
SandboxSpanLayer, ServiceName, disk_admission moved into their only users: net-gateway, node-runtime-manager, node-mgr

Validation

  • Workspace check with default and all features; every dependent (54 crates) checked alone, --all-targets and
    --lib.
  • The CI entrypoints on this head against current main: clippy and isolated-crates pass; docs and Python tests pass;
    Rust tests fail only 40 tests that need process permissions the validation host lacks and that fail the same way on
    main.
  • cargo arch: no required findings; the baseline only shrinks.
  • The dependency-graph comparison above.
  • sql! locator comments shift where imports moved lines (statement bodies unchanged): api
    controllers/substrate/kubernetes/tests.rs (129, +2), routes/admin/node_maintenance.rs (6, −2),
    controllers/substrate/mod.rs (1, +2), controllers/sandbox/spaced.rs (1, +1), controllers/sandbox/mod.rs
    (1 of 7, −5), routes/admin/templates/tests/native_build.rs (2 of 24, −2); internal-api-server tests.rs (85, +1),
    tests/published_state.rs (37, +1), metadata.rs (10, −2), lib.rs (9, −12); credmgr storage_vend_store.rs
    (6, +1), kek_provisioning.rs (3, +2); db-migrate user_password.rs (3, +1), sqlite lib.rs (2, −2),
    sandbox-quarantine-store lib.rs (2, −1).

Severity and risk

Severity: does not apply (structural). Risk: a crate built alone missing a feature it used to get through common-svc,
covered by the per-crate builds and the isolated-crates job; downstream code importing a pplx_space_common_svc::
path stops compiling. Roll back by reverting.

Rollout

Code outside this repository that builds against pplx-space-common-svc needs the same change this PR makes in
crates/l50_app/*/svc: pplx-space-service-host for init_service*, shutdown_telemetry and TelemetryGuard,
pplx-space-service-lifecycle for the shutdown token and the service mutex timeout, pplx-space-tokio-runtime
directly, and otel/datadog forwarded to service-host. Those crates don't exist before this PR, so that change
can only be made against a revision that includes it.

Stack

  1. layers: move common-svc's auth into pplx-space-rpc-auth #1516. 2. layers: move common-svc's SQL into postgres-pool and sandbox-residency #1574. 3. This PR, based on layers: move common-svc's SQL into postgres-pool and sandbox-residency #1574.

AI assistance: Claude Code made the changes and drafted this description.

@coderabbitai

coderabbitai Bot commented Nov 5, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 399 files, which is 99 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

Run configuration

Commits

Reviewing files that changed from the base of the PR and between c564a25 and 482fc86.

Files ignored due to path filters: 1

  • Cargo.lock is excluded by !**/*.lock, !**/Cargo.lock
Files selected for processing: 399

  • .agents/plugins/pplx-space/skills/space-rust-development/SKILL.md
  • .agents/plugins/pplx-space/skills/space-rust-development/references/types.md
  • .agents/plugins/pplx-space/skills/space-validation/references/ci-pipeline.md
  • .config/nextest.toml
  • ARCHITECTURE.toml
  • Cargo.toml
  • architecture-baseline.toml
  • ci/scripts/lib/rust-isolated-crates.sh
  • ci/scripts/run-rust-checks.sh
  • crates/l10_foundation/bearer/token/src/lib.rs
  • crates/l10_foundation/common/grpc/transport/src/server.rs
  • crates/l10_foundation/dependency/drain/src/lib.rs
  • crates/l10_foundation/grpc/rate/limiter/src/lib.rs
  • crates/l10_foundation/http/server/src/lib.rs
  • crates/l10_foundation/k8s/ids/src/label.rs
  • crates/l10_foundation/kube/client/src/lib.rs
  • crates/l10_foundation/request/id/src/lib.rs
  • crates/l10_foundation/rustls/provider/Cargo.toml
  • crates/l10_foundation/rustls/provider/src/lib.rs
  • crates/l10_foundation/service/lifecycle/src/lib.rs
  • crates/l10_foundation/service/mutex/src/lib.rs
  • crates/l10_foundation/sqlite/src/lib.rs
  • crates/l10_foundation/systemd/watchdog/src/lib.rs
  • crates/l10_foundation/tokio/runtime/src/lib.rs
  • crates/l10_foundation/uds/peer/auth/src/lib.rs
  • crates/l10_foundation/unix/socket/bind/src/lib.rs
  • crates/l10_foundation/unix/socket/path/src/lib.rs
  • crates/l20_domain/api/route/src/lib.rs
  • crates/l20_domain/auto/lifecycle/receipt/src/lib.rs
  • crates/l20_domain/ecw/credential/src/lib.rs
  • crates/l20_domain/federated/identity/src/lib.rs
  • crates/l20_domain/k8s/node/id/src/lib.rs
  • crates/l20_domain/state/reconciliation/src/lib.rs
  • crates/l30_storage/cluster/trigger/queue/Cargo.toml
  • crates/l30_storage/cluster/trigger/queue/src/lib.rs
  • crates/l30_storage/db/migrate/Cargo.toml
  • crates/l30_storage/db/migrate/src/bootstrap_roles.rs
  • crates/l30_storage/db/migrate/src/bootstrap_roles/tests/postgres_bootstrap_tests.rs
  • crates/l30_storage/db/migrate/src/lib.rs
  • crates/l30_storage/db/migrate/src/migration_retry/tests/postgres_lock_retry_tests.rs
  • crates/l30_storage/db/migrate/src/user_password.rs
  • crates/l30_storage/placement/src/model.rs
  • crates/l30_storage/sandbox/quarantine/store/src/lib.rs
  • crates/l30_storage/sandbox/routability/src/lib.rs
  • crates/l30_storage/sbx/mgr/store/Cargo.toml
  • crates/l30_storage/sbx/mgr/store/src/auto_lifecycle_delete_receipts/mod.rs
  • crates/l30_storage/sbx/mgr/store/src/db/auto_lifecycle_delete_receipts.rs
  • crates/l30_storage/sbx/mgr/store/src/db/auto_lifecycle_delete_receipts/tests.rs
  • crates/l30_storage/sbx/mgr/store/src/db/read/tests.rs
  • crates/l40_api/api/Cargo.toml
  • crates/l40_api/api/src/controllers/sandbox/lifecycle/characterization_tests.rs
  • crates/l40_api/api/src/controllers/sandbox/mod.rs
  • crates/l40_api/api/src/controllers/sandbox/ports.rs
  • crates/l40_api/api/src/controllers/sandbox/queries.rs
  • crates/l40_api/api/src/controllers/sandbox/queries/create_postgres_tests.rs
  • crates/l40_api/api/src/controllers/sandbox/spaced.rs
  • crates/l40_api/api/src/controllers/sandbox/tests.rs
  • crates/l40_api/api/src/controllers/sandbox/updates.rs
  • crates/l40_api/api/src/controllers/sandbox/wake_completion/tests.rs
  • crates/l40_api/api/src/controllers/substrate/kubernetes/adapter/suspend.rs
  • crates/l40_api/api/src/controllers/substrate/kubernetes/mod.rs
  • crates/l40_api/api/src/controllers/substrate/kubernetes/node_sync.rs
  • crates/l40_api/api/src/controllers/substrate/kubernetes/pod_ops/tests.rs
  • crates/l40_api/api/src/controllers/substrate/kubernetes/pod_ops/worker_clients.rs
  • crates/l40_api/api/src/controllers/substrate/kubernetes/scripted_test_doubles.rs
  • crates/l40_api/api/src/controllers/substrate/kubernetes/store.rs
  • crates/l40_api/api/src/controllers/substrate/kubernetes/tests.rs
  • crates/l40_api/api/src/controllers/substrate/kubernetes/tests/runtime_upgrade_dispatch.rs
  • crates/l40_api/api/src/controllers/substrate/kubernetes/wait_ready.rs
  • crates/l40_api/api/src/controllers/substrate/mod.rs
  • crates/l40_api/api/src/controllers/template.rs
  • crates/l40_api/api/src/controllers/template/tests.rs
  • crates/l40_api/api/src/e2b.rs
  • crates/l40_api/api/src/e2b/tests.rs
  • crates/l40_api/api/src/federated_identity/config.rs
  • crates/l40_api/api/src/federated_identity/grants.rs
  • crates/l40_api/api/src/ingress_activation.rs
  • crates/l40_api/api/src/inline_operations.rs
  • crates/l40_api/api/src/public_template_operations.rs
  • crates/l40_api/api/src/reconcile_queue.rs
  • crates/l40_api/api/src/routes/admin/node_maintenance.rs
  • crates/l40_api/api/src/routes/admin/nodes/tests.rs
  • crates/l40_api/api/src/routes/admin/templates.rs
  • crates/l40_api/api/src/routes/admin/templates/tests/native_build.rs
  • crates/l40_api/api/src/routes/e2b/fork.rs
  • crates/l40_api/api/src/routes/e2b/mod.rs
  • crates/l40_api/api/src/routes/e2b/state_render_tests.rs
  • crates/l40_api/api/src/routes/e2b/tests.rs
  • crates/l40_api/api/src/routes/e2b/translate.rs
  • crates/l40_api/api/src/routes/ecw_credential_epoch.rs
  • crates/l40_api/api/src/routes/mod.rs
  • crates/l40_api/api/src/routes/public/sandboxes.rs
  • crates/l40_api/api/src/routes/public/sandboxes/inline_create/tests.rs
  • crates/l40_api/api/src/routes/public/sessions/tests.rs
  • crates/l40_api/api/src/run.rs
  • crates/l40_api/api/src/test_support.rs
  • crates/l40_api/api/src/test_support/kubernetes.rs
  • crates/l40_api/api/src/wake_trace/tests.rs
  • crates/l40_api/build/mgr/engine/Cargo.toml
  • crates/l40_api/build/mgr/engine/src/blob.rs
  • crates/l40_api/build/mgr/engine/src/lib.rs
  • crates/l40_api/build/mgr/engine/src/publish.rs
  • crates/l40_api/build/mgr/engine/src/publish/tests/republication.rs
  • crates/l40_api/build/mgr/server/Cargo.toml
  • crates/l40_api/build/mgr/server/src/run.rs
  • crates/l40_api/cluster/controller/server/Cargo.toml
  • crates/l40_api/cluster/controller/server/src/leader_election/mod.rs
  • crates/l40_api/cluster/controller/server/src/lifecycle_writer_test_support.rs
  • crates/l40_api/cluster/controller/server/src/node_drain/store/lifecycle_writer_tests/restore_finalize.rs
  • crates/l40_api/cluster/controller/server/src/node_group_labeler/mod.rs
  • crates/l40_api/cluster/controller/server/src/orphaned_sandboxes/quarantine_recovery/store.rs
  • crates/l40_api/cluster/controller/server/src/public_operation_dispatcher.rs
  • crates/l40_api/cluster/controller/server/src/public_operation_dispatcher/tests.rs
  • crates/l40_api/cluster/controller/server/src/reconcilers.rs
  • crates/l40_api/cluster/controller/server/src/transient_lifecycle_sweeper/tests/failed_cleanup_stop_route.rs
  • crates/l40_api/cluster/controller/server/src/warm_pool.rs
  • crates/l40_api/cluster/reconciler/Cargo.toml
  • crates/l40_api/cluster/reconciler/src/metrics.rs
  • crates/l40_api/cluster/reconciler/src/metrics/tests.rs
  • crates/l40_api/cluster/reconciler/src/trigger_fanout.rs
  • crates/l40_api/credmgr/server/Cargo.toml
  • crates/l40_api/credmgr/server/src/auth.rs
  • crates/l40_api/credmgr/server/src/auth/tests.rs
  • crates/l40_api/credmgr/server/src/credential_injection_authority.rs
  • crates/l40_api/credmgr/server/src/credential_injection_authority/state.rs
  • crates/l40_api/credmgr/server/src/credential_injection_authority/tests.rs
  • crates/l40_api/credmgr/server/src/credential_injection_bundle.rs
  • crates/l40_api/credmgr/server/src/credential_injection_rpc.rs
  • crates/l40_api/credmgr/server/src/credential_injection_rpc/tests.rs
  • crates/l40_api/credmgr/server/src/credential_store.rs
  • crates/l40_api/credmgr/server/src/in_memory.rs
  • crates/l40_api/credmgr/server/src/intermediate_ca.rs
  • crates/l40_api/credmgr/server/src/intermediate_key_broker.rs
  • crates/l40_api/credmgr/server/src/intermediate_key_identity.rs
  • crates/l40_api/credmgr/server/src/intermediate_key_store.rs
  • crates/l40_api/credmgr/server/src/k8s_identity/tests.rs
  • crates/l40_api/credmgr/server/src/kek_provisioning.rs
  • crates/l40_api/credmgr/server/src/kek_provisioning/postgres_tests.rs
  • crates/l40_api/credmgr/server/src/kek_store.rs
  • crates/l40_api/credmgr/server/src/key_wrapper.rs
  • crates/l40_api/credmgr/server/src/node_service.rs
  • crates/l40_api/credmgr/server/src/node_service/tests.rs
  • crates/l40_api/credmgr/server/src/run.rs
  • crates/l40_api/credmgr/server/src/run/tests.rs
  • crates/l40_api/credmgr/server/src/run/tests/volume_socket.rs
  • crates/l40_api/credmgr/server/src/run/volume_socket.rs
  • crates/l40_api/credmgr/server/src/run/volume_socket/tests.rs
  • crates/l40_api/credmgr/server/src/service.rs
  • crates/l40_api/credmgr/server/src/service/tests.rs
  • crates/l40_api/credmgr/server/src/storage_exchange.rs
  • crates/l40_api/credmgr/server/src/storage_exchange/tests.rs
  • crates/l40_api/credmgr/server/src/storage_vend_store.rs
  • crates/l40_api/credmgr/server/src/storage_vend_store/postgres_tests.rs
  • crates/l40_api/credmgr/server/src/volume_wrap_store.rs
  • crates/l40_api/data/plane/server/Cargo.toml
  • crates/l40_api/data/plane/server/src/ecw_files.rs
  • crates/l40_api/data/plane/server/src/ecw_process.rs
  • crates/l40_api/data/plane/server/src/lib.rs
  • crates/l40_api/data/plane/server/src/native.rs
  • crates/l40_api/data/plane/server/src/native/protocol.rs
  • crates/l40_api/data/plane/server/src/native/tests.rs
  • crates/l40_api/data/plane/server/src/native/websocket.rs
  • crates/l40_api/data/plane/server/src/native_files/access.rs
  • crates/l40_api/data/plane/server/src/native_files/call.rs
  • crates/l40_api/data/plane/server/src/native_files/tests/fakes.rs
  • crates/l40_api/data/plane/server/src/runtime_route.rs
  • crates/l40_api/data/plane/server/src/state.rs
  • crates/l40_api/data/plane/server/src/tests.rs
  • crates/l40_api/grpc/server/Cargo.toml
  • crates/l40_api/grpc/server/src/grpc_request_params.rs
  • crates/l40_api/grpc/server/src/grpc_trace.rs
  • crates/l40_api/grpc/server/src/lib.rs
  • crates/l40_api/grpc/server/src/tests.rs
  • crates/l40_api/grpc/server/tests/grpc_server_timing.rs
  • crates/l40_api/internal/api/server/Cargo.toml
  • crates/l40_api/internal/api/server/src/adapter.rs
  • crates/l40_api/internal/api/server/src/auto_lifecycle_delete_completions.rs
  • crates/l40_api/internal/api/server/src/auto_lifecycle_delete_completions/tests.rs
  • crates/l40_api/internal/api/server/src/data_plane_sessions.rs
  • crates/l40_api/internal/api/server/src/data_plane_sessions/route_token.rs
  • crates/l40_api/internal/api/server/src/data_plane_sessions/service_route.rs
  • crates/l40_api/internal/api/server/src/data_plane_sessions/session_route.rs
  • crates/l40_api/internal/api/server/src/lib.rs
  • crates/l40_api/internal/api/server/src/metadata.rs
  • crates/l40_api/internal/api/server/src/published_state.rs
  • crates/l40_api/internal/api/server/src/published_state_tests/published_status.rs
  • crates/l40_api/internal/api/server/src/run.rs
  • crates/l40_api/internal/api/server/src/sandbox_service_ports.rs
  • crates/l40_api/internal/api/server/src/tests.rs
  • crates/l40_api/internal/api/server/tests/published_state.rs
  • crates/l40_api/local/health/Cargo.toml
  • crates/l40_api/local/health/src/lib.rs
  • crates/l40_api/local/health/src/tests.rs
  • crates/l40_api/net/gateway/server/Cargo.toml
  • crates/l40_api/net/gateway/server/src/certificates/authority.rs
  • crates/l40_api/net/gateway/server/src/certificates/authority/tests.rs
  • crates/l40_api/net/gateway/server/src/control.rs
  • crates/l40_api/net/gateway/server/src/control/tests.rs
  • crates/l40_api/net/gateway/server/src/ingress/mod.rs
  • crates/l40_api/net/gateway/server/src/ingress/tests.rs
  • crates/l40_api/net/gateway/server/src/lib.rs
  • crates/l40_api/net/gateway/server/src/resource_budget.rs
  • crates/l40_api/net/gateway/server/src/route_verification.rs
  • crates/l40_api/net/gateway/server/src/route_verification/tests.rs
  • crates/l40_api/net/gateway/server/src/run.rs
  • crates/l40_api/net/gateway/server/src/sandbox_span.rs
  • crates/l40_api/net/gateway/server/src/state/source.rs
  • crates/l40_api/node/api/server/Cargo.toml
  • crates/l40_api/node/api/server/src/clients.rs
  • crates/l40_api/node/api/server/src/clients/build_tests.rs
  • crates/l40_api/node/api/server/src/clients/policy_auth_tests.rs
  • crates/l40_api/node/api/server/src/clients/stream_tests.rs
  • crates/l40_api/node/api/server/src/drain.rs
  • crates/l40_api/node/api/server/src/drain/tests.rs
  • crates/l40_api/node/api/server/src/restart_handoff.rs
  • crates/l40_api/node/api/server/src/restart_handoff/tests.rs
  • crates/l40_api/node/api/server/src/run.rs
  • crates/l40_api/node/api/server/src/run/tests.rs
  • crates/l40_api/node/api/server/src/transfer.rs
  • crates/l40_api/node/api/server/src/worker.rs
  • crates/l40_api/node/api/server/src/worker/tests.rs
  • crates/l40_api/node/ctl/server/Cargo.toml
  • crates/l40_api/node/ctl/server/src/cluster_reconcile_trigger.rs
  • crates/l40_api/node/ctl/server/src/dirty_state.rs
  • crates/l40_api/node/ctl/server/src/facets.rs
  • crates/l40_api/node/ctl/server/src/facets/tests.rs
  • crates/l40_api/node/ctl/server/src/lib.rs
  • crates/l40_api/node/ctl/server/src/tests.rs
  • crates/l40_api/node/mgr/server/Cargo.toml
  • crates/l40_api/node/mgr/server/src/disk_admission.rs
  • crates/l40_api/node/mgr/server/src/disk_admission/cache_handle.rs
  • crates/l40_api/node/mgr/server/src/run.rs
  • crates/l40_api/node/mgr/server/src/run/tests.rs
  • crates/l40_api/node/mgr/server/src/runtime_supervisor_client/tests.rs
  • crates/l40_api/node/mgr/server/src/service.rs
  • crates/l40_api/node/mgr/server/src/service/btrfs_delegation.rs
  • crates/l40_api/node/mgr/server/src/service/btrfs_send_source.rs
  • crates/l40_api/node/mgr/server/src/service/btrfs_send_transport.rs
  • crates/l40_api/node/mgr/server/src/service/btrfs_send_transport/tests.rs
  • crates/l40_api/node/mgr/server/src/service/claim_contention_tests.rs
  • crates/l40_api/node/mgr/server/src/service/cleanup_inspect/tests.rs
  • crates/l40_api/node/mgr/server/src/service/control.rs
  • crates/l40_api/node/mgr/server/src/service/execution_fence.rs
  • crates/l40_api/node/mgr/server/src/service/execution_fence/tests.rs
  • crates/l40_api/node/mgr/server/src/service/execution_policy.rs
  • crates/l40_api/node/mgr/server/src/service/execution_policy/tests.rs
  • crates/l40_api/node/mgr/server/src/service/filesystem_work/tests.rs
  • crates/l40_api/node/mgr/server/src/service/network_helpers.rs
  • crates/l40_api/node/mgr/server/src/service/node_artifacts.rs
  • crates/l40_api/node/mgr/server/src/service/runtime/tests.rs
  • crates/l40_api/node/mgr/server/src/service/snapshots.rs
  • crates/l40_api/node/mgr/server/src/service/snapshots/tests.rs
  • crates/l40_api/node/mgr/server/src/service/tests.rs
  • crates/l40_api/node/runtime/manager/server/Cargo.toml
  • crates/l40_api/node/runtime/manager/server/src/lib.rs
  • crates/l40_api/node/runtime/manager/server/src/run.rs
  • crates/l40_api/node/runtime/manager/server/src/service.rs
  • crates/l40_api/node/runtime/manager/server/src/service/tests.rs
  • crates/l40_api/node/runtime/manager/server/src/service_name.rs
  • crates/l40_api/node/runtime/supervisor/Cargo.toml
  • crates/l40_api/node/runtime/supervisor/src/run.rs
  • crates/l40_api/node/runtime/supervisor/src/run/tests.rs
  • crates/l40_api/node/runtime/supervisor/src/service.rs
  • crates/l40_api/node/runtime/supervisor/src/service/execution.rs
  • crates/l40_api/sbx/mgr/client/Cargo.toml
  • crates/l40_api/sbx/mgr/server/Cargo.toml
  • crates/l40_api/sbx/mgr/server/src/node_manager_transport/fake.rs
  • crates/l40_api/sbx/mgr/server/src/node_state_sync.rs
  • crates/l40_api/sbx/mgr/server/src/run.rs
  • crates/l40_api/sbx/mgr/server/src/run/test_receiver.rs
  • crates/l40_api/sbx/mgr/server/src/run/tests.rs
  • crates/l40_api/sbx/mgr/server/src/sandbox_eviction/tests.rs
  • crates/l40_api/sbx/mgr/server/src/service/activation_support.rs
  • crates/l40_api/sbx/mgr/server/src/service/activation_support/tests/interception_recovery.rs
  • crates/l40_api/sbx/mgr/server/src/service/adapter/tests.rs
  • crates/l40_api/sbx/mgr/server/src/service/auth_lookup.rs
  • crates/l40_api/sbx/mgr/server/src/service/auth_lookup/wait_ready_policy_tests.rs
  • crates/l40_api/sbx/mgr/server/src/service/auth_lookup_tests.rs
  • crates/l40_api/sbx/mgr/server/src/service/cache_cleanup/tests.rs
  • crates/l40_api/sbx/mgr/server/src/service/cleanup/stop_admission_tests.rs
  • crates/l40_api/sbx/mgr/server/src/service/drain.rs
  • crates/l40_api/sbx/mgr/server/src/service/gateway_identity/tests.rs
  • crates/l40_api/sbx/mgr/server/src/service/grpc_core/create_after_lookup_tests.rs
  • crates/l40_api/sbx/mgr/server/src/service/grpc_core/create_template_lookup_tests.rs
  • crates/l40_api/sbx/mgr/server/src/service/grpc_core/tests.rs
  • crates/l40_api/sbx/mgr/server/src/service/grpc_core/unpersisted_cleanup_tests.rs
  • crates/l40_api/sbx/mgr/server/src/service/grpc_lifecycle/backup_policy_tests.rs
  • crates/l40_api/sbx/mgr/server/src/service/grpc_lifecycle/retired_teardown_tests/cluster_api_stub_tests.rs
  • crates/l40_api/sbx/mgr/server/src/service/grpc_lifecycle/teardown_backup_tests.rs
  • crates/l40_api/sbx/mgr/server/src/service/grpc_lifecycle/tests.rs
  • crates/l40_api/sbx/mgr/server/src/service/grpc_pool_wait_clone/tests.rs
  • crates/l40_api/sbx/mgr/server/src/service/grpc_spaced_process_snapshots.rs
  • crates/l40_api/sbx/mgr/server/src/service/host_control/tests.rs
  • crates/l40_api/sbx/mgr/server/src/service/mod.rs
  • crates/l40_api/sbx/mgr/server/src/service/network_runtime.rs
  • crates/l40_api/sbx/mgr/server/src/service/network_runtime/tests.rs
  • crates/l40_api/sbx/mgr/server/src/service/reconcile.rs
  • crates/l40_api/sbx/mgr/server/src/service/recovery_cross_node.rs
  • crates/l40_api/sbx/mgr/server/src/service/route_identity_tests.rs
  • crates/l40_api/sbx/mgr/server/src/service/runtime_upgrade/rpc/tests.rs
  • crates/l40_api/sbx/mgr/server/src/service/runtime_upgrade/tests.rs
  • crates/l40_api/sbx/mgr/server/src/service/tests.rs
  • crates/l40_api/sbx/mgr/server/src/sidecar_env.rs
  • crates/l40_api/sbx/mgr/server/src/sidecar_env_tests.rs
  • crates/l40_api/sbx/mgr/server/src/snapshot_restore/tests.rs
  • crates/l40_api/sbx/mgr/server/src/snapshot_upload_jobs/tests.rs
  • crates/l40_api/service/host/Cargo.toml
  • crates/l40_api/service/host/src/lib.rs
  • crates/l40_api/service/host/src/tests.rs
  • crates/l40_api/service/host/tests/logging_process.rs
  • crates/l40_api/spaced/guest/execution/Cargo.toml
  • crates/l40_api/spaced/guest/execution/src/filesystem/worker/linux.rs
  • crates/l40_api/spaced/guest/server/Cargo.toml
  • crates/l40_api/spaced/guest/server/src/run.rs
  • crates/l40_api/spaced/host/server/Cargo.toml
  • crates/l40_api/spaced/host/server/src/authorization.rs
  • crates/l40_api/spaced/host/server/src/authorization/tests.rs
  • crates/l40_api/spaced/host/server/src/bridge.rs
  • crates/l40_api/spaced/host/server/src/lib.rs
  • crates/l40_api/spaced/host/server/src/run.rs
  • crates/l40_api/template/mgr/server/Cargo.toml
  • crates/l40_api/template/mgr/server/src/node_state_sync.rs
  • crates/l40_api/template/mgr/server/src/rootfs_cache.rs
  • crates/l40_api/template/mgr/server/src/rootfs_zstd.rs
  • crates/l40_api/template/mgr/server/src/run.rs
  • crates/l40_api/template/mgr/server/src/service.rs
  • crates/l40_api/template/mgr/server/src/service/lookup.rs
  • crates/l40_api/template/mgr/server/src/service/support.rs
  • crates/l40_api/template/mgr/server/src/service/tests.rs
  • crates/l40_api/template/mgr/server/src/volume.rs
  • crates/l40_api/volmgr/server/Cargo.toml
  • crates/l40_api/volmgr/server/src/executor.rs
  • crates/l40_api/volmgr/server/src/executor/tests.rs
  • crates/l40_api/volmgr/server/src/run.rs
  • crates/l40_api/volmgr/server/src/run/tests.rs
  • crates/l40_api/volmgr/server/src/service.rs
  • crates/l40_api/volmgr/server/src/service/tests.rs
  • crates/l40_api/volmgr/server/src/staging.rs
  • crates/l50_app/api/svc/Cargo.toml
  • crates/l50_app/api/svc/src/main.rs
  • crates/l50_app/build/mgr/svc/Cargo.toml
  • crates/l50_app/build/mgr/svc/src/main.rs
  • crates/l50_app/cluster/controller/svc/Cargo.toml
  • crates/l50_app/cluster/controller/svc/src/main.rs
  • crates/l50_app/credmgr/svc/Cargo.toml
  • crates/l50_app/credmgr/svc/src/main.rs
  • crates/l50_app/data/plane/svc/Cargo.toml
  • crates/l50_app/data/plane/svc/src/main.rs
  • crates/l50_app/internal/api/svc/Cargo.toml
  • crates/l50_app/internal/api/svc/src/main.rs
  • crates/l50_app/net/gateway/svc/Cargo.toml
  • crates/l50_app/net/gateway/svc/src/main.rs
  • crates/l50_app/node/api/svc/Cargo.toml
  • crates/l50_app/node/api/svc/src/main.rs
  • crates/l50_app/node/ctl/svc/Cargo.toml
  • crates/l50_app/node/ctl/svc/src/main.rs
  • crates/l50_app/node/mgr/svc/Cargo.toml
  • crates/l50_app/node/mgr/svc/src/main.rs
  • crates/l50_app/node/runtime/manager/svc/Cargo.toml
  • crates/l50_app/node/runtime/manager/svc/src/main.rs
  • crates/l50_app/sbx/mgr/svc/Cargo.toml
  • crates/l50_app/sbx/mgr/svc/src/main.rs
  • crates/l50_app/spaced/host/svc/Cargo.toml
  • crates/l50_app/spaced/host/svc/src/main.rs
  • crates/l50_app/template/mgr/svc/Cargo.toml
  • crates/l50_app/template/mgr/svc/src/main.rs
  • crates/l50_app/volmgr/svc/Cargo.toml
  • crates/l50_app/volmgr/svc/src/main.rs
  • crates/libs/common/core/src/types/admin.rs
  • crates/libs/common/svc/Cargo.toml
  • crates/libs/common/svc/src/lib.rs
  • crates/libs/common/svc/src/types/auth.rs
  • crates/libs/common/svc/src/types/endpoint.rs
  • crates/libs/common/svc/src/types/endpoint/tests.rs
  • crates/libs/common/svc/src/types/errors.rs
  • crates/libs/common/svc/src/types/errors/tests.rs
  • crates/libs/common/svc/src/types/grpc.rs
  • crates/libs/common/svc/src/types/http.rs
  • crates/libs/common/svc/src/types/k8s.rs
  • crates/libs/common/svc/src/types/mod.rs
  • crates/libs/common/svc/src/types/sockets.rs
  • crates/test_support/mock/branching/key/provider/svc/Cargo.toml
  • crates/test_support/mock/branching/key/provider/svc/src/main.rs
  • crates/test_support/node/api/sim/Cargo.toml
  • crates/test_support/node/api/sim/src/harness.rs
  • crates/test_support/node/api/sim/src/worker.rs
  • crates/test_support/node/api/sim/src/worker/tests.rs
  • crates/tools/archcheck/README.md
  • crates/tools/archcheck/src/rules/layers/policy.rs
  • crates/tools/net/gateway/bench/Cargo.toml
  • crates/tools/net/gateway/bench/src/traffic_control.rs
  • docs/rust/api-and-naming.md
  • docs/rust/space-conventions.md
  • docs/rust/type-driven-design.md
  • infra/space/kind/README.md
  • infra/space/kind/charts/space-node-service/templates/_helpers.tpl
  • scripts/move_crates.toml
  • scripts/tests/observability/logs/README.md
  • scripts/tests/observability/logs/build-fixture.sh

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review

@github-actions github-actions Bot added the triage:pending Waiting for a maintainer to triage label Nov 5, 2026
@github-actions

github-actions Bot commented Nov 5, 2026

Copy link
Copy Markdown

Thanks for opening this pull request! A SPACE maintainer will take a look.

CONTRIBUTING.md explains how we review outside contributions.

@ac-pplx
ac-pplx force-pushed the ac/delete-common-svc branch from 294871f to 2b5ae33 Compare November 5, 2026 23:15
@ac-pplx
ac-pplx force-pushed the ac/delete-common-svc branch from 2b5ae33 to 870942c Compare November 6, 2026 00:19
@ac-pplx
ac-pplx added this pull request to stack #1610 November 6, 2026 03:39
@ac-pplx
ac-pplx marked this pull request as ready for review November 6, 2026 04:54

@shehan-pplx shehan-pplx left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed by Shehan's Review Bot

Comment thread crates/l50_app/api/svc/Cargo.toml Resolved
Moves what is left of common-svc into its owning crates and deletes it:

- pplx-space-grpc-server (crates/l40_api/grpc/server, new): the
  server builder and its timeouts, the health service, the gRPC trace
  layer and the request-parameter logging (`bootstrap.rs`,
  `grpc_trace.rs`, `grpc_request_params.rs`, their tests and
  `tests/grpc_server_timing.rs`).
- pplx-space-local-health (crates/l40_api/local/health, new):
  `local_health`. Both are l40_api: the trace layer names SPACE span
  fields and the space retry class, and every user is an API crate.
- pplx-space-service-host (crates/l40_api/service/host, new): the
  `init_service*` family, `shutdown_telemetry`, `TelemetryGuard` and
  `tests/logging_process.rs`, with the `otel` and `datadog` features.
  It is l40 because it reads the process cluster id from
  pplx-space-cluster-id.
- `SandboxSpanLayer`, whose only user is net-gateway, moves there
  (`sandbox_span`); `ServiceName`, whose only user is the runtime
  manager, moves there (`service_name`); the cache disk-admission
  handle moves into node-mgr as `disk_admission::cache_handle`.
- The thirteen unused types (`AuthContext`, the parse-error and
  bad-request helpers, `HttpsPollingUrl`, `ServiceEndpoint` and the
  four socket-path newtypes) are deleted.

Every dependent imports from the owning crates instead of the
re-exports, and the `otel`/`datadog` features that forwarded to
common-svc forward to service-host where the crate calls it, and to
observability otherwise. The deprecated `datadog-otel` feature is not
carried over. node-mgr's dev-dependencies declare the tokio
`rt-multi-thread` feature its tests used to get through common-svc.

ARCHITECTURE.toml drops common-svc from `unmoved` and `legacy`; the
baseline drops its direction, storage_access and crate_names entries.
CI drops common-svc's clippy step and its special case in the
isolated-crates selection, and lints grpc-server, local-health and
service-host alone (ALSO), which covers service-host without its
telemetry features. Docs, skills, the Kind pointers, the log-fixture
build script and the crate-move map follow.

Event targets change for events without an explicit target:
`pplx_space_common_svc::bootstrap::grpc_trace` (the `grpc.server`
span) becomes `pplx_space_grpc_server::grpc_trace`;
`pplx_space_common_svc::local_health` (5 events) becomes
`pplx_space_local_health`; `pplx_space_common_svc::disk_admission`
(4) becomes `pplx_space_node_mgr::disk_admission::cache_handle`; and
`pplx_space_common_svc` (the telemetry shutdown warning) becomes
`pplx_space_service_host`.
@ac-pplx
ac-pplx force-pushed the ac/delete-common-svc branch from dc970cd to 482fc86 Compare November 6, 2026 18:28
@ac-pplx
ac-pplx added this pull request to the merge queue Nov 6, 2026
Merged via the queue into main with commit 23b1199 Nov 6, 2026
45 checks passed
@ac-pplx
ac-pplx deleted the ac/delete-common-svc branch November 6, 2026 19:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

triage:pending Waiting for a maintainer to triage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants