| 1 | kind must be exactly vibe.app/v1 |
| 2 | id must match ^[a-zA-Z][a-zA-Z0-9]*(\.[a-zA-Z][a-zA-Z0-9]*)+$ |
| 3 | version must be valid semver |
| 4 | All relative paths must not contain .. (path traversal rejected) |
| 5 | Service names must be unique within the manifest |
| 6 | Volume names referenced in stateVolumes or mounts must have a corresponding entry in state.volumes |
| 7 | dependsOn references must point to service names defined in the same manifest |
| 8 | Container ports must be in range 1–65535 |
| 9 | When mode: compose, the services array is ignored (services come from the Compose file) |
| 10 | When mode: native, composeFile is ignored |