Guardrails 1.4.0
Hard constraints run after validation and before the sole semantic DOM writer.
Minimum guardrails
| Guardrail | Effect |
|---|---|
| Contrast | Only aa / aaa; respect configured floor |
| Reduced motion | Blocks motion-like intent types |
| Target and value allowlists | Reject unknown scope, roles, enums, and attributes |
| Section graph | Only registry-compatible sibling order |
| Injection defense | Reject dangerous types and payload keys |
| Reversibility | Store inverse attribute patches for undo |
Fail closed
A guardrail failure emits velin-adapt-error, appends a semantic rejection record, and performs no partial apply.
AI remains subordinate
Ranked candidate IDs return to the same validator and guardrails. Ranking confidence is never mutation permission.
No bypass consumers
Inspector Core delegates to applyIntent; Blocks only describe adaptContract. Neither calls apply internals.