loadFromDirectory() was missing the tenantId field auto-add logic that
loadFromFile() already had, causing "Unknown field: tenantId" on all
entities using the shorthand `"tenantId": true` convention.
Also corrected ComponentNode schema to match the C++ struct fields
(pageId, parentId, childIds, order) instead of the wrong Redux shape.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The DBAL sync client referenced these 4 entities but no JSON schema files
existed, causing 422 Unprocessable Entity on CodeForge page load.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>