01must proveProposed | Staff permissions separately govern custom-table reading, drafting and preview, publication and lifecycle changes, and assignment; customer users cannot reach these routes and authoring does not grant publication. | permission | api | test |
02must proveProposed | A custom-table identity cannot be reused for a second definition. | validation | service, database | test |
03must proveProposed | Draft analysis checks permitted read behaviour, identifies source access requirements and proposes output fields, returning rejected statements as analysis problems. | validation | service | test |
04must proveProposed | Custom definitions accept only supported platform placeholders and reject user-declared parameters or unknown placeholders. | validation | service | test |
05must proveProposed | Analysis, draft validation, publication and preview use the configured validation workspace; absent configuration leaves reads available but returns unavailable for those operations, and another workspace cannot be previewed. | policy | service | test |
06must proveProposed | A breaking publication waits for acknowledgment of every affected saved query and otherwise returns the changes and dependent query identities. | policy | service | test |
07must proveProposed | Assigned active publications appear in the dataset catalog; deprecated publications still resolve and disabled publications produce an explicit execution refusal. | policy | service | observed |
08must proveProposed | A custom dataset requires every permission its statement reads, marks readers without them unauthorized, and refuses execution with the missing permission identified. | permission | service | documented |
09must proveProposed | Pins reference published versions, with the most specific covering pin taking precedence; unpinned grants preserve broader pins, and clearing a pin follows another covering pin or the latest publication. | lifecycle | service | observed |
10must proveProposed | Deprecation removes a custom dataset from selection lists while preserving execution, whereas disabling it refuses execution with a reason. | lifecycle | service | test |
11must proveProposed | A published statement whose stored fingerprint no longer matches is refused without exposing statement text. | invariant | service | documented |
12must proveProposed | Custom-table history attributes lifecycle actions to their actors without retaining statement text or record values. | invariant | service | test |
13must proveProposed | An assigned custom table’s reference exposes a reverse one-to-many relationship from its referenced dataset only in workspaces covered by the assignment. | policy | service | test |
14must proveProposed | Changes to definitions, drafts and assignments must use their read versions, and stale versions are rejected. | validation | service | test |
15must proveProposed | Revalidation revisits active or deprecated publications and pinned versions, records meaningful health changes without statement text or data, limits repeated passing history to once daily, and skips without a validation workspace. | lifecycle | service | observed |
16must proveProposed | Analysis rejects statements that write or lock records, contain recursion, use forbidden schemas or functions, or fail the single permitted-read requirement. | validation | service | observed |