Story: Compute grid polish and E2E fixes
Table of Contents
This page documents a story in Sprint 15. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
Goal
Round of compute-grid polish based on real-data testing, plus the loading-lifecycle refactor that the missing endLoading() calls forced into the broader codebase.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 15 |
| Now | Completed 2026-03-26. |
| Waiting on | None. |
| Next | None. |
| Last touched | 2026-03-26 |
Acceptance
- AbstractClientModel + standard dataLoaded()/loadError() signals wired through EntityListMdiWindow.
- Change-reason prompting centralised; applies_to_new on change reason domain.
- Compute RLS + UUID generation + ReflectCPP workaround.
- app_version multi-platform via junction table; combo boxes replace UUID text fields.
- Service dashboard offline threshold, version display, status-services.sh.
- Wrapper heartbeat, ores.platform::datetime, result_handler::submit fix.
- Outcome code mapping, host_id persistence, file-extension preservation in URIs.
- AppVersion double-slash + SIGSEGV fixes.
- Result UI pill badges; MainWindow geometry persistence; wrapper RAII + terminate guard.
Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| E2E compute testing fixes and loading lifecycle refactor | DONE | 2026-05-20 | 2026-03-22 | AbstractClientModel base class with dataLoaded() + loadError() signals wired to endLoading() via EntityListMdiWindow::connectModel(); applies_to_new on change reason domain + SQL; centralised change-reason prompting in DetailDialogBase; compute RLS for app + app_versions as system-owned global registries; UUID generation in ORE app seed; ReflectCPP consteval workaround; app_version multi-platform via ores_compute_app_version_platforms_tbl junction; AppVersionDetailDialog + WorkunitDetailDialog combo boxes. |
| End-to-end fixes for grid work | DONE | 2026-05-20 | 2026-03-26 | Service dashboard offline threshold raised to 120s; ORES_VERSION macro for accurate version display; status-services.sh node vs service counts; idle heartbeat sender in wrapper for online hosts; ores.platform::datetime for cross-platform timestamps; result_handler::submit uses service context for unauthenticated wrapper requests; outcome code mapping fix; host_id persisted to result; file extension preservation in artifact URIs (.tar.gz, .csv, .xml); double-slash URL fix in AppVersionDetailDialog; SIGSEGV fix; pill badges on Result UI; main window geometry persistence; RAII thread cleanup + terminate() guard in wrapper. |
Decisions
- AbstractClientModel base in the polish task
- surfaced through the compute-grid loading bug but applies broadly; cascades into the loading-indicator story.
- multi-platform app_version via junction
- the previous single-string platform field couldn't represent works on Linux + macOS.
Out of scope
- Re-test of the full compute grid under load (future).
See also
- Compute grid implementation — the foundational PR.
- Loading indicator on entity list windows — consumes the AbstractClientModel pattern from this story.