Crates
A Cargo workspace. Cargo.toml is the authoritative list;
this says what each crate is for, which is the part a reader
needs and the part that does not go stale.
This was the README's "Workspace layout" section. It is reference for somebody already working in the tree rather than something a person arriving needs before anything else.
The crates at the head of it are a dependency spine - each is required by everything after it, which is also the order they get built in.
| Crate | Role |
|---|---|
| orbistoun-core | Domain types - guest error codes, handles, ABI primitives. IO-free. |
| orbistoun-env | Every environment variable orbistoun reads, declared once. |
| orbistoun-elf | Vendor ELF/PRX container parsing. No unsafe -
zerocopy throughout. |
| orbistoun-nid | NID hashing and symbol-name resolution. |
| orbistoun-mem | Guest address space - fixed-address reservation, direct/flexible memory. |
| orbistoun-hle | Module registry, the guest_module! macro, stub
policy. |
| orbistoun-loader | Parse → reserve → resolve → relocate → TLS → entry. |
Execution and the guest OS
| Crate | Role |
|---|---|
| orbistoun-abi | The guest-to-host call boundary, proved end to end. |
| orbistoun-thunk | Per-import thunks: the machine code a guest lands on, and the dispatch behind it. |
| orbistoun-kernel | Guest kernel - memory syscalls, threads, synchronisation. |
| orbistoun-firmware | A skeleton of the console's firmware address space, for guests that reach past the named interface into raw memory. |
| orbistoun-libc | The C library as the guest calls it. The largest implemented surface. |
| orbistoun-posix | The POSIX-named half of the platform, delegated to what already implements it. |
| orbistoun-fs | Guest filesystem - file IO and async streaming. |
| orbistoun-shell | The system software: session lifecycle, guest-visible events, and console settings. |
| orbistoun-systemservice | The settings and status a title asks the system about. |
| orbistoun-video | Video output - swapchain and flips. |
| orbistoun-audio | Audio output. |
| orbistoun-net | Networking HLE: declarations for the libraries a title imports. |
| orbistoun-input | Controller input. |
Graphics
| Crate | Role |
|---|---|
| orbistoun-gpu | Command-stream translation. No dependency on any host graphics API. |
| orbistoun-gpu-vulkan | The only crate that knows Vulkan exists. |
| orbistoun-shader | Guest shader bytecode: decode it, and measure how much is understood. |
| orbistoun-translate | Decoded guest shaders → SPIR-V. |
| orbistoun-spirv | SPIR-V module construction. Knows nothing about the guest. |
Knowledge, tooling, and shells
| Crate | Role |
|---|---|
| orbistoun-llm | Local-first language-model access, as a generic question in and an answer out. Depends on nothing else here, on purpose. |
| orbistoun-names | Generating and confirming candidate symbol names. |
| orbistoun-propose | Proposals paired with the oracle that checks them - where a model meets the hash. |
| orbistoun-turn | Turning the loop without a person - the steps a finding calls for, the sweeps that answer them, and what a turn earned. |
| orbistoun-report | Run reports, traces, the progress verdict, and the ranked findings. |
| orbistoun-probe | Reading the records a hardware conformance probe produces. |
| orbistoun-overrides | Per-title settings and compatibility entries, layered and merged. |
| orbistoun-submit | What one machine has to contribute - gathered, checked by re-derivation, never trusted. |
| orbistoun-corpus | The test corpus: a manifest of sources, pinned release assets fetched into titles/, ready to run and record. |
| orbistoun-paths | Portable-first path resolution. Never writes outside its own root. |
| orbistoun-proto | The shim-to-worker protocol: messages as data. |
| orbistoun-service | The shared logic layer every shim calls. |
| orbistoun-gen | Offline generators for the shader data tables. Not part of the emulator. |
| orbistoun-worker | The isolated process a guest actually runs in. |
| orbistoun-cli | The orbistoun binary. |
| orbistoun-gui | The desktop shell. |
cli, gui, and worker mode are
shims - none is privileged and none holds behaviour the
others lack. Adding a subsystem means one guest_module!
declaration and one line in modules() in orbistoun-service/src/symbols.rs.
Nothing else changes.