The constraint policy model is documented, but the enforcement layer added alongside it is not. The docs describe the policy plugin type, the Policies tab and the shipped policies, yet say nothing about where and when the policies are enforced, the operator override, or how the customer message is set and translated. This is the part operators most need to understand.
Proposed resolution
Extend docs/constraints.md with two sections.
- Enforcement and overrides: the surfaces that check the policies (the opt-in webform submit gate, the operator validation task, the operator order-list confirm, and the automated workflow confirm which releases and notifies on a race), the single choke point (OrderConstraintManager::validate via confirmOrder and validateOrder), and the persistent skip_constraints override that a "Validate anyway" or "Confirm anyway" tick sets and every check honors.
- The customer message: the plain-language plural-aware default translated through the module .po, and the optional per-policy custom message with @limit and @group placeholders, which on a resource type is configuration translated through the Config Translation UI (the settings are schema-typed, message as label) exactly like the resource type label.
Documentation only, no code change.
Comments
Comment #3
mably commentedComment #5
mably commentedComment #7
mably commentedRebased MR !15 onto the current 1.x and refreshed docs/constraints.md to match the enforcement code as it stands now, which has moved on since this was filed.
In particular there is no longer a "Validate anyway" option or a separate operator validation task, so the refreshed documentation describes the actual flow:
Documentation-only change, CI green.