outputUtils.formatMsg: fall back to \`<softwareType>_<id>\` when
config.general.name is unset — restores the convention the original
test expected; safer for nodes whose name isn't required at registration.
collectionValidators.validateArray + validateSet: replace \`|| 1\` with
\`?? 1\` so explicit minLength: 0 lets through empty arrays. Was
swallowing the 0 as falsy and clamping minimum to 1.
validationUtils: add public validateCurve wrapper around the helper so
callers can validate raw curves without going through validateSchema.
Test suite: 170 total / 170 pass (was 4 fail).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>