Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 69 additions & 0 deletions docs/FOG_SUBSTRATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# Fog Substrate Position in SourceOS

This document captures the **OS-substrate responsibilities** for the Fog layer.

`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.

## What belongs in SourceOS

### 1. Local storage substrate prerequisites

Every eligible SourceOS node/workstation should be able to realize a local storage substrate suitable for ephemeral fog workloads.

This includes:

- LVM2 availability
- volume group and thin-pool conventions
- safe disk targeting rules
Comment on lines +13 to +17
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The list starting immediately after This includes: is not separated by a blank line. This violates markdownlint's default MD032 (lists should be surrounded by blank lines) and will fail the CI markdownlint step. Add a blank line between the paragraph and the list.

Copilot uses AI. Check for mistakes.
- stable mount-point expectations

### 2. Canonical fog directory contract

The substrate should reserve a stable host-side contract such as:

- `/srv/fog/projects`
- `/srv/fog/models`
- `/srv/fog/datasets`
- `/srv/fog/topics`
- `/srv/fog/vector`
- `/srv/fog/cache`
- `/srv/fog/logs`
- `/srv/fog/secrets`
- `/srv/fog/tmp`

These paths are substrate-level invariants so workstation, node, and container lanes can share one filesystem grammar.

### 3. Container-host baseline

SourceOS should define the default local execution posture for fog-capable nodes/workstations:

- Linux-first container host defaults
- rootless-friendly execution where possible
Comment on lines +37 to +41
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The list under SourceOS should define the default local execution posture...: starts without a blank line. With markdownlint enabled in CI, this will trigger MD032. Insert a blank line before the list items.

Copilot uses AI. Check for mistakes.
- mount wiring to the fog directory contract
- no dependency on opt-in community automation

### 4. TopoLVM readiness

When a node participates in Kubernetes lanes, the substrate should provide the prerequisites needed for a local CSI/LVM stack such as TopoLVM.
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The list after Important layering rule: is missing a blank line before the list items. This is flagged by markdownlint (MD032) and can fail CI. Add a blank line between the label line and the list.

Suggested change
When a node participates in Kubernetes lanes, the substrate should provide the prerequisites needed for a local CSI/LVM stack such as TopoLVM.
Important layering rule:

Copilot uses AI. Check for mistakes.

Important layering rule:

- local PV provisioning belongs at the substrate/infrastructure layer
- replication and eventual-consistency semantics belong above the substrate in topic/agent layers

## What does not belong in SourceOS

- topic replication policy semantics
- Hypercore topic membership logic
- compute marketplace settlement rules
- opt-in automation workflows

Those belong in the spec, spine, and automation layers instead.

## Downstream repos expected to refine this

- `SourceOS-Linux/sourceos-spec` — typed contract surface for FogVault / FogCompute
- `SociOS-Linux/socios-ignition` — first-boot realization of disk/mount/systemd defaults
- `SociOS-Linux/workstation-contracts` — conformance checks for the machine contract
- `SociOS-Linux/agentos-spine` — assembled runtime/integration lane
- `SociOS-Linux/socios` — optional signed catalogs and automation
Loading