01must proveConfirmed | 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. | policy | service | test |
02must proveConfirmed | Creating or running a recipe draft requires access to its base dataset and every joined dataset. | permission | service | test |
03must proveConfirmed | Recipe drafting checks existence and retirement before dataset access, then reports all unsatisfied values with labels before checking the completed query. | validation | service | test |
04must proveConfirmed | A recipe draft becomes an independent concrete query whose saved origin records the recipe version, and later recipe releases do not change it. | invariant | service | test |
05must proveConfirmed | Saved recipe provenance must name a recipe registered at least once, while a subsequently retired recipe remains a valid origin. | validation | service | test |
06must proveConfirmed | Recipe execution immediately runs the drafted query as the person, using the same narrowing refinement rules as saved queries. | policy | service | test |
07must proveConfirmed | 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. | validation | service | test |
08must proveConfirmed | A recipe content change requires a changed version. | validation | service | test |
09must proveConfirmed | Registration retires recipes omitted from a release, restores reintroduced recipes and avoids writes for unchanged declarations. | lifecycle | service | test |
10Confirmed | Custom-object activation creates recipes whose availability follows that object independently in each workspace. | policy | service | documented |
11must proveConfirmed | A recipe’s current-person value is valid only on a user-bearing field and is rejected elsewhere during registration. | validation | service | test |