Skip to content

CAP-PFM-OPS-005Inspect background runs within customer reach

Markdown

CAP-PFM-OPS-005

Inspect background runs within customer reach

Markdown
  • DocumentDraft
  • Product intentConfirmed
  • ImplementationObserved

KindCapabilityProduct areaPlatformModuleOperational RecordsRevision1

Read atservices-platform ad3f6a65react-console baf6dae3

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

Outcomes
The administrator can inspect runs within the permitted workspace and customer scope.Job inspection leaves execution and persisted job state unchanged.
Surfaces
consoleapi
Preconditions
The caller holds workspace jobs-read authority, including the console’s equivalent Scheduled Jobs key.
Postconditions
Job reads leave stored job records unchanged.
Constraints
Workspace-scoped reads use that workspace context so published subjects can resolve its records.
Intent sources
services-platform:docs/jobs.md#A tenant's job runs (2026-10-16) (Andrew, 2026-10-16)react-console:components/console/nav-config.ts:maintenanceArea (Andrew, 2026-10-16: Maintenance holds only Scheduled Jobs)

Controls

29 controls apply, from the corpus control catalogue.

TC-AVL-001 TC-AVL-004 TC-AVL-005 TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-IAM-001 TC-IAM-002 TC-IAM-004 TC-IAM-005 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

Permissions

KeyChecked atScope
platform.jobs.readapitenant
maintenance.scheduled-jobs.viewconsoletenant

Business Rules

10 rules, 8 to be proved before approval. A rule's product intent is derived from its origin: 10 confirmed by a product decision, the rest inheriting this capability's confirmed.

IdRuleKindEnforced atProvenance
01must prove
Confirmed
Customer job reads require the customer jobs read permission, HQ reads require staff jobs read authority, and every job route performs a read.
permissionapitest
services-platform:modules/jobs/tests/e2e/jobs.e2e.spec.js#declares the customer monitor and the tenant runs console, with platform.jobs.read
02must prove
Confirmed
The customer monitor restricts jobs to the caller’s customer and workspace reach, returning an inaccessible customer’s job as not found.
permissionapi, servicetest
services-platform:modules/jobs/tests/e2e/jobs.e2e.spec.js#says of another customer's job exactly what it says of an unknown one
03must prove
Confirmed
The workspace monitor includes all services’ jobs for that workspace, including customer-less snapshot runs excluded from the customer-wide monitor.
origin: services-platform:docs/jobs.md#A tenant's job runs (2026-10-16)
policyservicetest
services-platform:modules/jobs/tests/e2e/jobs-tenant-runs.e2e.spec.js#answers exactly the tenant's jobs, of every macroservice
04must prove
Confirmed
An unreached workspace is refused, and staff entry through a workspace grant permits that workspace’s runs without granting access to the customer-wide monitor.
permissionapitest
services-platform:modules/jobs/tests/e2e/jobs-tenant-runs.e2e.spec.js#is refused a tenant of the same customer the grant does not name
05must prove
Confirmed
Portal callers are refused job reads as a context mismatch, and unauthenticated callers cannot read jobs.
permissionapitest
services-platform:modules/jobs/tests/e2e/jobs-tenant-runs.e2e.spec.js#refuses a portal caller as a context mismatch
06must prove
Confirmed
Job lists continue from a timestamp-and-identity cursor and reject malformed cursors, invalid statuses and malformed kinds; unknown correctly shaped kinds return an empty result.
validationapitest
07
Confirmed
The kind list reports labels and owning applications for kinds present in scope, and the console requests run counts separately.
calculationservice, consoleobserved
08must prove
Confirmed
Job snapshots expose summaries, steps, attempts, published definitions and events while omitting execution handles and row versions; event reads can resume after a sequence.
policyapitest
services-platform:modules/jobs/tests/e2e/jobs.e2e.spec.js#never puts the execution handle or the row version on the wire
09must prove
Confirmed
Maintenance contains Scheduled Jobs alone, and missing jobs-read authority suppresses its link and shows Access Denied.
origin: react-console:components/console/nav-config.ts:maintenanceArea (Andrew, 2026-10-16)
permissionconsoletest
react-console:e2e/mock/maintenance-job-runs.mock.spec.ts#is the console's Access Denied state, and its link is not offered
10
Confirmed
Scheduled Jobs presents run type, application, subject, status, timing and requester, labels automatic runs Scheduled, and opens a read-only panel that refreshes active work.
origin: services-platform:docs/jobs.md#A tenant's job runs (2026-10-16)
policyconsoletest
react-console:e2e/mock/maintenance-job-runs.mock.spec.ts#lists the tenant's runs: what each was about, its status, and who started it

Scenarios

IdGivenWhenThenProvenance
01A workspace has snapshot, merge and rebuild runs alongside jobs from another workspace.The administrator requests that workspace’s Scheduled Jobs.The workspace’s runs are returned and the snapshot subject includes its month.inferred
services-platform:modules/jobs/tests/e2e/jobs-tenant-runs.e2e.spec.js#names Platform's snapshot run by its snapshot and month
02A customer user supplies the identity of another customer’s job.The user opens that job through the customer monitor.The response treats it as an unknown job.inferred
services-platform:modules/jobs/tests/e2e/jobs.e2e.spec.js#says of another customer's job exactly what it says of an unknown one

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.