mirror of
https://github.com/azaion/autopilot.git
synced 2026-06-21 21:01:10 +00:00
0854d3be1c
AZ-659: FramePublisher with per-consumer drop accounting (Arc<Bytes> zero-copy fan-out). Adds ConsumerId enum, PublisherStats, FrameReceiver wrapper, and publisher integration tests (AC-1, AC-2, AC-3). AZ-660: Bi-directional tonic gRPC stream to ../detections. Reconnect with bounded exponential backoff (1 s → 30 s cap). Drop-oldest in-flight budgeting (max_concurrent_in_flight = 2). ai_locked frame skipping. Integration tests against fixture in-process server (AC-1: happy path 30 fps/10 s, AC-2: reconnect, AC-3: budget drops, AC-4: ai_locked skipping). AZ-661: Schema validation (hard SchemaMismatch error on version mismatch), model_version latch with ModelVersionChanged events, sliding-window p99 latency tracker with Tier1Degraded/Tier1Recovered transitions. Integration tests (AC-1, AC-2, AC-3). Also: update module-layout.md for frame_ingest and detection_client to reflect the streaming API shape; code review report batch_18. Co-authored-by: Cursor <cursoragent@cursor.com>
20 lines
695 B
Rust
20 lines
695 B
Rust
//! AZ-660 build-time codegen for the `../detections` gRPC contract.
|
|
//!
|
|
//! Mirrors the `telemetry_stream` build script: uses
|
|
//! `protoc-bin-vendored` so the build is self-contained (no system
|
|
//! protoc install required on dev or CI). The PROTOC env var is set
|
|
//! before invoking `tonic-prost-build`.
|
|
|
|
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|
let protoc = protoc_bin_vendored::protoc_bin_path()?;
|
|
std::env::set_var("PROTOC", protoc);
|
|
|
|
tonic_prost_build::configure()
|
|
.build_client(true)
|
|
.build_server(true)
|
|
.compile_protos(&["proto/detections.proto"], &["proto"])?;
|
|
|
|
println!("cargo:rerun-if-changed=proto/detections.proto");
|
|
Ok(())
|
|
}
|