Layered model

GoMyRobotOS is organized as a strict vertical stack. Each layer has one job, and each layer only talks to its neighbors:

                    GoMyRobotOS
                         │
            Partition Contract
                         │
                         ▼
                       IR
                         │
               Target Backend
                         │
              ┌──────────┴──────────┐
              ▼                     ▼
           Hypervisor          Bare metal /
           / separation        future backend
              │
              ▼
           Runtime
              │
              ▼
         GoMyRobotRT
              │
        ┌─────┴─────┐
        ▼           ▼
      RTEMS      ROS 2 APIs

The layers

1. Partition Contract

The author-facing layer: a machine-readable description of intent and constraints (execution, isolation, communication, startup, recovery). Hypervisor-independent by definition, it cannot mention Xen or XtratuM. See partition-contract.

2. IR (GoMyRobotOS Intermediate Representation)

The stable internal representation between contract and backends. The contract is parsed and validated into the IR; the IR is what every backend consumes. The IR keeps the system coherent: adding a new backend must not require touching the contract format, and changing a backend must not invalidate the contract. See ir.

3. Target backend

The only layer allowed to be platform-specific. A backend maps IR semantics onto what the target actually offers, a hypervisor’s domains, an RTOS partition system’s slots, or (future) native hardware partitioning. See backend-model.

4. Runtime

The execution substrate the backend produces: a running partition with booted guests/domains, wired communication, owned devices, and exposed health/recovery hooks.

5. GoMyRobotRT and the workload

The workload layer. GoMyRobotRT executes robotics workloads on RTEMS, including ROS 2 concepts; ROS 2 is the robotics middleware/workload environment and is not the architectural center of GoMyRobotOS. See GoMyRobotRT and ROS 2 (Rolling).

Invariant vs. target-specific

Concern

Level

Example

“Partition P runs at priority 10 on CPU 0 with a 300 µs budget”

Contract / IR

backend-agnostic

“Partition P is domain 1 pinned to CPU 0”

Backend

may legitimately mention the hypervisor

“GoMyRobotRT runs the flight ROS 2 workflow”

Runtime / RT

host-specific but product-stable

This separation is what makes the central research question (portable partition semantics) tractable: it makes the difference between backends observable and measurable rather than hidden in configuration.