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

Emacs 29.1 (Org mode 9.6.6)