Skip to content

CAP-PFM-QRY-008Begin a question from an application recipe

Markdown

CAP-PFM-QRY-008

Begin a question from an application recipe

Markdown
  • DocumentDraft
  • Product intentConfirmed
  • 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
Staff begin with application-maintained questions.Recipe registration checks released starting points.Saved drafts remain independent of later recipes.
Surfaces
consoleapijob
Intent sources
services-platform:docs/queries/saved-queries-and-recipes.md#2026-10-11 — Final acceptance (after the requested change)

Controls

24 controls apply, from the corpus control catalogue.

TC-AVL-001 TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-CHG-001 TC-CHG-002 TC-CHG-003 TC-CHG-004 TC-CHG-005 TC-CHG-006 TC-DAT-004 TC-LOG-005 TC-MON-001 TC-PI-001 TC-PI-003 TC-PI-005 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.queries.readapitenant
<application>.<dataset>.query (the owner's key)servicetenant

Business Rules

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

IdRuleKindEnforced atProvenance
01must prove
Confirmed
The recipe catalog orders active recipes by category and name, includes parameters and authorization flags, excludes retired recipes, and allows catalog reads without dataset permissions.
origin: services-platform:docs/queries/saved-queries-and-recipes.md#2026-10-11 — Final acceptance (after the requested change)
policyservicetest
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#marks a recipe of a dataset this caller may query as authorized, and one it may not as not
02must prove
Confirmed
Creating or running a recipe draft requires access to its base dataset and every joined dataset.
origin: services-platform:docs/queries/saved-queries-and-recipes.md#2026-10-11 — Final acceptance (after the requested change)
permissionservicetest
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#refuses a draft of a dataset this caller may not query as 403
03must prove
Confirmed
Recipe drafting checks existence and retirement before dataset access, then reports all unsatisfied values with labels before checking the completed query.
validationservicetest
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#refuses a missing required parameter as 400, naming it and the label its form shows
04must prove
Confirmed
A recipe draft becomes an independent concrete query whose saved origin records the recipe version, and later recipe releases do not change it.
origin: services-platform:docs/queries/saved-queries-and-recipes.md#2026-10-11 — Final acceptance (after the requested change)
invariantservicetest
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#leaves the saved query untouched when the recipe is registered again at version 2
05must prove
Confirmed
Saved recipe provenance must name a recipe registered at least once, while a subsequently retired recipe remains a valid origin.
validationservicetest
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#refuses a save naming a recipe nobody ever registered as 400
06must prove
Confirmed
Recipe execution immediately runs the drafted query as the person, using the same narrowing refinement rules as saved queries.
policyservicetest
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#keeps the recipe’s own criteria under a refinement, so a run never widens it
07must prove
Confirmed
Recipe registration validates the whole release before writing, requires live datasets owned by that application, and rejects fields specific to a workspace’s custom or configured metadata.
origin: services-platform:docs/queries/saved-queries-and-recipes.md#2026-10-11 — Final acceptance (after the requested change)
validationservicetest
services-platform:modules/queries/tests/integration/services/recipe-registration/register-query-recipes.integration.spec.js#refuses a recipe naming the field a tenant’s configuration row defines, saying only that tenant has it
08must prove
Confirmed
A recipe content change requires a changed version.
origin: services-platform:docs/queries/saved-queries-and-recipes.md#2026-10-11 — Final acceptance (after the requested change)
validationservicetest
09must prove
Confirmed
Registration retires recipes omitted from a release, restores reintroduced recipes and avoids writes for unchanged declarations.
lifecycleservicetest
10
Confirmed
Custom-object activation creates recipes whose availability follows that object independently in each workspace.
origin: services-platform:docs/queries/semantic-query-layer.md#Decisions Recorded (Andrew, 2026-10-08) 18
policyservicedocumented
services-platform:docs/queries/saved-queries-and-recipes.md#3.3a Custom object recipes [Built, 2026-10-18]
11must prove
Confirmed
A recipe’s current-person value is valid only on a user-bearing field and is rejected elsewhere during registration.
validationservicetest
services-platform:modules/queries/tests/integration/services/execute/current-user-criterion.integration.spec.js#refuses at registration the same recipe written on a field that holds no user, naming the field

Scenarios

IdGivenWhenThenProvenance
01A recipe declares a recent-date input.The person supplies a value different from its default.The resulting draft uses the supplied value.test
services-platform:modules/queries/tests/e2e/query-recipes.e2e.spec.js#substitutes the values the caller sends in place of the defaults

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.