JARVIG API doctrine
ADR: ADR-0022 and ADR-0023. They fill in ADR-0017 and ADR-0018. They do not replace them. native/jarvig_core/include/jarvig_core.h is a bootstrap slice, not the SDK.
This is the contract for every external consumer. It is not a pile of functions. The SDK is not implemented here. native/jarvig_core/include/jarvig_core.h remains a bootstrap clock and runtime. Do not copy its integer error style into the next public surface.
JARVIG ENGINE
|
INTERNAL RUST ENGINE APIs
unstable / high-performance
|
+---------------+----------------+
| | |
v v v
PUBLIC ENGINE API TOOL API EXTENSION API
| | |
stable C ABI Commands Plugin ABI
| | |
+------+------+ | +-----+-----+
| | | v | |
v v v Editor v v
C++ Rust Future CLI Plugins Game module
SDK SDK bindings
Above that, one type description:
TYPE REGISTRY
|
+---------------+---------------+
| | |
Inspector Serialization Scripting
| | |
+---------------+---------------+
|
SAME ENGINE TYPES
| Layer | Page |
|---|---|
| How the layers relate | layers.md |
| Stable C ABI | c-abi.md |
| C++ wrapper | cpp-sdk.md |
| Handles | handles.md |
| Errors | errors.md |
| Memory, strings, arrays | memory.md |
| Threads and async | threading.md |
| Versions | versioning.md |
| One type registry | reflection.md |
| Commands versus runtime | commands.md |
| Plugins | plugins.md |
| Game module | game-module.md |
| Scripting, language not chosen | scripting.md |
| Automation, wire not chosen | automation.md |
Review this doctrine before scene submission, materials, assets, world mutation, plugins, or gameplay grow a public surface. Internal renderer and RHI work stays in-process Rust.