# SQ-008: Protobuf API Definitions **Status:** `[ ] TODO` **Blocked by:** SQ-000 **Priority:** High ## Description Define all protobuf service definitions and generate the Rust gRPC code via buf. ## Files to Create/Modify - `interface/proto/sq/v1/data_plane.proto` - Publish, Subscribe, Ack RPCs - `interface/proto/sq/v1/control_plane.proto` - CreateTopic, DeleteTopic, ListTopics, DescribeTopic, CreateConsumerGroup - `interface/proto/sq/v1/health.proto` - Status service (may already exist from Phase 0) - `interface/proto/sq/v1/cluster.proto` - ReplicateEntries, Join, Heartbeat, FetchSegment (internal) - `crates/sq-grpc-interface/src/lib.rs` - updated module re-exports - Regenerated code in `crates/sq-grpc-interface/src/grpc/` ## Key Service Definitions ### DataPlaneService - `Publish(PublishRequest) -> PublishResponse` - `Subscribe(SubscribeRequest) -> stream SubscribeResponse` - `Ack(AckRequest) -> AckResponse` ### ControlPlaneService - `CreateTopic`, `DeleteTopic`, `ListTopics`, `DescribeTopic`, `CreateConsumerGroup` ### ClusterService (internal) - `ReplicateEntries`, `Join`, `Heartbeat`, `FetchSegment` (streaming) ### StatusService - `Status(GetStatusRequest) -> GetStatusResponse` ## Acceptance Criteria - [ ] `buf lint` passes on all proto files - [ ] `buf generate` produces code in sq-grpc-interface - [ ] `cargo check -p sq-grpc-interface` passes - [ ] All service traits are generated (DataPlaneService, ControlPlaneService, ClusterService, StatusService) - [ ] AckMode enum has ALL, LOCAL, NONE variants