---
title: "src/MultiSiteManufacturing.Contracts/Protos/sites.proto - MultiSiteManufacturing source"
url: "https://nsta1.github.io/Orleans.Lattice/samples/MultiSiteManufacturing/source/src-multisitemanufacturing-contracts-protos-sites-proto.html"
source: "https://github.com/NSTA1/Orleans.Lattice/blob/release/9.9/samples/MultiSiteManufacturing/src/MultiSiteManufacturing.Contracts/Protos/sites.proto"
documents: "Orleans.Lattice 9.9.0 (release line 9.9)"
built: "2026-10-04"
all-pages: "https://nsta1.github.io/Orleans.Lattice/llms.txt"
---
# src/MultiSiteManufacturing.Contracts/Protos/sites.proto

Part of [MultiSiteManufacturing source](../source.md).

````protobuf
syntax = "proto3";

package multisitemfg.v1;

option csharp_namespace = "MultiSiteManufacturing.Contracts.V1";

import "common.proto";
import "google/protobuf/empty.proto";

service SiteControlService {
  rpc ListSites        (google.protobuf.Empty)   returns (ListSitesResponse);
  rpc ConfigureSite    (ConfigureSiteRequest)    returns (SiteState);
  rpc WatchSites       (google.protobuf.Empty)   returns (stream SiteState);
  rpc TriggerPreset    (TriggerPresetRequest)    returns (PresetResult);
  rpc ListBackends     (google.protobuf.Empty)   returns (ListBackendsResponse);
  rpc ConfigureBackend (ConfigureBackendRequest) returns (BackendChaosState);
}

enum ChaosPreset {
  CHAOS_PRESET_UNSPECIFIED = 0;
  CHAOS_PRESET_CLEAR_ALL = 1;
  CHAOS_PRESET_TRANSOCEANIC_BACKHAUL_OUTAGE = 2;
  CHAOS_PRESET_CUSTOMS_HOLD = 3;
  CHAOS_PRESET_MRB_WEEKEND = 4;
  CHAOS_PRESET_LATTICE_STORAGE_FLAKES = 5;
  CHAOS_PRESET_BASELINE_REORDER_STORM = 6;
  CHAOS_PRESET_CLUSTER_SPLIT = 7;
  CHAOS_PRESET_REPLICATION_DISCONNECT = 8;
}

message SiteConfig {
  bool is_paused = 1;
  int32 delay_ms = 2;
  bool reorder_enabled = 3;
}

message SiteState {
  ProcessSite site = 1;
  SiteConfig config = 2;
  int32 pending_count = 3;
  int64 admitted_count = 4;
}

message ListSitesResponse {
  repeated SiteState sites = 1;
}

message ConfigureSiteRequest {
  ProcessSite site = 1;
  SiteConfig config = 2;
}

message TriggerPresetRequest {
  ChaosPreset preset = 1;
}

message PresetResult {
  repeated SiteState sites = 1;
}

// Backend chaos. Jitter and transient failures are applied to one
// backend at a time to surface baseline-vs-lattice divergence
// organically. Nominal config = all zero.
message BackendChaosConfig {
  int32 jitter_ms_min = 1;
  int32 jitter_ms_max = 2;
  double transient_failure_rate = 3;
  double write_amplification_rate = 4;
  // When positive, the decorator buffers writes for this many ms then
  // flushes them in shuffled order.
  int32 reorder_window_ms = 5;
}

message BackendChaosState {
  string name = 1;
  BackendChaosConfig config = 2;
}

message ListBackendsResponse {
  repeated BackendChaosState backends = 1;
}

message ConfigureBackendRequest {
  string name = 1;
  BackendChaosConfig config = 2;
}
````

Previous: [src/MultiSiteManufacturing.Contracts/Protos/inventory.proto](src-multisitemanufacturing-contracts-protos-inventory-proto.md). Next: [src/MultiSiteManufacturing.Host/appsettings.cluster.eu.json](src-multisitemanufacturing-host-appsettings-cluster-eu-json.md). Contents: [MultiSiteManufacturing source](../source.md).
