Package Guideline
Compukters product code uses the root package ru.lazyhat.compukters. New code must follow the current Kotlin-artifact architecture instead of recreating any removed VM, terminal, retained-display, or generic device layer.
Module ownership
compiler-artifactowns the canonical artifact model, validation, and encoding.compiler-clientowns bounded communication with the isolated compiler worker.compiler-k2owns Kotlin frontend/IR integration and artifact lowering.native-runtimeowns the Kotlin-facing JDK 25 FFM VM session and trusted host capabilities.coreowns loader-independent server product behavior, includingProgramRuntimeHostand future computer carriers.playgroundowns the standalone compiler-and-VM executable used outside Minecraft.v26_1-commonowns loader-independent Minecraft 26.1 adapters.v26_1-neoforgeowns NeoForge 26.1 bootstrap, registration, resources, and loader-specific adapters.host/compukter-vmowns verification, interpretation, memory management, quotas, VM execution, and the versioned C ABI in itsffiworkspace member.
Placement rules
- Put VM semantics in
host/compukter-vm; Kotlin modules must not implement a second interpreter or machine state model. - Put server-thread lifecycle and device policy in
core; do not expose Minecraft types there. - Put Minecraft-neutral adapters in
v26_1-commonand NeoForge registration/wiring inv26_1-neoforge. - Define network protocols next to the feature which owns them. Do not restore the removed global CC-style network package.
- Introduce UI, terminal rendering, and assets from a new accepted design. Do not restore the removed UI DSL, retained display, palette, font, or workbench implementation.
- Prefer focused feature packages such as
device/runtime/programand the futuredevice/computerover genericutils,platform, oreventsdumping grounds.
Product boundary
The current executable path is:
Kotlin source
-> isolated K2 worker
-> canonical Compukter artifact
-> Kotlin VM session / ProgramRuntimeHost
-> JDK 25 FFM / versioned Rust C ABI
-> Rust VM
New packages should make this path clearer or add a deliberate host capability. Any competing execution path requires a new architecture decision first.