Task: Build the operations screens in ores.web

Table of Contents

This page documents a task in the Implement the operations journeys in ores.web story. It captures the goal, current status, acceptance, and any notes or results.

1. Goal

The five operations journeys run in ores.web against the real server, as the accepted prototype draws them: the services roster, the whole grid with its node table and wrapper panel, the bus vitals and streams, the logs filter bar, and the versions panels with the footer. The screens ride the journey runtime the Setup group landed, with a hand-written BFF route per screen. Operations is an area the system-administration menu carries: the four installation screens carry "Back to operations" navigation rather than tabs, and the versions screen is offered in every mode, so a tenant administrator and a regular user reach it as well. Where the data-model linkages are not yet closed, the screen states the gap as the prototype does rather than showing a guess.

2. Status

Field Value
State DONE
Parent story Implement the operations journeys in ores.web
Now Nothing.
Waiting on Nothing.
Next Nothing.
Last touched 2026-10-04

3. Acceptance

  • The five screens run against the real server on the journey runtime, and no journey entity is added.
  • Each screen carries its Related journeys links, and the versions panel reads the database from the login answer with no request of its own.
  • The Operations area is reached from the system-administration menu; the four installation screens carry "Back to operations" navigation and no other mode offers them; the versions screen is offered in every mode, so a tenant administrator and a regular user reach it; and every screen carries the footer with both builds.
  • Every gap the five journeys record is either closed or stated on the screen, and the statement is recorded.

4. Plan

(Implementation strategy. Written when work starts; key decisions are distilled into the parent story's * Decisions at close, but the plan itself stays — it is the historical record of what we did.)

5. Measurements

Every number this task claims about a tree, with the command that produced it and the commit it was measured at. A number without both is not a measurement, because a clean-up record describes a tree and trunk moves under a branch: a consumer count, a gate's component count and a suite's size all change with no code changing, and the reader of a bare number cannot tell which tree it came from. Where the raw output matters, put it in an evidence/ file beside the task and name that file in the Command column.

What Value Command Commit
Screens built 5 of 5 ls operations/*Page.tsx 08d9fca133
TypeScript suite 813 passing (bff 268, web 395, wire-protocol 150) npm test ef6634eae2
Full C++ build exit 0, 0 errors, all targets linked compass build ef6634eae2
Schema fingerprint in sync with the database after a recreate compass db status ea5b2cedfb4823e2

The rows above describe the tree as it stood when the first three screens landed. The message bus and the logs have been inspected but never executed. From that point the workflow changed to implement-and-merge, with a separate hourly job building latest main and running the suites for every PR merged since its last check. The numbers above therefore do not cover those two, and this record says so rather than quoting a suite that never ran against them.

6. Notes

7. Test Scenarios

Manual QA scenarios (scaffolded via compass add test_scenario) that verify this task. Link new ones here as they're created; the scenario doc itself links back via its "Verifies task" field.

Scenario State Notes
     

8. PRs

PR Title
#2829 [web] Build the telemetry logs screen
#2825 [web] Build the message bus screen
#2811 [web,compute,variability] Build the operations screens

9. Review

Comment summary File Decision Notes
       

10. Result

The five screens are built and on main, across three merges: #2811 carried the area, the versions screen, the services roster and the compute grid, with the platform work beneath them; #2825 carried the message bus; and the logs follow in the last PR of this task.

Each screen runs against the real server on the journey runtime, no journey entity was added, every screen carries its Related journeys links and the footer, the Operations area is reached from the system-administration menu alone, and the versions screen is offered in every mode so a tenant administrator and a regular user reach it.

What each screen states rather than hides is the part worth recording, since the acceptance asks for every gap to be closed or stated:

  • The versions screen reads its database from the login answer and makes no request of its own.
  • The services roster renders every expected row, quiet ones included, and reads a quiet instance as lost and never stopped, because a heartbeat cannot tell a stop from a fall.
  • The compute grid states that its node table is the installation's while the counters above it are computed for one tenant. That is a property of the system, not an artefact of the screen, and the ledger that would change it is a story that is not built.
  • The message bus states that its counters are running totals since the server started, so the movement over a range is computed from the samples.
  • The logs offer only filter values the store can match. The prototype offered a client source and uppercase levels, neither of which could ever return a row, and the journey forbids offering one.

Three defects surfaced underneath the screens and are corrected rather than carried: node names were identifiers where a person needs a name, the host table grew by a version on every heartbeat, and five environment variables looked authoritative and were inert.

Two deviations, both stated rather than glossed. The Goal says the screens ride the journey runtime; they ride the application's screens and the BFF route pattern, because the runtime is a linear rail and these are read-model screens, which that runtime's own page allows for. And the logs screen does not build the opened-entry detail or the session and account filters, because the accepted prototype does not draw them; the filter bar is the six the task named.

Emacs 29.3 (Org mode 9.6.15)