Skip to content

Commit 6072894

Browse files
committed
docs(stovepipe): rename project status lookup
1 parent 6a32faa commit 6072894

2 files changed

Lines changed: 10 additions & 10 deletions

File tree

doc/rfc/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Design documents and technical proposals, grouped by scope. Shared/cross-cutting
2929
- [Build stage](stovepipe/steps/build.md) - Trigger-only stage and Stovepipe's URI-based BuildRunner contract
3030
- [Buildsignal stage](stovepipe/steps/buildsignal.md) - Build polling, terminal status persistence, and the handoff to record
3131
- [Record stage](stovepipe/steps/record.md) - Immutable validation facts keyed by `(queue, uri, project)`, monotonic last-green bookmark advancement and ref promotion, and the deferred hook-event and analyze handoffs
32-
- [GetValidation API](stovepipe/get-validation-api.md) - Current request lifecycle, whole-repository result, and cursor-paginated project validation results backed by one durable project manifest
32+
- [GetProjectStatusByURI API](stovepipe/get-validation-api.md) - Current request lifecycle, whole-repository result, and cursor-paginated project validation results backed by one durable project manifest
3333

3434
## Runway
3535

doc/rfc/stovepipe/get-validation-api.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
# Stovepipe GetValidation API
1+
# Stovepipe GetProjectStatusByURI API
22

33
## Summary
44

5-
Stovepipe exposes the current validation of one queue and commit through `GetValidation`. The response combines request lifecycle, the whole-repository result, and the request's complete planned project list with any results recorded for those projects.
5+
Stovepipe exposes the current validation of one queue and commit through `GetProjectStatusByURI`. The response combines request lifecycle, the whole-repository result, and the request's complete planned project list with any results recorded for those projects.
66

77
This is a current-state API, not another history projection. It reads `Request` for lifecycle and scope, `ValidationFact` for immutable results, and a request-owned project manifest for enumeration and completion. The manifest is also the single project list used by validation planning and downstream consumers.
88

9-
The contract is based on the `GetValidation` flow in [Stovepipe <-> CD Integration: Event and API Contract](https://docs.google.com/document/d/1ouymU93l2a6lLiKwhqViSR1HFdwviuywj_sL6gDNeQM/edit?tab=t.n2tdz7ihz0sk).
9+
The contract is based on the validation lookup flow in [Stovepipe <-> CD Integration: Event and API Contract](https://docs.google.com/document/d/1ouymU93l2a6lLiKwhqViSR1HFdwviuywj_sL6gDNeQM/edit?tab=t.n2tdz7ihz0sk).
1010

1111
## Representative Contract
1212

1313
The final protobuf receives a separate compatibility review before implementation. Its representative shape is:
1414

1515
```proto
16-
message GetValidationRequest {
16+
message GetProjectStatusByURIRequest {
1717
string queue = 1;
1818
string change_uri = 2;
1919
optional string project = 3;
@@ -30,7 +30,7 @@ message ProjectValidation {
3030
ValidationResult result = 2;
3131
}
3232
33-
message GetValidationResponse {
33+
message GetProjectStatusByURIResponse {
3434
string request_id = 1;
3535
string queue = 2;
3636
string change_uri = 3;
@@ -43,7 +43,7 @@ message GetValidationResponse {
4343
}
4444
4545
service Stovepipe {
46-
rpc GetValidation(GetValidationRequest) returns (GetValidationResponse) {}
46+
rpc GetProjectStatusByURI(GetProjectStatusByURIRequest) returns (GetProjectStatusByURIResponse) {}
4747
}
4848
```
4949

@@ -57,9 +57,9 @@ The existing degree scale answers “how broken is this scope”: `0.0` is fully
5757

5858
The controller verifies that the loaded Request has the requested queue and URI before loading its project manifest and whole-repository fact. Request URI is immutable once the request and mapping are created; storage updates must not permit the two records to diverge.
5959

60-
Ingest claims `request_uri` before creating the Request so concurrent ingests converge without a cross-record transaction. A lookup racing that sequence can therefore observe a mapping whose Request is not present yet. `GetValidation` treats that condition as unavailable and retryable rather than not found or immediate corruption. Repeated occurrences are surfaced through consistency metrics and require repair; a mapping to a Request with a different queue or URI is an internal consistency error.
60+
Ingest claims `request_uri` before creating the Request so concurrent ingests converge without a cross-record transaction. A lookup racing that sequence can therefore observe a mapping whose Request is not present yet. `GetProjectStatusByURI` treats that condition as unavailable and retryable rather than not found or immediate corruption. Repeated occurrences are surfaced through consistency metrics and require repair; a mapping to a Request with a different queue or URI is an internal consistency error.
6161

62-
`request_state` uses the same stable public vocabulary as [Stovepipe Request History](request-history-api.md): `accepted`, `processing`, `succeeded`, `failed`, `cancelled`, and `superseded`. One value identifies both lifecycle position and terminal outcome without permitting contradictory field combinations. The wire field is a string, following SubmitQueue's current-status and history APIs, so clients can tolerate additive vocabulary changes. It is projected explicitly from Stovepipe's internal `RequestState`; no SubmitQueue domain enum is shared across the boundary.
62+
`request_state` uses the stable public vocabulary `accepted`, `processing`, `succeeded`, `failed`, `cancelled`, and `superseded`. One value identifies both lifecycle position and terminal outcome without permitting contradictory field combinations. The wire field is a string, following SubmitQueue's current-status and history APIs, so clients can tolerate additive vocabulary changes. It is projected explicitly from Stovepipe's internal `RequestState`; no SubmitQueue domain enum is shared across the boundary.
6363

6464
`failed` retains the current conservative meaning: either validation failed or the request could not continue. The API does not synthesize a `COMPLETED` versus `ERROR` distinction that the Request does not persist. Adding that distinction later requires a durable outcome classification first, followed by an additive response field.
6565

@@ -81,7 +81,7 @@ Request terminal state and result completion are intentionally distinct. The cur
8181

8282
## Pagination and Consistency
8383

84-
Pagination follows the same public convention as Stovepipe request history and SubmitQueue queue listing: an empty token selects the first page, zero page size selects the server default, and `next_page_token` is empty on the final page. The initial default is 50 projects and the maximum is 200.
84+
Pagination follows SubmitQueue's queue-listing convention: an empty token selects the first page, zero page size selects the server default, and `next_page_token` is empty on the final page. The initial default is 50 projects and the maximum is 200.
8585

8686
The controller reads the immutable manifest in `project ASC` order and inspects one project beyond the effective page size before issuing a continuation token. The opaque, versioned token represents the exclusive position after the last returned project and is bound to the queue, change URI, resolved request ID, and all-project selector mode. Decoding produces a typed manifest cursor; neither the manifest store nor the fact store parses public tokens. The cursor may include a deterministic chunk position in addition to the last project ID without exposing either representation to clients. Page size is not bound, so callers may change it between pages. A malformed token, unsupported version, or token reused for another query is invalid.
8787

0 commit comments

Comments
 (0)