|
| 1 | +# Fog Substrate Position in SourceOS |
| 2 | + |
| 3 | +This document captures the **OS-substrate responsibilities** for the Fog layer. |
| 4 | + |
| 5 | +`SourceOS` is the immutable, local-first substrate for workstation and edge lanes. The Fog layer depends on this repo for **machine invariants**, not for higher-level distributed semantics. |
| 6 | + |
| 7 | +## What belongs in SourceOS |
| 8 | + |
| 9 | +### 1. Local storage substrate prerequisites |
| 10 | + |
| 11 | +Every eligible SourceOS node/workstation should be able to realize a local storage substrate suitable for ephemeral fog workloads. |
| 12 | + |
| 13 | +This includes: |
| 14 | + |
| 15 | +- LVM2 availability |
| 16 | +- volume group and thin-pool conventions |
| 17 | +- safe disk targeting rules |
| 18 | +- stable mount-point expectations |
| 19 | + |
| 20 | +### 2. Canonical fog directory contract |
| 21 | + |
| 22 | +The substrate should reserve a stable host-side contract such as: |
| 23 | + |
| 24 | +- `/srv/fog/projects` |
| 25 | +- `/srv/fog/models` |
| 26 | +- `/srv/fog/datasets` |
| 27 | +- `/srv/fog/topics` |
| 28 | +- `/srv/fog/vector` |
| 29 | +- `/srv/fog/cache` |
| 30 | +- `/srv/fog/logs` |
| 31 | +- `/srv/fog/secrets` |
| 32 | +- `/srv/fog/tmp` |
| 33 | + |
| 34 | +These paths are substrate-level invariants so workstation, node, and container lanes can share one filesystem grammar. |
| 35 | + |
| 36 | +### 3. Container-host baseline |
| 37 | + |
| 38 | +SourceOS should define the default local execution posture for fog-capable nodes/workstations: |
| 39 | + |
| 40 | +- Linux-first container host defaults |
| 41 | +- rootless-friendly execution where possible |
| 42 | +- mount wiring to the fog directory contract |
| 43 | +- no dependency on opt-in community automation |
| 44 | + |
| 45 | +### 4. TopoLVM readiness |
| 46 | + |
| 47 | +When a node participates in Kubernetes lanes, the substrate should provide the prerequisites needed for a local CSI/LVM stack such as TopoLVM. |
| 48 | + |
| 49 | +Important layering rule: |
| 50 | + |
| 51 | +- local PV provisioning belongs at the substrate/infrastructure layer |
| 52 | +- replication and eventual-consistency semantics belong above the substrate in topic/agent layers |
| 53 | + |
| 54 | +## What does not belong in SourceOS |
| 55 | + |
| 56 | +- topic replication policy semantics |
| 57 | +- Hypercore topic membership logic |
| 58 | +- compute marketplace settlement rules |
| 59 | +- opt-in automation workflows |
| 60 | + |
| 61 | +Those belong in the spec, spine, and automation layers instead. |
| 62 | + |
| 63 | +## Downstream repos expected to refine this |
| 64 | + |
| 65 | +- `SourceOS-Linux/sourceos-spec` — typed contract surface for FogVault / FogCompute |
| 66 | +- `SociOS-Linux/socios-ignition` — first-boot realization of disk/mount/systemd defaults |
| 67 | +- `SociOS-Linux/workstation-contracts` — conformance checks for the machine contract |
| 68 | +- `SociOS-Linux/agentos-spine` — assembled runtime/integration lane |
| 69 | +- `SociOS-Linux/socios` — optional signed catalogs and automation |
0 commit comments