You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit cc185e0
Browse filesBrowse the repository at this point in the historyBrowse files
## Summary
**What**:
- Add project and repository results in a single table on request pages,
with recording progress, shareable pagination, and the updated timestamp
beneath the results.
- Keep result mapping, presentation, refresh, and stale-result handling
in the shared UI while hosts supply transport, authentication, and
telemetry.
**Why**:
- Let operators inspect validation results for the exact request without
leaving its status page.
- Avoid duplicating project-results behavior across host applications.
## Test Plan
- [x] Add unit tests.
## Revert Plan
- Revert this PR. Roll back dependent UI package updates with it; no
stored data changes or migrations are involved.
## Issues
- [CODEM-603](https://linear.app/uber/issue/CODEM-603/request-page-ui)
A framework-neutral React UI with a queue request list and a request page containing the current lifecycle summary and retained history. The host supplies queue configuration, a structural `StovepipeService` client, authentication, transport and optional logging.
3
+
A framework-neutral React UI with a queue request list and a request page containing the current lifecycle summary, retained history, and recorded project results. The host supplies queue configuration, a structural `StovepipeService` client, authentication, transport and optional logging.
4
4
5
5
Logging uses a synchronous `onLog` callback passed on each `handle` request. Bind it to the host's request-scoped logger; it receives severity, message, and structured metadata containing the original `error`, correlation `requestId`, and page `path`. Omitting it is silent, and callback exceptions do not change page results. The library has no logging-library dependency.
6
6
7
7
## Integration
8
8
9
-
Instrumentation belongs in the host: wrap `handle` to observe page results and instrument the concrete service client for RPC traces. A `render` result can contain a failed section, so check `requests.ok` or `history.ok` before reporting success. The reference host uses native OpenTelemetry spans, a page-load counter and a duration metric; other hosts can use their own telemetry without an adapter. The reusable module has no telemetry dependency or instrumentation API.
9
+
Instrumentation belongs in the host: wrap `handle` to observe page results and instrument the concrete service client for RPC traces. A `render` result can contain a failed section, so check `requests.ok`, or both `history.ok` and `projectStatus.ok`, before reporting success. The reference host uses native OpenTelemetry spans, a page-load counter and a duration metric; other hosts can use their own telemetry without an adapter. The reusable module has no telemetry dependency or instrumentation API.
10
10
11
11
Use the server entry's `createStovepipeWeb` to load a page and render its model with `StovepipeApp`. Mount beneath `WebNavigationProvider` when the host supplies client navigation and refresh. Without it, links and refresh use ordinary document navigation. Import `@submitqueue/web-stovepipe/styles.css`, which includes the common native styles from `@submitqueue/web-platform`.
12
12
13
13
## Routes and data
14
14
15
15
Request pages use `/<queue>/request/<request-id>` and load both the current summary and events with `GetRequestHistoryByID`. The summary is displayed above history and is not reconstructed from retained events. Queue pagination uses the backend's opaque continuations, and the latest URL carries no time window.
16
16
17
+
Project results use `GetProjectStatusByID` for that exact request, with an empty
18
+
project selection to read all recorded projects. Each page contains up to 50
19
+
projects; `?projects=<opaque-token>` carries its continuation and can be shared.
20
+
First-page navigation removes the cursor. Pages are live rather than a snapshot;
21
+
return to the first page to see newly recorded projects.
22
+
23
+
Repository breakage, per-project breakage, and recording completion are separate.
24
+
Zero breakage is green; absent results are never treated as green. Completion
25
+
describes result production, not whether all pages have been displayed. Project
26
+
and history reads fail independently, and backend diagnostics stay in host logs.
27
+
All result mapping, rendering, pagination, refresh and stale-result handling live
28
+
in this package; hosts only adapt their transport representation.
29
+
17
30
## Refresh and presentation
18
31
19
32
Refresh is manual by default, with optional ten-second polling. Failed refreshes retain successful results on the same route; changing routes clears them. Timestamps use UTC. Lifecycle labels and outcome reasons come from the backend and are displayed verbatim.
0 commit comments