IT has arrived!

Hard limits are those of the physical machines limit switches.

Soft limits are virtual ones set up to match a slight / reasonable inset of the machine’s working area — the idea is that if a movement would go beyond such a distance it must be in error, so better to stop rather than actually crash.

How do you define the actual value of the soft limit? I assume there is a GRBL code for it, right? Is that code $27 (homing pull-off)?

it’s a dimension which matches the physical size of the distances which the machine can move, less a reasonable safety allowance.