Risk (runtime confirmation) and Safety (schema metadata) are two independent enums composed at embed time: explicit SafetyDecl fields > CommandSpec.Safety tier > Risk.SafetyDefault(). The tier fill now also covers idempotency, so an enum-only declaration is self-sufficient and validateSchemaDecl no longer needs safety completeness checks. devapp reclassifies its write leaves by reversibility: reversible mutations declare LeafSafetyWrite (risk high->medium), create/robot submit/version create declare LeafSafetyHighWrite, and delete/version publish declare LeafSafetyDestructive (publish effect write->destructive). Shared hand-written safety constants are deleted. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Cursor <cursoragent@cursor.com>