Rework ops specs
This commit is contained in:
parent
4cba1f45eb
commit
74efedf62c
17
ops/README.md
Normal file
17
ops/README.md
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
# Ops Specifications
|
||||||
|
|
||||||
|
This directory contains operational specs aligned with tier1 formatting and
|
||||||
|
structure. Legacy drafts are preserved in `ops/legacy/`.
|
||||||
|
|
||||||
|
## Ordered List
|
||||||
|
|
||||||
|
1. ASL/HOST/1 - `ops/asl-host-1.md`
|
||||||
|
2. ENC-ASL-HOST/1 - `ops/enc-asl-host-1.md`
|
||||||
|
3. ASL/AUTH-HOST/1 - `ops/asl-auth-host-1.md`
|
||||||
|
4. ENC-ASL-AUTH-HOST/1 - `ops/enc-asl-auth-host-1.md`
|
||||||
|
5. ASL/AUTH-HOST-CONFIG/1 - `ops/asl-auth-host-config-1.md`
|
||||||
|
6. ASL/AUTH-HOST-THREAT-MODEL/1 - `ops/asl-auth-host-threat-model-1.md`
|
||||||
|
7. ASL/AUTH-HOST-IMAGE/1 - `ops/asl-auth-host-image-1.md`
|
||||||
|
8. ASL/SYSTEMRESCUE-OVERLAY/1 - `ops/asl-systemrescue-overlay-1.md`
|
||||||
|
9. ASL/RESCUE-NODE/1 - `ops/asl-rescue-node-1.md`
|
||||||
|
10. ASL/RESCUE-OP/1 - `ops/asl-rescue-operation-1.md`
|
||||||
128
ops/asl-auth-host-1.md
Normal file
128
ops/asl-auth-host-1.md
Normal file
|
|
@ -0,0 +1,128 @@
|
||||||
|
# ASL/AUTH-HOST/1 - Authority Node Profile
|
||||||
|
|
||||||
|
Status: Draft
|
||||||
|
Owner: Architecture
|
||||||
|
Version: 0.1.0
|
||||||
|
SoT: No
|
||||||
|
Last Updated: 2026-01-17
|
||||||
|
Tags: [ops, authority, offline]
|
||||||
|
|
||||||
|
**Document ID:** `ASL/AUTH-HOST/1`
|
||||||
|
**Layer:** O2 - Authority host profile
|
||||||
|
|
||||||
|
**Depends on (normative):**
|
||||||
|
|
||||||
|
* `ASL/HOST/1`
|
||||||
|
* `ASL/DAM/1`
|
||||||
|
* `ASL/POLICY-HASH/1`
|
||||||
|
* `ASL/OFFLINE-ROOT-TRUST/1`
|
||||||
|
|
||||||
|
**Informative references:**
|
||||||
|
|
||||||
|
* `PEL/1-CORE`
|
||||||
|
* `PEL/1-SURF`
|
||||||
|
* `ENC-ASL-AUTH-HOST/1`
|
||||||
|
* `ASL/RESCUE-NODE/1`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 0. Conventions
|
||||||
|
|
||||||
|
The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHOULD**, and **MAY** are to be
|
||||||
|
interpreted as in RFC 2119.
|
||||||
|
|
||||||
|
ASL/AUTH-HOST/1 defines an operational profile. It does not define cryptography
|
||||||
|
or artifact semantics.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Purpose and Scope
|
||||||
|
|
||||||
|
ASL/AUTH-HOST/1 defines the profile for an offline authority node that mints
|
||||||
|
and signs domain admission artifacts. The host:
|
||||||
|
|
||||||
|
* Operates offline by default
|
||||||
|
* Maintains a local ASL/HOST store
|
||||||
|
* Produces deterministic artifacts and receipts
|
||||||
|
* Issues DAM artifacts for new domains
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Core Principles (Normative)
|
||||||
|
|
||||||
|
1. Authority state is stored as artifacts.
|
||||||
|
2. Operations are deterministic and snapshot-bound.
|
||||||
|
3. The host remains offline during authority operations.
|
||||||
|
4. Outputs are immutable artifacts suitable for later transfer.
|
||||||
|
5. Authority functionality is limited to signing, sealing, and packaging
|
||||||
|
artifacts.
|
||||||
|
6. Receipts (PERs) are primary outputs for auditing and later federation.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Required Components
|
||||||
|
|
||||||
|
An authority host MUST provide:
|
||||||
|
|
||||||
|
* ASL/HOST store for authority and domain artifacts
|
||||||
|
* Root authority key material (offline)
|
||||||
|
* PEL execution environment for deterministic receipts
|
||||||
|
* Policy hash verification for admission
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Operation Modes
|
||||||
|
|
||||||
|
The host MAY operate in the following modes:
|
||||||
|
|
||||||
|
* `GENESIS` - mint initial domain and keys
|
||||||
|
* `RESCUE` - ingest external artifacts and produce receipts
|
||||||
|
* `ADMISSION` - sign DAMs and policy artifacts
|
||||||
|
* `MAINTENANCE` - rotate keys, seal snapshots, audit state
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Output Artifacts
|
||||||
|
|
||||||
|
The host MUST be able to produce:
|
||||||
|
|
||||||
|
* Root key artifacts (public, encrypted private)
|
||||||
|
* DAM artifacts and signatures
|
||||||
|
* Policy hash artifacts
|
||||||
|
* Environment claim artifacts
|
||||||
|
* PER receipts and associated TGK edges
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Snapshot Discipline
|
||||||
|
|
||||||
|
Each authority operation MUST:
|
||||||
|
|
||||||
|
1. Append log entries for new artifacts
|
||||||
|
2. Seal relevant segments
|
||||||
|
3. Create a snapshot marker capturing CURRENT state
|
||||||
|
|
||||||
|
Snapshots MUST be immutable once sealed.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Offline Constraints
|
||||||
|
|
||||||
|
* Network interfaces SHOULD be disabled.
|
||||||
|
* External input and output MUST occur via explicit operator action.
|
||||||
|
* No background services SHOULD alter authority state.
|
||||||
|
* Garbage collection SHOULD be disabled for authority domains.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Security Considerations
|
||||||
|
|
||||||
|
* Private keys MUST remain offline and encrypted at rest.
|
||||||
|
* Only signed outputs may leave the host.
|
||||||
|
* Operator presence is required for authority operations.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. Versioning
|
||||||
|
|
||||||
|
Backward-incompatible profile changes MUST bump the major version.
|
||||||
161
ops/asl-auth-host-config-1.md
Normal file
161
ops/asl-auth-host-config-1.md
Normal file
|
|
@ -0,0 +1,161 @@
|
||||||
|
# ASL/AUTH-HOST-CONFIG/1 - Configuration Schema
|
||||||
|
|
||||||
|
Status: Draft
|
||||||
|
Owner: Architecture
|
||||||
|
Version: 0.1.0
|
||||||
|
SoT: No
|
||||||
|
Last Updated: 2026-01-17
|
||||||
|
Tags: [ops, authority, config]
|
||||||
|
|
||||||
|
**Document ID:** `ASL/AUTH-HOST-CONFIG/1`
|
||||||
|
**Layer:** O2C - Authority host configuration
|
||||||
|
|
||||||
|
**Depends on (normative):**
|
||||||
|
|
||||||
|
* `ASL/AUTH-HOST/1`
|
||||||
|
* `ASL/HOST/1`
|
||||||
|
|
||||||
|
**Informative references:**
|
||||||
|
|
||||||
|
* `ENC-ASL-AUTH-HOST/1`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 0. Conventions
|
||||||
|
|
||||||
|
The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHOULD**, and **MAY** are to be
|
||||||
|
interpreted as in RFC 2119.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Purpose and Scope
|
||||||
|
|
||||||
|
This document defines the configuration schema for an ASL authority host.
|
||||||
|
Configuration is expressed as a single YAML file.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. File Format
|
||||||
|
|
||||||
|
* UTF-8 YAML 1.2
|
||||||
|
* Root object with the fields defined below
|
||||||
|
* Unknown fields SHOULD be ignored with warning
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Root Schema
|
||||||
|
|
||||||
|
```
|
||||||
|
host:
|
||||||
|
name: string
|
||||||
|
version: string
|
||||||
|
mode: "rescue" | "admission" | "normal"
|
||||||
|
|
||||||
|
domains:
|
||||||
|
<name>:
|
||||||
|
id: string
|
||||||
|
type: "courtesy" | "private" | "authority"
|
||||||
|
description: string
|
||||||
|
path: string
|
||||||
|
snapshot_retention: duration
|
||||||
|
allowed_operations: [read, write, append, seal, gc]
|
||||||
|
courtesy_lease: duration
|
||||||
|
|
||||||
|
certificates:
|
||||||
|
root_offline_path: string
|
||||||
|
domain_authority_path: string
|
||||||
|
sops_bundle_path: string
|
||||||
|
|
||||||
|
policy:
|
||||||
|
hash_file: string
|
||||||
|
description: string
|
||||||
|
|
||||||
|
logging:
|
||||||
|
path: string
|
||||||
|
level: "DEBUG" | "INFO" | "WARN" | "ERROR"
|
||||||
|
|
||||||
|
store:
|
||||||
|
type: "posix" | "zfs"
|
||||||
|
pools:
|
||||||
|
- name: string
|
||||||
|
mount_point: string
|
||||||
|
enable_snapshotting: boolean
|
||||||
|
snapshot_prefix: string
|
||||||
|
|
||||||
|
hooks:
|
||||||
|
pre_start: string
|
||||||
|
post_start: string
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Semantics
|
||||||
|
|
||||||
|
* `host.mode` controls startup behavior.
|
||||||
|
* `domains` entries are keyed by stable names; `id` is the authoritative domain
|
||||||
|
identifier.
|
||||||
|
* `courtesy_lease` is required for `type: courtesy` and MUST be omitted for
|
||||||
|
`type: authority`.
|
||||||
|
* `store.type` selects the host backend. If `zfs`, each pool entry MUST be
|
||||||
|
mounted before starting the host.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Example Configuration
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
host:
|
||||||
|
name: "asl-auth-host-01"
|
||||||
|
version: "0.1"
|
||||||
|
mode: "rescue"
|
||||||
|
|
||||||
|
domains:
|
||||||
|
common:
|
||||||
|
id: "00000000-0000-0000-0000-000000000001"
|
||||||
|
type: "courtesy"
|
||||||
|
description: "Shared courtesy domain"
|
||||||
|
path: "/var/lib/asl/common"
|
||||||
|
snapshot_retention: 30d
|
||||||
|
allowed_operations: [read, write, append]
|
||||||
|
courtesy_lease: 7d
|
||||||
|
personal:
|
||||||
|
id: "00000000-0000-0000-0000-000000000002"
|
||||||
|
type: "private"
|
||||||
|
description: "Private rescue domain"
|
||||||
|
path: "/var/lib/asl/personal"
|
||||||
|
snapshot_retention: 90d
|
||||||
|
allowed_operations: [read, write, append, seal, gc]
|
||||||
|
|
||||||
|
certificates:
|
||||||
|
root_offline_path: "/var/lib/asl/certs/root-offline"
|
||||||
|
domain_authority_path: "/var/lib/asl/certs/domain-authority"
|
||||||
|
sops_bundle_path: "/var/lib/asl/certs/sops"
|
||||||
|
|
||||||
|
policy:
|
||||||
|
hash_file: "/etc/asl-auth-host/policy.hash"
|
||||||
|
description: "Offline policy hash"
|
||||||
|
|
||||||
|
logging:
|
||||||
|
path: "/var/log/asl-auth-host.log"
|
||||||
|
level: "INFO"
|
||||||
|
|
||||||
|
store:
|
||||||
|
type: "zfs"
|
||||||
|
pools:
|
||||||
|
- name: "common_pool"
|
||||||
|
mount_point: "/var/lib/asl/common"
|
||||||
|
- name: "personal_pool"
|
||||||
|
mount_point: "/var/lib/asl/personal"
|
||||||
|
enable_snapshotting: true
|
||||||
|
snapshot_prefix: "asl_snap"
|
||||||
|
|
||||||
|
hooks:
|
||||||
|
pre_start: "/bin/init-asl-host.sh"
|
||||||
|
post_start: "/bin/helper-mount.sh"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Versioning
|
||||||
|
|
||||||
|
Backward-incompatible schema changes MUST bump the major version.
|
||||||
129
ops/asl-auth-host-image-1.md
Normal file
129
ops/asl-auth-host-image-1.md
Normal file
|
|
@ -0,0 +1,129 @@
|
||||||
|
# ASL/AUTH-HOST-IMAGE/1 - Bootable Image and Overlay Layout
|
||||||
|
|
||||||
|
Status: Draft
|
||||||
|
Owner: Architecture
|
||||||
|
Version: 0.1.0
|
||||||
|
SoT: No
|
||||||
|
Last Updated: 2026-01-17
|
||||||
|
Tags: [ops, authority, image]
|
||||||
|
|
||||||
|
**Document ID:** `ASL/AUTH-HOST-IMAGE/1`
|
||||||
|
**Layer:** O2I - Authority host image profile
|
||||||
|
|
||||||
|
**Depends on (normative):**
|
||||||
|
|
||||||
|
* `ASL/AUTH-HOST/1`
|
||||||
|
* `ENC-ASL-AUTH-HOST/1`
|
||||||
|
|
||||||
|
**Informative references:**
|
||||||
|
|
||||||
|
* `ASL/AUTH-HOST-CONFIG/1`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 0. Conventions
|
||||||
|
|
||||||
|
The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHOULD**, and **MAY** are to be
|
||||||
|
interpreted as in RFC 2119.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Purpose and Scope
|
||||||
|
|
||||||
|
This document defines a bootable, offline authority host image. It specifies
|
||||||
|
base system requirements, overlay layout, and the boot workflow used to
|
||||||
|
initialize authority operations.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Base Image Requirements
|
||||||
|
|
||||||
|
The base OS MUST:
|
||||||
|
|
||||||
|
* Boot in offline mode by default
|
||||||
|
* Include minimal POSIX tooling
|
||||||
|
* Disable network services unless explicitly enabled
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Overlay Layout
|
||||||
|
|
||||||
|
```
|
||||||
|
/overlay/
|
||||||
|
├── bin/
|
||||||
|
│ ├── asl-auth-host
|
||||||
|
│ ├── asl-rescue
|
||||||
|
│ └── init-asl-host.sh
|
||||||
|
├── etc/
|
||||||
|
│ └── asl-auth-host/
|
||||||
|
│ ├── config.yaml
|
||||||
|
│ └── policy.hash
|
||||||
|
├── var/
|
||||||
|
│ ├── lib/
|
||||||
|
│ │ └── asl/
|
||||||
|
│ │ ├── common/
|
||||||
|
│ │ ├── personal/
|
||||||
|
│ │ └── pools/
|
||||||
|
│ └── log/
|
||||||
|
│ └── asl-auth-host.log
|
||||||
|
└── usr/
|
||||||
|
└── local/
|
||||||
|
└── bin/
|
||||||
|
└── asl-admin
|
||||||
|
```
|
||||||
|
|
||||||
|
The overlay MUST be merged into the ISO root at build time.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. ISO Root Layout (Runtime)
|
||||||
|
|
||||||
|
```
|
||||||
|
/iso_root/
|
||||||
|
├── bin/
|
||||||
|
├── etc/
|
||||||
|
│ └── asl-auth-host/
|
||||||
|
├── var/
|
||||||
|
│ ├── lib/
|
||||||
|
│ │ └── asl/
|
||||||
|
│ └── log/
|
||||||
|
└── usr/local/bin/
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Boot Workflow
|
||||||
|
|
||||||
|
1. Boot offline image.
|
||||||
|
2. Run `init-asl-host.sh` to mount storage pools and apply config.
|
||||||
|
3. Initialize or open domain stores per config.
|
||||||
|
4. Start the authority host service.
|
||||||
|
5. Enforce witness authority (DAM) before general userspace services start.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Persistence Strategy
|
||||||
|
|
||||||
|
Writable storage MUST be mounted separately from the read-only system image.
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
* ZFS datasets mounted under `/var/lib/asl`
|
||||||
|
* External disk mounted at `/mnt` and bound to `/var/lib/asl`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Build Pipeline (Informative)
|
||||||
|
|
||||||
|
A typical pipeline:
|
||||||
|
|
||||||
|
1. Create minimal root via debootstrap or equivalent.
|
||||||
|
2. Merge overlay into ISO root.
|
||||||
|
3. Optionally wrap build steps with `asl-capture` to record build provenance.
|
||||||
|
4. Add bootloader config.
|
||||||
|
5. Build ISO with `xorriso` or equivalent tool.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Versioning
|
||||||
|
|
||||||
|
Backward-incompatible image changes MUST bump the major version.
|
||||||
123
ops/asl-auth-host-threat-model-1.md
Normal file
123
ops/asl-auth-host-threat-model-1.md
Normal file
|
|
@ -0,0 +1,123 @@
|
||||||
|
# ASL/AUTH-HOST-THREAT-MODEL/1 - Threat Model
|
||||||
|
|
||||||
|
Status: Draft
|
||||||
|
Owner: Architecture
|
||||||
|
Version: 0.1.0
|
||||||
|
SoT: No
|
||||||
|
Last Updated: 2026-01-17
|
||||||
|
Tags: [ops, authority, security]
|
||||||
|
|
||||||
|
**Document ID:** `ASL/AUTH-HOST-THREAT-MODEL/1`
|
||||||
|
**Layer:** O2S - Authority host security profile
|
||||||
|
|
||||||
|
**Depends on (normative):**
|
||||||
|
|
||||||
|
* `ASL/AUTH-HOST/1`
|
||||||
|
|
||||||
|
**Informative references:**
|
||||||
|
|
||||||
|
* `ASL/OFFLINE-ROOT-TRUST/1`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 0. Conventions
|
||||||
|
|
||||||
|
The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHOULD**, and **MAY** are to be
|
||||||
|
interpreted as in RFC 2119.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Scope and Assumptions
|
||||||
|
|
||||||
|
### 1.1 In Scope
|
||||||
|
|
||||||
|
* Offline authority host
|
||||||
|
* USB-mediated intake and output
|
||||||
|
* DAM signing and admission artifacts
|
||||||
|
* PEL execution for receipt generation
|
||||||
|
* Snapshot and log sealing
|
||||||
|
|
||||||
|
### 1.2 Assumptions
|
||||||
|
|
||||||
|
1. Physical access to hardware is controlled.
|
||||||
|
2. The host is offline (no network interfaces).
|
||||||
|
3. Root keys are uncompromised.
|
||||||
|
4. Operator presence is required for authority actions.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Assets
|
||||||
|
|
||||||
|
* Root authority keys
|
||||||
|
* Domain signing keys
|
||||||
|
* DAM and policy artifacts
|
||||||
|
* PER receipts and environment claims
|
||||||
|
* Domain identity bindings
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Adversary Model
|
||||||
|
|
||||||
|
The adversary MAY:
|
||||||
|
|
||||||
|
* Supply malicious USB content
|
||||||
|
* Replay old requests
|
||||||
|
* Provide malformed PEL programs
|
||||||
|
* Attempt to confuse domain identity
|
||||||
|
|
||||||
|
The adversary MUST NOT:
|
||||||
|
|
||||||
|
* Access signing keys without operator approval
|
||||||
|
* Modify host binaries without physical compromise
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Trust Boundaries
|
||||||
|
|
||||||
|
```
|
||||||
|
[ USB INPUT ] -> [ AUTH HOST ] -> [ USB OUTPUT ]
|
||||||
|
```
|
||||||
|
|
||||||
|
Data flows are unidirectional per phase. The host MUST treat input as untrusted
|
||||||
|
until verification succeeds.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Threats and Mitigations
|
||||||
|
|
||||||
|
### 5.1 Spoofing
|
||||||
|
|
||||||
|
* Mitigation: DAM signature verification and policy hash checks.
|
||||||
|
|
||||||
|
### 5.2 Tampering
|
||||||
|
|
||||||
|
* Mitigation: hash all inputs, sign outputs, mount USB read-only.
|
||||||
|
|
||||||
|
### 5.3 Repudiation
|
||||||
|
|
||||||
|
* Mitigation: PER receipts include program hash, input hashes, and snapshot ID.
|
||||||
|
|
||||||
|
### 5.4 Information Disclosure
|
||||||
|
|
||||||
|
* Mitigation: no network, explicit publish rules, encrypted private artifacts.
|
||||||
|
|
||||||
|
### 5.5 Denial of Service
|
||||||
|
|
||||||
|
* Mitigation: operator-mediated execution, size limits, deterministic PEL subset.
|
||||||
|
|
||||||
|
### 5.6 Elevation of Privilege
|
||||||
|
|
||||||
|
* Mitigation: PEL is declarative, no syscalls or I/O primitives.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Residual Risk
|
||||||
|
|
||||||
|
* Physical compromise of hardware is out of scope.
|
||||||
|
* Operator error remains a risk and SHOULD be mitigated with checklists.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Versioning
|
||||||
|
|
||||||
|
Backward-incompatible changes MUST bump the major version.
|
||||||
248
ops/asl-host-1.md
Normal file
248
ops/asl-host-1.md
Normal file
|
|
@ -0,0 +1,248 @@
|
||||||
|
# ASL/HOST/1 - Host Runtime Interface
|
||||||
|
|
||||||
|
Status: Draft
|
||||||
|
Owner: Architecture
|
||||||
|
Version: 0.1.0
|
||||||
|
SoT: No
|
||||||
|
Last Updated: 2026-01-17
|
||||||
|
Tags: [ops, host, admission, storage]
|
||||||
|
|
||||||
|
**Document ID:** `ASL/HOST/1`
|
||||||
|
**Layer:** O1 - Host runtime profile (node boundary)
|
||||||
|
|
||||||
|
**Depends on (normative):**
|
||||||
|
|
||||||
|
* `ASL/1-STORE`
|
||||||
|
* `ASL/LOG/1`
|
||||||
|
* `ASL/DAP/1`
|
||||||
|
* `ASL/DAM/1`
|
||||||
|
* `ASL/POLICY-HASH/1`
|
||||||
|
|
||||||
|
**Informative references:**
|
||||||
|
|
||||||
|
* `ASL/SYSTEM/1`
|
||||||
|
* `ASL/OFFLINE-ROOT-TRUST/1`
|
||||||
|
* `ENC-ASL-HOST/1`
|
||||||
|
* `ENC-ASL-LOG`
|
||||||
|
* `ASL/AUTH-HOST/1`
|
||||||
|
* `ASL/RESCUE-NODE/1`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 0. Conventions
|
||||||
|
|
||||||
|
The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHOULD**, and **MAY** are to be
|
||||||
|
interpreted as in RFC 2119.
|
||||||
|
|
||||||
|
ASL/HOST/1 defines host responsibilities and boundaries. It does not define
|
||||||
|
artifact semantics, encoding formats, or cryptographic algorithms.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Purpose and Scope
|
||||||
|
|
||||||
|
ASL/HOST/1 specifies the runtime contract between an ASL node and its host
|
||||||
|
environment. It covers:
|
||||||
|
|
||||||
|
* Domain lifecycle and admission state tracking
|
||||||
|
* Store handle provisioning for ASL/1-STORE and ASL/LOG/1
|
||||||
|
* Snapshot coordination and log append guarantees
|
||||||
|
* Resource and lease enforcement at the host boundary
|
||||||
|
|
||||||
|
Out of scope:
|
||||||
|
|
||||||
|
* Artifact semantics (ASL/1-CORE)
|
||||||
|
* On-disk encoding and byte layouts (ENC specs)
|
||||||
|
* Policy definition and authority semantics (ASL/AUTH layers)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Position in the Stack
|
||||||
|
|
||||||
|
ASL/HOST is the membrane between host services and ASL semantics.
|
||||||
|
|
||||||
|
```
|
||||||
|
+--------------------------+
|
||||||
|
| ASL/AUTH (policy, keys) |
|
||||||
|
+--------------------------+
|
||||||
|
| ASL/HOST (this spec) |
|
||||||
|
+--------------------------+
|
||||||
|
| ASL/1-STORE + ASL/LOG |
|
||||||
|
+--------------------------+
|
||||||
|
| Host FS / ZFS / POSIX |
|
||||||
|
+--------------------------+
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Core Responsibilities (Normative)
|
||||||
|
|
||||||
|
An ASL host implementation MUST:
|
||||||
|
|
||||||
|
1. Provide stable store handles for ASL/1-STORE and ASL/LOG/1 operations.
|
||||||
|
2. Maintain domain lifecycle state and admission status.
|
||||||
|
3. Enforce admission outcomes and courtesy leases without leaking those
|
||||||
|
semantics into ASL/1-STORE.
|
||||||
|
4. Provide atomic append guarantees for log operations.
|
||||||
|
5. Coordinate snapshot creation and mounting.
|
||||||
|
6. Enforce local resource limits and error handling.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Core Concepts
|
||||||
|
|
||||||
|
| Concept | Definition |
|
||||||
|
| ----------------- | ------------------------------------------------------------------------- |
|
||||||
|
| **StoreHandle** | Opaque reference to a host-provided store instance |
|
||||||
|
| **StoreLocation** | Host-defined location where a store exists (path, URI, mount point, etc.) |
|
||||||
|
| **AppendUnit** | Minimum atomic write unit for the append-only log |
|
||||||
|
| **SnapshotID** | Opaque identifier of a host-provided snapshot |
|
||||||
|
| **HostClock** | Monotonic counter or timestamp source |
|
||||||
|
| **HostIdentity** | Unique machine or user identity for signing or domain minting |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Domain Model
|
||||||
|
|
||||||
|
### 5.1 Domain States
|
||||||
|
|
||||||
|
A host MUST track the following domain states:
|
||||||
|
|
||||||
|
* `UNRECOGNIZED`
|
||||||
|
* `COURTESY`
|
||||||
|
* `FULL`
|
||||||
|
* `SUSPENDED`
|
||||||
|
* `REVOKED`
|
||||||
|
|
||||||
|
### 5.2 Domain Descriptor
|
||||||
|
|
||||||
|
Host-owned metadata MUST include:
|
||||||
|
|
||||||
|
```
|
||||||
|
domain_id
|
||||||
|
state
|
||||||
|
created_at
|
||||||
|
admitted_at
|
||||||
|
root_key_fingerprint
|
||||||
|
policy_hash
|
||||||
|
current_snapshot
|
||||||
|
current_logseq
|
||||||
|
```
|
||||||
|
|
||||||
|
The descriptor is derived state and MUST NOT be treated as authoritative
|
||||||
|
artifact content.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Domain Lifecycle Operations
|
||||||
|
|
||||||
|
### 6.1 Create
|
||||||
|
|
||||||
|
`CreateDomain(location) -> domain_id`
|
||||||
|
|
||||||
|
* MUST allocate an isolated domain root.
|
||||||
|
* MUST initialize empty store, log, and snapshot markers.
|
||||||
|
|
||||||
|
### 6.2 Admit
|
||||||
|
|
||||||
|
`AdmitDomain(dam, signature) -> AdmissionResult`
|
||||||
|
|
||||||
|
* MUST validate DAM schema and signature per `ASL/DAM/1`.
|
||||||
|
* MUST enforce policy hash compatibility per `ASL/POLICY-HASH/1`.
|
||||||
|
|
||||||
|
Admission outcomes MUST have the following effects:
|
||||||
|
|
||||||
|
| Outcome | Host Behavior |
|
||||||
|
| ---------------- | --------------------------------------- |
|
||||||
|
| ACCEPTED | Enable publishing, indexing, federation |
|
||||||
|
| ACCEPTED_LIMITED | Enable courtesy-only storage |
|
||||||
|
| DEFERRED | Domain exists but blocked |
|
||||||
|
| REJECTED | Domain remains isolated |
|
||||||
|
|
||||||
|
### 6.3 Suspend and Revoke
|
||||||
|
|
||||||
|
* `SUSPENDED` MUST block new writes.
|
||||||
|
* `REVOKED` MUST block all access except local inspection.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Store Handle Interface
|
||||||
|
|
||||||
|
A host MUST expose at least the following operations:
|
||||||
|
|
||||||
|
* `CreateStore(location) -> StoreHandle`
|
||||||
|
* `OpenStore(location) -> StoreHandle`
|
||||||
|
* `CloseStore(handle)`
|
||||||
|
|
||||||
|
The StoreHandle is opaque and scoped to a domain. Admission state MUST gate
|
||||||
|
capabilities exposed by the StoreHandle (see Section 7).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Admission-Gated Capabilities
|
||||||
|
|
||||||
|
Capabilities MUST be gated as follows:
|
||||||
|
|
||||||
|
| Capability | Courtesy | Full |
|
||||||
|
| ---------------- | -------- | ---- |
|
||||||
|
| allocate_block | yes | yes |
|
||||||
|
| seal_block | yes | yes |
|
||||||
|
| append_log | yes | yes |
|
||||||
|
| publish_snapshot | no | yes |
|
||||||
|
| federate_log | no | yes |
|
||||||
|
|
||||||
|
ASL/1-STORE and ASL/LOG MUST remain unaware of admission semantics.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. Courtesy Leases
|
||||||
|
|
||||||
|
Courtesy leases are host-owned metadata attached to a domain. The host MUST
|
||||||
|
enforce lease limits without exposing courtesy state to ASL/1-STORE.
|
||||||
|
|
||||||
|
Enforcement MAY include:
|
||||||
|
|
||||||
|
* Storage caps
|
||||||
|
* Snapshot count limits
|
||||||
|
* Write blocking after expiry
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. Snapshot and Log Coordination
|
||||||
|
|
||||||
|
The host MUST ensure:
|
||||||
|
|
||||||
|
* Append-only log semantics with strict ordering
|
||||||
|
* Snapshot creation captures a consistent view of sealed segments
|
||||||
|
* Snapshot mounts are read-only and bounded by a log sequence
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11. Error Model
|
||||||
|
|
||||||
|
Host operations MUST report deterministic error codes. Minimum set:
|
||||||
|
|
||||||
|
* `HOST_OK`
|
||||||
|
* `HOST_EXISTS`
|
||||||
|
* `HOST_NOT_FOUND`
|
||||||
|
* `HOST_IO_ERROR`
|
||||||
|
* `HOST_CONCURRENT_MODIFICATION`
|
||||||
|
* `HOST_ADMISSION_REJECTED`
|
||||||
|
* `HOST_LEASE_EXPIRED`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 12. Security Considerations
|
||||||
|
|
||||||
|
* Admission verification MUST be performed before enabling federation or
|
||||||
|
publication.
|
||||||
|
* Private key material SHOULD NOT be required on the host except for explicit
|
||||||
|
authority operations.
|
||||||
|
* The host MUST treat all imported artifacts as untrusted until admission and
|
||||||
|
policy validation succeed.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 13. Versioning
|
||||||
|
|
||||||
|
Backward-incompatible changes MUST bump the major version of ASL/HOST.
|
||||||
107
ops/asl-rescue-node-1.md
Normal file
107
ops/asl-rescue-node-1.md
Normal file
|
|
@ -0,0 +1,107 @@
|
||||||
|
# ASL/RESCUE-NODE/1 - Deployment Profile
|
||||||
|
|
||||||
|
Status: Draft
|
||||||
|
Owner: Architecture
|
||||||
|
Version: 0.1.0
|
||||||
|
SoT: No
|
||||||
|
Last Updated: 2026-01-17
|
||||||
|
Tags: [ops, rescue, deployment]
|
||||||
|
|
||||||
|
**Document ID:** `ASL/RESCUE-NODE/1`
|
||||||
|
**Layer:** O3 - Rescue node deployment
|
||||||
|
|
||||||
|
**Depends on (normative):**
|
||||||
|
|
||||||
|
* `ASL/HOST/1`
|
||||||
|
* `ASL/1-STORE`
|
||||||
|
* `ASL/LOG/1`
|
||||||
|
|
||||||
|
**Informative references:**
|
||||||
|
|
||||||
|
* `ASL/AUTH-HOST/1`
|
||||||
|
* `ASL/SYSTEMRESCUE-OVERLAY/1`
|
||||||
|
* `ASL/RESCUE-OP/1`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 0. Conventions
|
||||||
|
|
||||||
|
The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHOULD**, and **MAY** are to be
|
||||||
|
interpreted as in RFC 2119.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Purpose and Scope
|
||||||
|
|
||||||
|
ASL/RESCUE-NODE/1 defines the deployment profile for a rescue node that boots
|
||||||
|
from a minimal OS and provides local intake into ASL stores.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Node Roles
|
||||||
|
|
||||||
|
A rescue node MAY host:
|
||||||
|
|
||||||
|
* A personal domain (new or existing)
|
||||||
|
* A courtesy or common domain (shared, e.g. Common/Unity/Rakeroot)
|
||||||
|
* Optional read-only caches for foreign domains
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Domain Types
|
||||||
|
|
||||||
|
* **Personal domain** - private, authoritative store
|
||||||
|
* **Courtesy domain** - temporary storage with lease enforcement, may store
|
||||||
|
encrypted blocks during bootstrap
|
||||||
|
* **Foreign domain** - read-only imported artifacts
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Storage Layout (Informative)
|
||||||
|
|
||||||
|
```
|
||||||
|
/mnt/rescue/
|
||||||
|
personal/
|
||||||
|
blocks/
|
||||||
|
segments/
|
||||||
|
logs/
|
||||||
|
common/
|
||||||
|
blocks/
|
||||||
|
segments/
|
||||||
|
logs/
|
||||||
|
foreign/
|
||||||
|
<domain-id>/
|
||||||
|
blocks/
|
||||||
|
segments/
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Snapshot Strategy
|
||||||
|
|
||||||
|
* Personal domain snapshots SHOULD be created at intake boundaries.
|
||||||
|
* Courtesy domain snapshots SHOULD be pinned until admission is complete.
|
||||||
|
* Foreign domain snapshots MUST be read-only and pinned by trust.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Trust and Admission
|
||||||
|
|
||||||
|
* Admission decisions MUST be verified before publishing to shared domains.
|
||||||
|
* Foreign artifacts MUST be pinned by policy hash and offline roots.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. PER and TGK Integration
|
||||||
|
|
||||||
|
Rescue nodes SHOULD generate PER receipts for intake operations. TGK edges
|
||||||
|
MAY be produced to capture provenance across personal and common domains.
|
||||||
|
|
||||||
|
Sedelpress (or equivalent deterministic tooling) MAY be used to normalize
|
||||||
|
legacy inputs into artifacts before storage.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Versioning
|
||||||
|
|
||||||
|
Backward-incompatible changes MUST bump the major version.
|
||||||
89
ops/asl-rescue-operation-1.md
Normal file
89
ops/asl-rescue-operation-1.md
Normal file
|
|
@ -0,0 +1,89 @@
|
||||||
|
# ASL/RESCUE-OP/1 - Rescue Operation Flow
|
||||||
|
|
||||||
|
Status: Draft
|
||||||
|
Owner: Architecture
|
||||||
|
Version: 0.1.0
|
||||||
|
SoT: No
|
||||||
|
Last Updated: 2026-01-17
|
||||||
|
Tags: [ops, rescue, operations]
|
||||||
|
|
||||||
|
**Document ID:** `ASL/RESCUE-OP/1`
|
||||||
|
**Layer:** O3 - Rescue operation profile
|
||||||
|
|
||||||
|
**Depends on (normative):**
|
||||||
|
|
||||||
|
* `ASL/RESCUE-NODE/1`
|
||||||
|
* `ASL/HOST/1`
|
||||||
|
|
||||||
|
**Informative references:**
|
||||||
|
|
||||||
|
* `PEL/1-CORE`
|
||||||
|
* `TGK/1-CORE`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 0. Conventions
|
||||||
|
|
||||||
|
The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHOULD**, and **MAY** are to be
|
||||||
|
interpreted as in RFC 2119.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Purpose and Scope
|
||||||
|
|
||||||
|
ASL/RESCUE-OP/1 defines the operational flow for personal rescue and bootstrap
|
||||||
|
into a personal domain with optional courtesy storage.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Phases
|
||||||
|
|
||||||
|
### 2.1 Intake
|
||||||
|
|
||||||
|
* Collect legacy material and intent artifacts.
|
||||||
|
* Normalize inputs into artifacts for deterministic processing (e.g. Sedelpress).
|
||||||
|
|
||||||
|
### 2.2 Deterministic Processing
|
||||||
|
|
||||||
|
* Execute PEL programs over the intake snapshot.
|
||||||
|
* Generate PER receipts and optional TGK edges.
|
||||||
|
|
||||||
|
### 2.3 Courtesy Bootstrap (Optional)
|
||||||
|
|
||||||
|
* Store encrypted blocks in a courtesy domain (Common/Unity/Rakeroot).
|
||||||
|
* Seal segments and pin snapshots for determinism.
|
||||||
|
|
||||||
|
### 2.4 Personal Domain Minting
|
||||||
|
|
||||||
|
* Create a personal domain and copy sealed artifacts.
|
||||||
|
* Generate DAM and policy artifacts.
|
||||||
|
* Produce receipts that bind provenance to the new domain.
|
||||||
|
|
||||||
|
### 2.5 Publication (Optional)
|
||||||
|
|
||||||
|
* Publish selected artifacts to a common domain.
|
||||||
|
* Enforce policy hash and visibility rules.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Constraints
|
||||||
|
|
||||||
|
* Intake artifacts MUST be treated as untrusted until verified.
|
||||||
|
* Courtesy storage MUST enforce lease limits.
|
||||||
|
* Publication MUST be gated by admission and policy compatibility.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Outputs
|
||||||
|
|
||||||
|
A rescue operation SHOULD produce:
|
||||||
|
|
||||||
|
* PER receipts for each processing phase
|
||||||
|
* Sealed snapshots for replay
|
||||||
|
* DAM and policy artifacts for domain admission
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Versioning
|
||||||
|
|
||||||
|
Backward-incompatible changes MUST bump the major version.
|
||||||
134
ops/asl-systemrescue-overlay-1.md
Normal file
134
ops/asl-systemrescue-overlay-1.md
Normal file
|
|
@ -0,0 +1,134 @@
|
||||||
|
# ASL/SYSTEMRESCUE-OVERLAY/1 - Intake Overlay Layout
|
||||||
|
|
||||||
|
Status: Draft
|
||||||
|
Owner: Architecture
|
||||||
|
Version: 0.1.0
|
||||||
|
SoT: No
|
||||||
|
Last Updated: 2026-01-17
|
||||||
|
Tags: [ops, rescue, overlay]
|
||||||
|
|
||||||
|
**Document ID:** `ASL/SYSTEMRESCUE-OVERLAY/1`
|
||||||
|
**Layer:** O3 - Rescue overlay profile
|
||||||
|
|
||||||
|
**Depends on (normative):**
|
||||||
|
|
||||||
|
* `ASL/HOST/1`
|
||||||
|
|
||||||
|
**Informative references:**
|
||||||
|
|
||||||
|
* `ASL/RESCUE-NODE/1`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 0. Conventions
|
||||||
|
|
||||||
|
The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHOULD**, and **MAY** are to be
|
||||||
|
interpreted as in RFC 2119.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Purpose and Scope
|
||||||
|
|
||||||
|
This overlay defines what exists at boot for a rescue intake environment. It
|
||||||
|
separates immutable tools from mutable runtime state and defines mount points
|
||||||
|
for local or remote ASL stores.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Overlay Layout
|
||||||
|
|
||||||
|
```
|
||||||
|
overlay/
|
||||||
|
├── usr/
|
||||||
|
│ └── local/
|
||||||
|
│ ├── bin/
|
||||||
|
│ │ ├── asl-intake
|
||||||
|
│ │ ├── asl-admin
|
||||||
|
│ │ └── asl-debug
|
||||||
|
│ └── lib/
|
||||||
|
│ └── libasl.so
|
||||||
|
├── etc/
|
||||||
|
│ └── asl/
|
||||||
|
│ ├── asl.conf
|
||||||
|
│ ├── federation.conf
|
||||||
|
│ └── logging.conf
|
||||||
|
├── etc/systemd/system/
|
||||||
|
│ ├── asl-intake.service
|
||||||
|
│ └── asl-preflight.service
|
||||||
|
├── var/
|
||||||
|
│ └── lib/
|
||||||
|
│ └── asl/
|
||||||
|
│ ├── runtime/
|
||||||
|
│ ├── cache/
|
||||||
|
│ └── locks/
|
||||||
|
├── run/
|
||||||
|
│ └── asl/
|
||||||
|
│ └── sockets/
|
||||||
|
└── mnt/
|
||||||
|
└── asl/
|
||||||
|
├── local/
|
||||||
|
└── remote/
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Directory Semantics
|
||||||
|
|
||||||
|
* `/usr/local/bin` is immutable and MUST NOT be written at runtime.
|
||||||
|
* `/etc/asl` contains declarative configuration only.
|
||||||
|
* `/var/lib/asl` contains all mutable state for the rescue session.
|
||||||
|
* `/mnt/asl/local` is the mount target for a local ASL store.
|
||||||
|
* `/mnt/asl/remote` is an optional remote mount.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Local Store Layout (Informative)
|
||||||
|
|
||||||
|
When mounted, a local store typically exposes:
|
||||||
|
|
||||||
|
```
|
||||||
|
/mnt/asl/local/
|
||||||
|
├── blocks/
|
||||||
|
├── segments/
|
||||||
|
├── snapshots/
|
||||||
|
└── logs/
|
||||||
|
```
|
||||||
|
|
||||||
|
This internal layout is backend-defined and not mandated by this overlay.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Services
|
||||||
|
|
||||||
|
### 5.1 asl-preflight.service
|
||||||
|
|
||||||
|
Responsibilities:
|
||||||
|
|
||||||
|
* Detect storage backends
|
||||||
|
* Detect importable pools
|
||||||
|
* Write mode decisions to `/run/asl/mode`
|
||||||
|
|
||||||
|
### 5.2 asl-intake.service
|
||||||
|
|
||||||
|
Responsibilities:
|
||||||
|
|
||||||
|
* Read `/run/asl/mode`
|
||||||
|
* Start `asl-intake` with the selected backend
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Configuration Defaults
|
||||||
|
|
||||||
|
`/etc/asl/asl.conf` SHOULD include at minimum:
|
||||||
|
|
||||||
|
```
|
||||||
|
mode = auto
|
||||||
|
local.mount = /mnt/asl/local
|
||||||
|
remote.endpoint = none
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Versioning
|
||||||
|
|
||||||
|
Backward-incompatible overlay changes MUST bump the major version.
|
||||||
169
ops/enc-asl-auth-host-1.md
Normal file
169
ops/enc-asl-auth-host-1.md
Normal file
|
|
@ -0,0 +1,169 @@
|
||||||
|
# ENC-ASL-AUTH-HOST/1 - Authority Host Layout
|
||||||
|
|
||||||
|
Status: Draft
|
||||||
|
Owner: Architecture
|
||||||
|
Version: 0.1.0
|
||||||
|
SoT: No
|
||||||
|
Last Updated: 2026-01-17
|
||||||
|
Tags: [ops, authority, layout]
|
||||||
|
|
||||||
|
**Document ID:** `ENC-ASL-AUTH-HOST/1`
|
||||||
|
**Layer:** O2E - Authority host layout profile
|
||||||
|
|
||||||
|
**Depends on (normative):**
|
||||||
|
|
||||||
|
* `ASL/AUTH-HOST/1`
|
||||||
|
* `ENC-ASL-HOST/1`
|
||||||
|
|
||||||
|
**Informative references:**
|
||||||
|
|
||||||
|
* `ASL/DAM/1`
|
||||||
|
* `PEL/1-CORE`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 0. Conventions
|
||||||
|
|
||||||
|
The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHOULD**, and **MAY** are to be
|
||||||
|
interpreted as in RFC 2119.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Purpose and Scope
|
||||||
|
|
||||||
|
ENC-ASL-AUTH-HOST/1 extends ENC-ASL-HOST/1 with authority-specific layout
|
||||||
|
requirements for offline admission and signing workflows.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Authority Root Layout
|
||||||
|
|
||||||
|
```
|
||||||
|
/asl-auth-host/
|
||||||
|
├── host/
|
||||||
|
├── domains/
|
||||||
|
├── env-claims/
|
||||||
|
├── sops-bundles/
|
||||||
|
└── tools/
|
||||||
|
```
|
||||||
|
|
||||||
|
This layout may be mounted as a single root or mapped into `/asl-host` with
|
||||||
|
additional authority directories.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Domains
|
||||||
|
|
||||||
|
Domain layout MUST follow ENC-ASL-HOST/1 under:
|
||||||
|
|
||||||
|
```
|
||||||
|
/asl-auth-host/domains/<domain-id>/
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Environment Claims
|
||||||
|
|
||||||
|
```
|
||||||
|
/asl-auth-host/env-claims/
|
||||||
|
```
|
||||||
|
|
||||||
|
Each claim MUST be stored as an immutable artifact, named by snapshot or
|
||||||
|
content hash.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. SOPS Bundles
|
||||||
|
|
||||||
|
```
|
||||||
|
/asl-auth-host/sops-bundles/
|
||||||
|
```
|
||||||
|
|
||||||
|
Bundles contain DAMs, receipts, and policy artifacts for offline transfer.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Tools
|
||||||
|
|
||||||
|
```
|
||||||
|
/asl-auth-host/tools/
|
||||||
|
```
|
||||||
|
|
||||||
|
Authority binaries and scripts SHOULD be versioned and treated as immutable.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Naming Conventions (Informative)
|
||||||
|
|
||||||
|
The following naming conventions are recommended for interop:
|
||||||
|
|
||||||
|
### 7.1 Store Blocks
|
||||||
|
|
||||||
|
```
|
||||||
|
<block-id>.bin
|
||||||
|
<block-id>.meta
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.2 Index Segments
|
||||||
|
|
||||||
|
```
|
||||||
|
segment-<n>.idx
|
||||||
|
bloom-<n>.bf
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.3 Log Files
|
||||||
|
|
||||||
|
```
|
||||||
|
log-<seq>.aol
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.4 Snapshots
|
||||||
|
|
||||||
|
```
|
||||||
|
snapshot-<id>.meta
|
||||||
|
snapshot-<id>.blocks
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.5 Certificates
|
||||||
|
|
||||||
|
```
|
||||||
|
root.pub
|
||||||
|
root.priv.enc
|
||||||
|
dam-signer.pub
|
||||||
|
dam-signer.priv.enc
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.6 Policies
|
||||||
|
|
||||||
|
```
|
||||||
|
policy-<hash>.json
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.7 DAM Artifacts
|
||||||
|
|
||||||
|
```
|
||||||
|
dam-<seq>.json.sig
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7.8 Environment Claims
|
||||||
|
|
||||||
|
```
|
||||||
|
<snapshot-id>.claim
|
||||||
|
```
|
||||||
|
|
||||||
|
Environment claims SHOULD include:
|
||||||
|
|
||||||
|
* OS image hash
|
||||||
|
* Boot environment info
|
||||||
|
* Installed tool hashes
|
||||||
|
* Store checksum at snapshot
|
||||||
|
|
||||||
|
### 7.9 SOPS Bundles
|
||||||
|
|
||||||
|
Bundles SHOULD include checksums for integrity validation.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Versioning
|
||||||
|
|
||||||
|
Backward-incompatible layout changes MUST bump the major version.
|
||||||
239
ops/enc-asl-host-1.md
Normal file
239
ops/enc-asl-host-1.md
Normal file
|
|
@ -0,0 +1,239 @@
|
||||||
|
# ENC-ASL-HOST/1 - On-Disk Layout for ASL/HOST
|
||||||
|
|
||||||
|
Status: Draft
|
||||||
|
Owner: Architecture
|
||||||
|
Version: 0.1.0
|
||||||
|
SoT: No
|
||||||
|
Last Updated: 2026-01-17
|
||||||
|
Tags: [ops, host, layout]
|
||||||
|
|
||||||
|
**Document ID:** `ENC-ASL-HOST/1`
|
||||||
|
**Layer:** O1E - Host layout profile (storage-agnostic)
|
||||||
|
|
||||||
|
**Depends on (normative):**
|
||||||
|
|
||||||
|
* `ASL/HOST/1`
|
||||||
|
* `ASL/1-STORE`
|
||||||
|
* `ASL/LOG/1`
|
||||||
|
|
||||||
|
**Informative references:**
|
||||||
|
|
||||||
|
* `ASL/DAM/1`
|
||||||
|
* `ASL/DAP/1`
|
||||||
|
* `ENC-ASL-LOG`
|
||||||
|
* `ENC-ASL-CORE-INDEX`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 0. Conventions
|
||||||
|
|
||||||
|
The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHOULD**, and **MAY** are to be
|
||||||
|
interpreted as in RFC 2119.
|
||||||
|
|
||||||
|
This document defines directory and file placement only. It does not define
|
||||||
|
byte-level encodings or storage engine internals.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Purpose and Scope
|
||||||
|
|
||||||
|
ENC-ASL-HOST/1 specifies a minimal, storage-agnostic on-disk layout for
|
||||||
|
ASL/HOST implementations. It standardizes where host metadata, domain data,
|
||||||
|
logs, and snapshots live.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Root Layout
|
||||||
|
|
||||||
|
```
|
||||||
|
/asl-host/
|
||||||
|
├── host/
|
||||||
|
├── domains/
|
||||||
|
├── federation/
|
||||||
|
└── quarantine/
|
||||||
|
```
|
||||||
|
|
||||||
|
All host-managed state MUST live under `/asl-host`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Host-Level Metadata
|
||||||
|
|
||||||
|
```
|
||||||
|
/asl-host/host/
|
||||||
|
├── host-id
|
||||||
|
├── host-policy
|
||||||
|
└── trusted-roots/
|
||||||
|
```
|
||||||
|
|
||||||
|
* `host-id` is a stable identifier for the host.
|
||||||
|
* `host-policy` contains local policy constraints.
|
||||||
|
* `trusted-roots/` contains offline trust anchors.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Domain Root
|
||||||
|
|
||||||
|
Each domain has a single root directory:
|
||||||
|
|
||||||
|
```
|
||||||
|
/asl-host/domains/<domain-id>/
|
||||||
|
```
|
||||||
|
|
||||||
|
Nothing outside this directory MAY be interpreted as part of the domain state.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Domain Descriptor
|
||||||
|
|
||||||
|
```
|
||||||
|
/asl-host/domains/<domain-id>/domain.json
|
||||||
|
```
|
||||||
|
|
||||||
|
The descriptor contains host-derived metadata (not signed):
|
||||||
|
|
||||||
|
```
|
||||||
|
{
|
||||||
|
"domain_id": "...",
|
||||||
|
"state": "COURTESY|FULL|SUSPENDED|REVOKED",
|
||||||
|
"created_at": "...",
|
||||||
|
"admitted_at": "...",
|
||||||
|
"root_key_fingerprint": "...",
|
||||||
|
"policy_hash": "...",
|
||||||
|
"current_snapshot": "...",
|
||||||
|
"current_logseq": 0
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Admission Records
|
||||||
|
|
||||||
|
```
|
||||||
|
/asl-host/domains/<domain-id>/admission/
|
||||||
|
├── dam.cbor
|
||||||
|
├── dam.sig
|
||||||
|
├── admission-request.cbor
|
||||||
|
├── admission-decision.cbor
|
||||||
|
└── admission-decision.sig
|
||||||
|
```
|
||||||
|
|
||||||
|
Admission records are immutable and MUST be retained.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Authority Material
|
||||||
|
|
||||||
|
```
|
||||||
|
/asl-host/domains/<domain-id>/auth/
|
||||||
|
├── root.pub
|
||||||
|
├── operators/
|
||||||
|
├── device.pub
|
||||||
|
└── revocations/
|
||||||
|
```
|
||||||
|
|
||||||
|
Private keys MAY exist only temporarily and SHOULD NOT be required for
|
||||||
|
steady-state operation.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Store Area
|
||||||
|
|
||||||
|
```
|
||||||
|
/asl-host/domains/<domain-id>/store/
|
||||||
|
├── blocks/
|
||||||
|
│ ├── open/
|
||||||
|
│ ├── sealed/
|
||||||
|
│ └── gc/
|
||||||
|
├── objects/
|
||||||
|
└── encryption/
|
||||||
|
```
|
||||||
|
|
||||||
|
* `open/` blocks are writable and may be lost on crash.
|
||||||
|
* `sealed/` blocks are immutable.
|
||||||
|
* `gc/` is host-managed reclaim staging.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. Index Area
|
||||||
|
|
||||||
|
```
|
||||||
|
/asl-host/domains/<domain-id>/index/
|
||||||
|
├── segments/
|
||||||
|
├── bloom/
|
||||||
|
└── tmp/
|
||||||
|
```
|
||||||
|
|
||||||
|
Segment encodings are defined by `ENC-ASL-CORE-INDEX`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. Log Area
|
||||||
|
|
||||||
|
```
|
||||||
|
/asl-host/domains/<domain-id>/log/
|
||||||
|
```
|
||||||
|
|
||||||
|
Log records and envelopes are defined by `ENC-ASL-LOG`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 11. Snapshot Area
|
||||||
|
|
||||||
|
```
|
||||||
|
/asl-host/domains/<domain-id>/snapshots/
|
||||||
|
```
|
||||||
|
|
||||||
|
Snapshot metadata MUST include the log sequence boundary and segment set used
|
||||||
|
for deterministic replay.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 12. Leases
|
||||||
|
|
||||||
|
```
|
||||||
|
/asl-host/domains/<domain-id>/leases/
|
||||||
|
```
|
||||||
|
|
||||||
|
Courtesy lease metadata is stored here and MUST NOT be interpreted by
|
||||||
|
ASL/1-STORE.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 13. Temporary Workspace
|
||||||
|
|
||||||
|
```
|
||||||
|
/asl-host/domains/<domain-id>/tmp/
|
||||||
|
```
|
||||||
|
|
||||||
|
The host MAY use this directory for temporary, non-authoritative files.
|
||||||
|
It MUST NOT be required for deterministic replay.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 14. Federation (Optional)
|
||||||
|
|
||||||
|
```
|
||||||
|
/asl-host/federation/
|
||||||
|
├── peers/
|
||||||
|
├── exports/
|
||||||
|
└── imports/
|
||||||
|
```
|
||||||
|
|
||||||
|
Federation caches are optional and MUST NOT change local domain state.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 15. Quarantine
|
||||||
|
|
||||||
|
```
|
||||||
|
/asl-host/quarantine/
|
||||||
|
```
|
||||||
|
|
||||||
|
Untrusted or failed admissions MAY be staged here for inspection.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 16. Versioning
|
||||||
|
|
||||||
|
Backward-incompatible layout changes MUST bump the major version.
|
||||||
Loading…
Reference in a new issue