Blame
|
1 | # Runtime and Reloads |
||||||
| 2 | ||||||||
| 3 | ||||||||
| 4 | > **Documentation baseline:** VoxelCore `main` at `452b569` ยท 14 September 2026. |
|||||||
| 5 | > **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore) |
|||||||
| 6 | ||||||||
| 7 | ||||||||
| 8 | Reload is transactional at the content-snapshot level. VoxelCore does not clear the live registry and then hope replacement content succeeds. |
|||||||
| 9 | ||||||||
| 10 | ## Startup |
|||||||
| 11 | ||||||||
| 12 | Startup performs, in order: |
|||||||
| 13 | ||||||||
| 14 | 1. configuration generation/migration; |
|||||||
| 15 | 2. platform adapter selection; |
|||||||
| 16 | 3. content-directory creation and deterministic load; |
|||||||
| 17 | 4. inheritance compilation; |
|||||||
| 18 | 5. render-allocation load/reconciliation; |
|||||||
| 19 | 6. validation of every compiled definition through the selected platform item adapter; |
|||||||
| 20 | 7. persistence of validated allocations; |
|||||||
| 21 | 8. publication of content revision `1`; |
|||||||
| 22 | 9. `ItemManager`/`PackManager` construction; |
|||||||
| 23 | 10. command registration; |
|||||||
| 24 | 11. `VOXELCORE_READY` logging. |
|||||||
| 25 | ||||||||
| 26 | A load or platform-validation failure disables the plugin before publishing a usable runtime. |
|||||||
| 27 | ||||||||
| 28 | ## Reload |
|||||||
| 29 | ||||||||
| 30 | ```mermaid |
|||||||
| 31 | flowchart TD |
|||||||
| 32 | A[Active revision N] --> B[Load candidate files] |
|||||||
| 33 | B --> C[Compile candidate registry] |
|||||||
| 34 | C --> D[Reconcile candidate allocations] |
|||||||
| 35 | D --> E[Platform preflight] |
|||||||
| 36 | E -->|success| F[Persist allocation state] |
|||||||
| 37 | F --> G[Atomically publish revision N+1] |
|||||||
| 38 | B -->|failure| H[Discard candidate] |
|||||||
| 39 | C -->|failure| H |
|||||||
| 40 | D -->|failure| H |
|||||||
| 41 | E -->|failure| H |
|||||||
| 42 | H --> I[Revision N remains active] |
|||||||
| 43 | ``` |
|||||||
| 44 | ||||||||
| 45 | `ContentRuntime` publishes immutable `ContentSnapshot` objects. `ItemManager` resolves through the active runtime, so existing manager references observe the new snapshot after successful publication. |
|||||||
| 46 | ||||||||
| 47 | ## Allocation persistence |
|||||||
| 48 | ||||||||
| 49 | `render-allocations.yml` is persisted only after candidate definitions are validated for the active platform. Tombstones preserve removed numeric allocations and structured keys remain reserved, avoiding silent re-use. |
|||||||
| 50 | ||||||||
| 51 | Do not casually delete `render-allocations.yml` on a live content set; doing so discards allocation history and can change rendering identifiers. |
|||||||