A block template defines the starting structure, and the lock setting decides whether an editor can change it — which is a product decision presented as a configuration value.
register_post_type( 'case_study', array(
'template' => array(
array( 'core/heading', array( 'level' => 2, 'placeholder' => 'The problem' ) ),
array( 'core/paragraph', array() ),
),
'template_lock' => 'insert',
) );
// 'all' — no adding, no removing, no reordering
// 'insert' — reorder yes, add or remove no
// false — a starting point only
all is more restrictive than most editors will tolerate for long, and the request to unlock it arrives within a fortnight. insert is the useful middle: the structure is fixed and the order is not. Templates apply to new posts only and there is no way to apply one retroactively, which is the limitation that makes this a starting point rather than a layout system.