Skip to content

Commit a9daa77

Browse files
committed
feat(stovepipe): add GetValidation protobuf contract
Summary: Intent: - Expose the current validation for a commit's authoritative Stovepipe request. - Preserve result presence and bounded project enumeration in the public contract. Changes: - Add GetValidation request, response, and project validation messages. - Reuse the shared validation result shape and generate gRPC and YARPC bindings. - Clarify authoritative URI selection and pagination stability in the RFC. This PR builds on #638, which introduces the request-history contract and shared validation result. --- <sub>Generated by the 🪄 [pr-create](https://sg.uberinternal.com/code.uber.internal/uber-code/devexp-agent-marketplace/-/blob/claude-code/plugins/dev/uber-dev/skills/pr-create/SKILL.md) skill in devexp-agent-marketplace</sub>
1 parent 981f4f1 commit a9daa77

5 files changed

Lines changed: 508 additions & 69 deletions

File tree

api/stovepipe/proto/stovepipe.proto

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,50 @@ message GetRequestHistoryByURIResponse {
140140
string next_page_token = 2;
141141
}
142142

143+
// GetValidationRequest selects the authoritative validation for an exact commit URI.
144+
message GetValidationRequest {
145+
// Logical queue containing the request.
146+
string queue = 1;
147+
// Exact VCS-agnostic commit URI whose authoritative request is selected.
148+
string change_uri = 2;
149+
// Optional exact project scope. When absent, one page of planned projects is returned.
150+
optional string project = 3;
151+
// Maximum projects to return. Zero selects the server default.
152+
int32 page_size = 4;
153+
// Opaque continuation token. Empty selects the first page.
154+
string page_token = 5;
155+
}
156+
157+
// ProjectValidation is the recorded validation for one planned project.
158+
message ProjectValidation {
159+
// Stable project identifier.
160+
string project = 1;
161+
// Immutable verdict for the project. Unset until its fact is recorded.
162+
ValidationResult result = 2;
163+
}
164+
165+
// GetValidationResponse contains the authoritative request's current validation projection.
166+
message GetValidationResponse {
167+
// Globally unique identifier of the authoritative request.
168+
string request_id = 1;
169+
// Logical queue containing the request.
170+
string queue = 2;
171+
// VCS-agnostic commit URI validated by the request.
172+
string change_uri = 3;
173+
// Baseline URI for incremental validation. Empty for a full build.
174+
string base_uri = 4;
175+
// Stable public lifecycle state of the request.
176+
string request_state = 5;
177+
// Immutable whole-repository verdict. Unset until its fact is recorded.
178+
ValidationResult repository_result = 6;
179+
// Whether every planned project has one durable result and completion is recorded.
180+
bool project_results_complete = 7;
181+
// Planned projects in stable project order, with any recorded verdicts.
182+
repeated ProjectValidation projects = 8;
183+
// Opaque continuation token. Empty on the final page.
184+
string next_page_token = 9;
185+
}
186+
143187
// Stovepipe provides the Stovepipe API.
144188
service Stovepipe {
145189
// Ping returns a response indicating the service is alive
@@ -151,4 +195,6 @@ service Stovepipe {
151195
rpc GetRequestHistoryByRequestID(GetRequestHistoryByRequestIDRequest) returns (GetRequestHistoryByRequestIDResponse) {}
152196
// GetRequestHistoryByURI returns retained history for an exact commit URI's authoritative request.
153197
rpc GetRequestHistoryByURI(GetRequestHistoryByURIRequest) returns (GetRequestHistoryByURIResponse) {}
198+
// GetValidation returns current validation for an exact commit URI's authoritative request.
199+
rpc GetValidation(GetValidationRequest) returns (GetValidationResponse) {}
154200
}

0 commit comments

Comments
 (0)