One recurring job an app declares in its own manifest, so the host can put
the cron row on the node without the app ever having run (econ-v1/node#3185).
Capability, query, and stream contracts exposed to an app-delivered UI
stage. This is intentionally separate from the app’s backend dependency
declaration (requires / capabilities.requires): backend providers may
need capabilities that must never be delegated to browser UI code.
Runtime resource requests (Contract C2). memory_mb becomes the Burger
host’s per-app QuickJS memory limit (load_app.memory_limit_mb);
callback_deadline_ms becomes its per-callback CPU watchdog
(load_app.callback_deadline_ms). Both are omitted from load_app when
absent so the Burger host applies its own defaults (32 MB, 5000 ms).
TCP port preferences for standalone apps that bind their own port.
Consumed by the port registry (system/server/src/services/port_registry/)
at install time.
Declared responsiveness expectation for an app’s lease engine decisions
(app lease engine design §8, Task 1). None on GovernorManifest means
the app has not declared a preference — the lease engine (Task 5) then
falls back to its own default rather than treating an unset field as
either variant.
The chat-assistant surface slot: at most one app surface may claim it, and declaring it
requires the host to support the assistant slot (HostFeature::UiAssistantSlot).
Contracts F5: whether a raw manifest is UI-only — a ui object with
neither app_type nor entrypoint, or an explicit "app_type": "ui-only". Read off the raw JSON, because serde’s app_type default
(native) hides whether the key was there. The one definition shared by
AppManifest::from_json, node-app audit and node-app package.
Runs on raw JSON before full parsing, so a manifest using constructs this
host cannot even deserialize is still reported as “too new”, not “broken”.
A missing or malformed stamp is left for full parsing to report.
Contracts F5: the first thing manifest declares that implies a backend
process, which a UI-only app cannot have. A UI-only app is never started,
so it can neither receive events nor wait on dependencies. Shared by
AppManifest::validate and node-app audit.
A stage’s projections are stored under ui.data.namespace, and the
Client Node PWA only accepts a namespace the app owns
(validateEntryCompatibility,
client/kernel/src/stages/offline-readiness-coordinator.js): any other
stage fails there as schema-incompatible and never reaches the nav. The
client also admits <app>.-prefixed namespaces, but a namespace cannot
contain a dot ([validate_app_data_namespace]), so here the rule is plain
equality. node-app-burger 0.2.0 shipped burger for burger-runtime.