Skip to content

CAP-PFM-QRY-009Organize reusable views of record lists

Markdown

CAP-PFM-QRY-009

Organize reusable views of record lists

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationObserved

KindCapabilityProduct areaPlatformModuleQuestions, record exploration and data deliveryRevision1

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
Useful list arrangements can be recalled.Recipe anchors preserve record grain.Stale definitions remain available for repair.
Surfaces
consoleapi
Intent sources
services-platform:docs/explorer.md#2. Who may see and change a view (Andrew, 2026-10-11)

Controls

22 controls apply, from the corpus control catalogue.

TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-DAT-001 TC-DAT-003 TC-DAT-004 TC-LOG-004 TC-LOG-005 TC-PI-001 TC-PI-003 TC-PI-005 TC-PRV-001 TC-PRV-002 TC-PRV-004 TC-TEN-001 TC-TEN-002 TC-TEN-003 TC-TEN-004 TC-VEN-001 TC-VEN-002 TC-VEN-003

Permissions

KeyChecked atScope
platform.explorer-views.useapitenant
platform.explorer-views.shareservicerecord
platform.explorer-views.manageservicerecord
<application>.<dataset>.query (the owner's key)servicetenant

Business Rules

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

IdRuleKindEnforced atProvenance
01must prove
Proposed
A saved view requires a live recipe and its dataset, rejecting missing or retired recipes and a dataset that differs from its anchor.
validationservicetest
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses a body whose dataset is not the recipe’s as 400
02must prove
Proposed
Explorer rejects a recipe join that repeats base records and identifies the incompatible join.
validationservicetest
03must prove
Proposed
Every view save validates its definition against the reader’s resolved recipe model and locates unsupported fields.
validationservicetest
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses a definition naming a field the dataset has not got as 400
04must prove
Proposed
Reading a view returns model problems for repair rather than rejecting the definition, and an absent recipe produces a recipe-missing problem.
policyservicetest
services-platform:modules/explorer/tests/integration/services/definitions/recipe-anchors.integration.spec.js#answers recipe_missing for a recipe that has gone, rather than an error
05must prove
Proposed
Private views remain owner-only and appear missing to others, while workspace-shared views are readable to users with dataset access.
permissionservicetest
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#answers 404, not 403, for another person’s private view
06must prove
Proposed
View sharing requires share permission, maintaining another owner’s shared view requires manage permission, and ownership and dataset cannot change.
origin: services-platform:docs/explorer.md#2. Who may see and change a view (Andrew, 2026-10-11)
permissionservicetest
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses sharing a view without the share permission as 403
07must prove
Proposed
Explorer operations require access to the base and joined datasets of the anchored recipe.
permissionservicetest
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses a joined recipe to a caller who may not query a dataset it joins to, as 403
08must prove
Proposed
Views accept names of one to 120 characters, one to fifty columns, one to five sort keys and page sizes of ten, twenty-five, fifty or one hundred, store no current position, and are capped at two hundred per dataset and workspace.
validationservicedocumented
09must prove
Proposed
Team-based view sharing remains reserved and is rejected.
origin: services-platform:docs/explorer.md#1. A saved view (Andrew, 2026-10-10)
validationapitest
10must prove
Proposed
Replacement and patch operations require the read version, refusing missing versions or stale saves without changing the view.
validationservicetest
services-platform:modules/explorer/tests/e2e/explorer-views-api.e2e.spec.js#refuses a replacement that states no version as 400 MissingVersion, never as a server fault
11must prove
Proposed
Personal Explorer preferences replace up to twenty pinned views and an opening view against a read version, starting at zero, and retain references without checking whether those views still exist.
policyservicetest
services-platform:modules/explorer/tests/e2e/explorer-preferences-api.e2e.spec.js#refuses a later save that states no version as 409, so nothing is overwritten unread

Scenarios

IdGivenWhenThenProvenance
01A saved view includes a custom field that is subsequently archived.Its owner reads the view.The view remains available with a repair problem for the retired field.documented
services-platform:docs/explorer.md#What a definition is judged against, and how a view can go stale

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.