01must proveConfirmed | A readable key identifies the rule from creation, uses lowercase letters and digits separated by single underscores, begins with a letter and contains no more than 63 characters, while creation refuses reserved route names and the system key prefix. ✓ member_in_good_standing✗ Member-In-Good-Standing | validation | api, service, database | test |
02must proveConfirmed | Within a workspace each rule key is unique, while separate workspaces can choose the same key. | invariant | service, database | test |
03must proveConfirmed | Rule keys are permanent, and an update that supplies a key is rejected. | invariant | api, service | test |
04must proveConfirmed | Saving retains a draft with validation problems and returns their codes and its readable summary, but errors prevent publication. | policy | service | test |
05must proveConfirmed | Each rule has one replaceable draft; supplying an outdated draft version rejects a save, while omitting the version overwrites the current draft. | lifecycle | service, database | test |
06must proveConfirmed | Creation without an expression leaves the rule without a version; supplying an expression creates its first draft version. | lifecycle | service | test |
07must proveConfirmed | Validation identifies unavailable rule references and cycles, unsupported facts, absent workspace custom fields and a primary subject whose kind conflicts with the rule. | validation | service | test |
08must proveConfirmed | Parameter declarations require ordered minimum and maximum bounds and a default compatible with the declared type, bounds and available options. | validation | service | test |
09must proveConfirmed | Rules allow at most 200 conditions and groups, depth eight, 50 children per group, 20 references and three reference levels; readable summaries stop at 4,000 characters. | validation | service | test |
10must proveConfirmed | Readable summaries use available labels for roles, choices, organizations and custom fields, retaining the underlying reference when its label cannot be resolved. | calculation | service | test |
11must proveConfirmed | Sharing a previously private rule requires authority to publish rules. | permission | api, service | test |
12must proveConfirmed | An unspecified duplication source uses the latest published expression, then the draft, or copies a bare rule; explicitly requesting an absent source is rejected, and copied expressions start as a workspace-owned first draft. | lifecycle | service | observed |
13must proveConfirmed | Character limits are 1,000 for a change note or portal message, 200 for a name and 2,000 for a description, with no more than 20 tags per rule. | validation | api, service, database | test |
14must proveConfirmed | An archived rule must be restored before another draft can be saved. | lifecycle | service | test |
15must proveConfirmed | Creation and duplication accept the readable identity or its legacy key alias, which must agree when supplied together; absence or conflict is refused, and responses expose the same value under both names. | validation | api | test |