Table of Contents

src/MultiSiteManufacturing.Contracts/Protos/sites.proto

This page is part of the documentation for Orleans.Lattice 9.9.0 (release line 9.9), built 2026-10-04. It is also published as markdown, with every table and list, at src-multisitemanufacturing-contracts-protos-sites-proto.md, and llms.txt lists every page.

Part of MultiSiteManufacturing source.

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;
}