---
id: CAP-PFM-OPS-006
title: Investigate platform jobs in Rhythm HQ
feature: FEAT-PFM-OPS-01
product_area: platform
module: operations
revision: 1
status: draft
product_intent: confirmed
implementation_evidence: partially-observed
supersedes: []
source_sha:
  services-platform: ad3f6a6582843008ed0f5a17b131878d15829af1
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
intent_sources:
  - 'services-platform:docs/hq/rhythm-hq-plan.md#D12 (approved K8, 2026-10-11)'
  - 'services-platform:docs/hq/rhythm-hq-plan.md#D1 (rule S1)'
purpose: Give Rhythm staff an operational view spanning customer boundaries under HQ authority.
outcomes:
  - Staff can investigate work across customers through the HQ boundary.
  - Missing related names do not prevent inspection of surviving job records.
concepts:
  - CON-PFM-OPS-001
actors:
  - ACT-PFM-004
  - ACT-PFM-005
surfaces:
  - console
  - api
preconditions:
  - The staff caller holds HQ jobs-read authority at platform scope.
postconditions:
  - HQ job inspection performs no job write.
permissions:
  - key: hq.jobs.read
    where_checked: api
    scope: global
rules:
  - id: BR-CAP-PFM-OPS-006-01
    proved_by: [ATS-PFM-OPS-006-01, ATS-PFM-OPS-007-08, TST-PFM-OPS-067]
    statement: >-
      HQ job routes require staff jobs-read authority and cover Platform jobs across customers; customer
      console callers cannot use those routes.
    kind: permission
    enforced_at:
      - api
    must_prove: true
    provenance: test
    source: >-
      services-platform:modules/jobs/tests/e2e/jobs.e2e.spec.js#refuses a console caller of the job’s own
      customer the HQ route as 403
    origin: 'services-platform:docs/hq/rhythm-hq-plan.md#D1 (rule S1)'
  - id: BR-CAP-PFM-OPS-006-02
    proved_by: []
    statement: >-
      HQ reads can restrict jobs to a customer or workspace and retain access to jobs naming a workspace
      already removed.
    kind: policy
    enforced_at:
      - service
    must_prove: false
    provenance: observed
    source: 'services-platform:modules/jobs/services/scope/job-read-scope.ts:resolveJobRead'
    origin: none
  - id: BR-CAP-PFM-OPS-006-03
    proved_by: [ATS-PFM-OPS-006-02, TST-PFM-OPS-075]
    statement: >-
      HQ snapshots resolve the workspace subject before the customer subject and name the requester when
      readable; missing related records retain an unnamed subject rather than preventing the job read.
    kind: calculation
    enforced_at:
      - service
    must_prove: true
    provenance: test
    source: >-
      services-platform:modules/jobs/tests/integration/services/subjects/job-subject.integration.spec.js#names
      the subject null, and still answers it, for a tenant that no longer reads
    origin: 'services-platform:docs/hq/rhythm-hq-plan.md#D12 (subject panel)'
  - id: BR-CAP-PFM-OPS-006-04
    proved_by: [ATS-PFM-OPS-005-10, ATS-PFM-OPS-006-06]
    statement: Customer snapshots omit the named subject and requester enrichment supplied on HQ snapshots.
    kind: policy
    enforced_at:
      - service
    must_prove: false
    provenance: test
    source: >-
      services-platform:modules/jobs/tests/e2e/jobs.e2e.spec.js#carries neither on the customer's own
      snapshot, which has nothing to say
    origin: none
  - id: BR-CAP-PFM-OPS-006-05
    proved_by: []
    statement: >-
      The HQ list orders jobs by recent activity, displays label, subject, status, start and requester, and
      provides status filtering and failed-job summaries.
    kind: policy
    enforced_at:
      - console
    must_prove: false
    provenance: observed
    source: 'react-console:components/console/hq/jobs-list.tsx:JobsList'
    origin: 'services-platform:docs/hq/rhythm-hq-plan.md#D12'
  - id: BR-CAP-PFM-OPS-006-06
    proved_by: [ATS-PFM-OPS-004-08, ATS-PFM-OPS-006-05]
    statement: >-
      The HQ detail page displays progress, steps, attempts, failure information and history and polls active
      jobs every five seconds.
    kind: policy
    enforced_at:
      - console
    must_prove: false
    provenance: test
    source: 'react-console:e2e/mock/hq-ops.mock.spec.ts#shows a running job''s step, its timeline and its event log'
    origin: 'services-platform:docs/hq/rhythm-hq-plan.md#D12'
  - id: BR-CAP-PFM-OPS-006-07
    proved_by: [ATS-PFM-OPS-006-03, TST-PFM-OPS-054]
    statement: 'An unstarted job is labeled Queued, and opening a missing job displays Job Not Found.'
    kind: calculation
    enforced_at:
      - console
    must_prove: true
    provenance: test
    source: 'react-console:e2e/mock/hq-ops.mock.spec.ts#calls a job that has not started Queued, never Cancelled'
    origin: none
  - id: BR-CAP-PFM-OPS-006-08
    proved_by: [ATS-PFM-OPS-006-04]
    statement: >-
      The product should supply a stalled-job warning and a refresh action; the current page depends on a
      staleness signal absent from the backend response.
    kind: policy
    enforced_at:
      - console
    must_prove: true
    provenance: unknown
    source: FND-PFM-OPS-003
    origin: none
  - id: BR-CAP-PFM-OPS-006-09
    proved_by: []
    statement: Completing the workspace provisioning wizard opens the detail page for its submitted job.
    kind: policy
    enforced_at:
      - console
    must_prove: false
    provenance: test
    source: 'react-console:e2e/mock/hq-ops.mock.spec.ts#walks every step and lands on the job it started'
    origin: 'services-platform:docs/hq/rhythm-hq-plan.md#D12'
scenarios:
  - id: SC-CAP-PFM-OPS-006-01
    given: A support operator has HQ jobs-read authority and a customer job to investigate.
    when: The operator opens the HQ job page.
    then: Readable subject and requester references appear as names.
    provenance: inferred
    source: 'services-platform:modules/jobs/tests/e2e/jobs.e2e.spec.js#names the person who asked for the job'
    note: >-
      This illustrative example combines behavior established by the cited test and the capability’s
      implementation evidence; it is not an independently bound end-to-end proof.
  - id: SC-CAP-PFM-OPS-006-02
    given: A customer administrator knows one of their job identities.
    when: The administrator requests the HQ snapshot.
    then: The staff-only route refuses the request.
    provenance: inferred
    source: >-
      services-platform:modules/jobs/tests/e2e/jobs.e2e.spec.js#refuses a console caller of the job’s own
      customer the HQ route as 403
    note: >-
      This illustrative example combines behavior established by the cited test and the capability’s
      implementation evidence; it is not an independently bound end-to-end proof.
edge_cases: []
constraints: []
depends_on:
  - CAP-PFM-OPS-001
  - CAP-PFM-OPS-007
related:
  - CAP-PFM-OPS-004
  - CAP-PFM-OPS-005
journeys:
  - JNY-PFM-OPS-002
open_questions: []
evidence:
  - >-
    services-platform at ad3f6a6: modules/jobs/aws/api/jobs.routes.ts (the /hq/jobs declarations),
    services/subjects/job-subject.ts, services/scope/job-read-scope.ts; jobs e2e and job-subject integration
    suites; aws/platform.service.ts HQ_JOBS_PERMISSIONS; docs/hq/rhythm-hq-plan.md §D12.
  - >-
    react-console at baf6dae: app/(console)/hq/jobs/page.tsx, app/(console)/hq/jobs/[kind]/[id]/page.tsx,
    components/console/hq/jobs-list.tsx, recent-jobs-card.tsx, job/*, lib/hq/job-snapshot.ts,
    lib/hq/use-hq-ops.ts; e2e/mock/hq-ops.mock.spec.ts (job page), e2e/dev/hq-ops.dev.spec.ts.
  - >-
    Operations this capability covers: listJobsInHq, countJobsInHq, listJobKindsInHq, getJobInHq,
    listJobEventsInHq.
  - >-
    Examination: proposed acceptance matrices retain candidate test references; incomplete proof is recorded
    by FND-PFM-OPS-028.
controls: [TC-AVL-001, TC-AVL-004, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-AZ-005, TC-IAM-001, TC-IAM-003, TC-IAM-006, TC-LOG-001, TC-LOG-002, TC-LOG-003, TC-LOG-004, TC-LOG-005, TC-MON-001, TC-PI-001, TC-PI-002, TC-PI-003, TC-PI-004, TC-PI-005, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-VEN-001, TC-VEN-002, TC-VEN-003]
exercised_by: [FAS-PFM-OPS-01-03, FAS-PFM-OPS-01-04]
suites: [TST-PFM-OPS-054, TST-PFM-OPS-067, TST-PFM-OPS-075]
---

# Investigate platform jobs in Rhythm HQ

## Purpose

Give Rhythm staff an operational view spanning customer boundaries under HQ authority.

## How It Works

Rhythm staff open Jobs in HQ to investigate work across customers. They can select a row and read the durable snapshot on a dedicated job page. The page resolves subject and requester names when the referenced records still exist. A missing name does not erase or block the job record. The page presents current progress, step attempts, errors and event history and refreshes active work. Failed workspace provisioning offers its specific retry action to eligible staff. Other job kinds remain readable without receiving generic management buttons. The intended stalled warning currently lacks the backend signal needed to appear.

## Relationships

The job record supports reconciliation, notices and both monitors; owning modules retain responsibility for the work itself.
