Skip to content

Commit 2f23c4e

Browse files
committed
docs(spec): add immutable node contract addition note
1 parent 3b6088b commit 2f23c4e

1 file changed

Lines changed: 61 additions & 0 deletions

File tree

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# Immutable Node Profile Contracts
2+
3+
This contract addition defines the first SourceOS machine-readable surface for immutable Linux node profiles.
4+
5+
## Why this exists
6+
7+
The platform standards layer already defines the general immutable host capability placement grammar. SourceOS needs a contract-native form that downstream implementation repos can validate, render, and emit evidence for.
8+
9+
The key boundary is:
10+
11+
- SourceOS immutable nodes are base substrate profiles.
12+
- Socios capability packs are optional automation commons and must not be required for a base SourceOS node.
13+
14+
## Added schemas
15+
16+
| Schema | Purpose | URN prefix |
17+
|---|---|---|
18+
| `ImmutableNodeProfile.json` | Top-level immutable node profile tying together substrate posture, release refs, host placements, state schemas, validation commands, and optional Socios pack refs. | `urn:srcos:immutable-node-profile:` |
19+
| `HostCapabilityPlacement.json` | Placement declaration for one host capability, service workload, extension, or state root. | `urn:srcos:host-capability-placement:` |
20+
| `NodeStateSchema.json` | Durable state root contract with rollback compatibility and mutability posture. | `urn:srcos:node-state-schema:` |
21+
22+
## Added examples
23+
24+
| Example | Schema |
25+
|---|---|
26+
| `examples/immutablenodeprofile.json` | `schemas/ImmutableNodeProfile.json` |
27+
| `examples/hostcapabilityplacement.json` | `schemas/HostCapabilityPlacement.json` |
28+
| `examples/nodestateschema.json` | `schemas/NodeStateSchema.json` |
29+
30+
## Validation
31+
32+
The focused validator is:
33+
34+
```bash
35+
python3 tools/validate_immutable_node_examples.py
36+
```
37+
38+
A future hygiene pass should wire this into the repository `Makefile` and `schemas/README.md` once the contract slice is accepted.
39+
40+
## Downstream implementation map
41+
42+
| Downstream repo | Expected role |
43+
|---|---|
44+
| `SourceOS-Linux/sourceos-boot` | Consumes boot/release references and coordinates boot/recovery/install/rollback handoff. |
45+
| `SourceOS-Linux/agent-machine` | Renders and validates systemd, Quadlet, state roots, activation decisions, storage receipts, and runtime evidence. |
46+
| `SourceOS-Linux/sourceos-devtools` | Exposes `sourceosctl immutable-node plan|validate|inspect` operator flows. |
47+
| `SocioProphet/agentplane` | Consumes immutable-node activation/runtime evidence and replayable receipts. |
48+
| `SocioProphet/prophet-platform` | Consumes profiles as deployment/FogStack substrate evidence. |
49+
| `SocioProphet/sociosphere` | Registers topology and cross-repo governance edges. |
50+
| `SociOS-Linux/socios` | Optional automation/personalization commons only after explicit enrollment. |
51+
52+
## Non-goals
53+
54+
This tranche does not:
55+
56+
- implement boot execution;
57+
- mutate host state;
58+
- make Socios mandatory;
59+
- replace BootReleaseSet;
60+
- add a production node renderer;
61+
- add CI or Makefile wiring yet.

0 commit comments

Comments
 (0)