226 lines
4.9 KiB
Markdown
226 lines
4.9 KiB
Markdown
Perfect! Here’s a draft specification for **ENC-ASL-AUTH-HOST v0.1**, the **on-disk layout and encoding** for the authority host. This complements ASL-AUTH-HOST by formalizing **how artifacts, blocks, logs, snapshots, and certificates are stored**.
|
||
|
||
---
|
||
|
||
# ENC-ASL-AUTH-HOST v0.1 — On-Disk Layout
|
||
|
||
## 1. Purpose
|
||
|
||
Defines the **physical and logical layout** of an ASL authority host’s storage.
|
||
Ensures:
|
||
|
||
* Deterministic artifact placement
|
||
* Snapshot-aware storage
|
||
* Offline-first operation
|
||
* Compatibility with ASL-HOST, PERs, and SOPS bundles
|
||
|
||
---
|
||
|
||
## 2. Root Layout
|
||
|
||
```
|
||
/asl-auth-host/
|
||
├─ /domains/
|
||
│ ├─ <domain-id>/
|
||
│ │ ├─ /store/
|
||
│ │ ├─ /log/
|
||
│ │ ├─ /snapshots/
|
||
│ │ ├─ /certs/
|
||
│ │ ├─ /policies/
|
||
│ │ └─ /dam/
|
||
├─ /tools/
|
||
│ └─ <binary-tools> # deterministic, versioned rescue/auth tools
|
||
├─ /env-claims/
|
||
│ └─ <snapshot-hash>.claim
|
||
└─ /sops-bundles/
|
||
└─ <bundle-id>.sops
|
||
```
|
||
|
||
---
|
||
|
||
## 3. Domains Directory
|
||
|
||
**`/domains/<domain-id>/`** contains all **domain-specific storage and authority artifacts**.
|
||
|
||
### 3.1 Store
|
||
|
||
```
|
||
/domains/<domain-id>/store/
|
||
├─ blocks/
|
||
│ ├─ <block-id>.bin # raw artifact bytes
|
||
│ └─ <block-id>.meta # metadata: size, type_tag, sealed_flag
|
||
├─ indices/
|
||
│ ├─ segment-<n>.idx # ASL-STORE index segments
|
||
│ └─ bloom-<n>.bf # optional bloom filters
|
||
```
|
||
|
||
* Each block is **immutable once sealed**
|
||
* Segment indices point to block IDs and offsets
|
||
* Encoding follows **ASL-STORE-INDEX + ENC-ASL-STORE(-INDEX)** rules
|
||
|
||
---
|
||
|
||
### 3.2 Log
|
||
|
||
```
|
||
/domains/<domain-id>/log/
|
||
├─ log-<seq>.aol # append-only log files
|
||
```
|
||
|
||
* Each log record contains:
|
||
|
||
* Artifact additions
|
||
* DAM signatures
|
||
* Snapshot seals
|
||
* Tombstone records
|
||
* Deterministic replay reconstructs **CURRENT** state
|
||
|
||
---
|
||
|
||
### 3.3 Snapshots
|
||
|
||
```
|
||
/domains/<domain-id>/snapshots/
|
||
├─ snapshot-<id>.meta
|
||
├─ snapshot-<id>.blocks # optional reference map
|
||
```
|
||
|
||
* Snapshot metadata includes:
|
||
|
||
* Logseq boundary
|
||
* Sealed segments
|
||
* Block references
|
||
* Environment claim artifact reference
|
||
* Snapshots are **immutable**
|
||
|
||
---
|
||
|
||
### 3.4 Certificates
|
||
|
||
```
|
||
/domains/<domain-id>/certs/
|
||
├─ root.pub # root public key
|
||
├─ root.priv.enc # encrypted private key
|
||
├─ dam-signer.pub # optional signing key for DAMs
|
||
├─ dam-signer.priv.enc
|
||
```
|
||
|
||
* All private keys are encrypted and **never leave offline host**
|
||
* Public keys are referenced in DAM artifacts
|
||
|
||
---
|
||
|
||
### 3.5 Policies
|
||
|
||
```
|
||
/domains/<domain-id>/policies/
|
||
├─ policy-<hash>.json
|
||
```
|
||
|
||
* Policy hash stored as artifact
|
||
* Policies include:
|
||
|
||
* Domain admission rules
|
||
* Courtesy leases
|
||
* GC / retention rules
|
||
|
||
---
|
||
|
||
### 3.6 Domain Admission Manifests (DAM)
|
||
|
||
```
|
||
/domains/<domain-id>/dam/
|
||
├─ dam-<seq>.json.sig # signed DAM artifact
|
||
```
|
||
|
||
* Each DAM artifact contains:
|
||
|
||
* Domain ID
|
||
* Root key fingerprint
|
||
* Policy hash
|
||
* Courtesy lease info (optional)
|
||
* Signed by root key
|
||
|
||
---
|
||
|
||
## 4. Tools
|
||
|
||
```
|
||
/tools/
|
||
├─ asl-auth-host # main authority binary
|
||
├─ asl-rescue # SystemRescue patched tools
|
||
└─ sops # for offline bundle creation
|
||
```
|
||
|
||
* Versioned, deterministic, immutable binaries
|
||
* Executables stored as ASL artifacts if desired
|
||
|
||
---
|
||
|
||
## 5. Environment Claims
|
||
|
||
```
|
||
/env-claims/
|
||
├─ <snapshot-id>.claim
|
||
```
|
||
|
||
* Contains:
|
||
|
||
* OS image hash
|
||
* Boot environment info
|
||
* Installed tool hashes
|
||
* ASL-HOST store checksum at snapshot
|
||
* Stored as artifact and optionally signed by root key
|
||
|
||
---
|
||
|
||
## 6. SOPS Bundles
|
||
|
||
```
|
||
/sops-bundles/
|
||
├─ <bundle-id>.sops
|
||
```
|
||
|
||
* Encrypted container for DAMs, PER receipts, and optionally policies
|
||
* Can be delivered to new nodes for **admission or rescue**
|
||
* Includes checksums for integrity
|
||
|
||
---
|
||
|
||
## 7. Encoding Conventions
|
||
|
||
1. **Blocks**: `<block-id>.bin` (raw bytes), accompanied by `<block-id>.meta`
|
||
2. **Indices**: segment-based index; segment files immutable after seal
|
||
3. **Log**: append-only, each entry:
|
||
|
||
* `logseq | artifact_key | block_ref | type_tag | operation | signature`
|
||
4. **Snapshots**: snapshot ID derived from hash of CURRENT log + block refs
|
||
5. **Certificates**: PEM or ASL-artifact wrapped keys
|
||
6. **SOPS Bundles**: standard encrypted JSON/YAML with embedded checksums
|
||
|
||
---
|
||
|
||
## 8. Security Notes
|
||
|
||
* Private keys must **never be exposed** or included in SOPS bundles unencrypted
|
||
* Blocks in store may be encrypted with **per-domain keys**
|
||
* Environment claims ensure **proof of offline execution**
|
||
* DAMs must be signed to be trusted
|
||
|
||
---
|
||
|
||
This layout allows the **authority host** to:
|
||
|
||
* Bootstrap personal or group domains
|
||
* Accept rescued artifacts
|
||
* Produce deterministic PERs and snapshots
|
||
* Create SOPS bundles for new nodes
|
||
* Operate fully offline
|
||
|
||
---
|
||
|
||
If you want, I can **draw a full diagram showing the ENC-ASL-AUTH-HOST tree, block-flow, snapshot integration, and PER generation**, so it’s easier to visualize the data flow during rescue or admission.
|
||
|
||
Do you want me to make that diagram next?
|
||
|