Minimal manifest
luastra.json · schema v2schemaVersion: 2
check enforces this explicit contract.
When to use it
Read this page when you need to apply Minimal manifest, verify its exact contract, and adapt the example without bypassing validation or host boundaries.
- project.id is a lowercase dotted identity, for example dev.example.notes. Hosts use it to namespace project data; keep it stable. project.entry is a declared module ID, not a file path.
- modules contains 1–256 unique entries. Each needs id, source and dependencies (an empty array is allowed). source is a relative .luau path within the project; parent traversal and duplicate sources are rejected.
- The luastra/ module namespace belongs to the SDK. List every direct require in the importing module’s dependencies, using its logical ID. Do not declare SDK files as project modules. Missing dependencies, self-dependencies and cycles are invalid.
- Production builds follow dependencies from the selected entry. Merely declaring a module does not add it to the application bundle.
Focused example
{
"schemaVersion": 2,
"project": {
"id": "dev.luastra.example",
"entry": "app/main"
},
"sdk": { "contract": 1 },
"capabilities": ["ui.render"],
"modules": [
{
"id": "app/main",
"source": "src/main.luau",
"dependencies": ["luastra/ui"]
}
]
}