5.2 KiB
5.2 KiB
## 1. Layered Overview (Bottom-Up)
┌─────────────────────────────┐
│ Federation Layer │
│ - Domains (local / remote) │
│ - Published vs internal │
│ - Cross-domain references │
│ - Federated snapshots │
└─────────────┬──────────────┘
│
┌─────────────▼──────────────┐
│ Provenance / PEL │
│ - Execution receipts │
│ - DAG execution │
│ - Deterministic traces │
│ - PEL-PROV / PEL-TRACE │
└─────────────┬──────────────┘
│
┌─────────────▼──────────────┐
│ Current / Snapshot Logic │
│ - Checkpoint + append-only│
│ log → reconstruct CURRENT│
│ - Snapshot identity │
└─────────────┬──────────────┘
│
┌─────────────▼──────────────┐
│ Index Layer │
│ - ASL-CORE-INDEX │
│ • Artifact → Block │
│ • Shadowing / tombstones│
│ - ASL-STORE-INDEX │
│ • Block sealing │
│ • Retention / GC │
│ • Small/Large packing │
│ - ENC-ASL-CORE-INDEX │
│ • On-disk record layout│
│ • Domain / visibility │
└─────────────┬──────────────┘
│
┌─────────────▼──────────────┐
│ Artifact Storage Layer (ASL) │
│ - Blocks (immutable) │
│ - BlockID → bytes mapping │
│ - Small / large block handling│
│ - ZFS snapshot integration │
│ - Append-only write log │
└───────────────────────────────┘
2. Key Data Flows
2.1 Artifact Ingestion
-
Artifact created → broken into blocks (small or large).
-
Blocks stored in ASL (immutable).
-
Index record created:
ArtifactKey → { (BlockID, offset, length), DomainID, Visibility } -
Segment sealed → snapshot + log appended → CURRENT updated.
2.2 PEL Execution
- PEL program DAG consumes artifacts (or receipts) from index.
- Execution produces new artifacts → stored in ASL.
- Receipts are generated → added to provenance trace.
- Deterministic mapping preserved via index and snapshots.
2.3 Provenance Tracking
-
Each artifact references:
- Producing DAG program
- Input artifacts (local or cross-domain published)
- Snapshot in which artifact was created
-
Trace graphs allow deterministic replay and verification.
2.4 Federation / Multi-Domain
- Domain-local artifacts: internal, invisible externally.
- Published artifacts: visible to other domains, read-only.
- Cross-domain references tracked in index (
CrossDomainSource). - Federated snapshots reconstructed by combining local + imported published artifacts.
2.5 Garbage Collection & Retention
-
Blocks are pinned by:
- CURRENT in snapshots
- Published artifacts
- Tombstones for shadowed artifacts
-
GC may reclaim unreachable blocks without breaking provenance.
-
Small packed blocks require careful per-artifact tracking.
3. Determinism & Guarantees
| Layer | Determinism / Safety |
|---|---|
| ASL | Blocks immutable; snapshot + log deterministic |
| Index | Artifact → Block mapping stable per snapshot |
| PEL | DAG execution deterministic per artifact + snapshot |
| Provenance | Trace fully reconstructs execution DAG |
| Federation | Published artifact references deterministic across domains |
4. Encoding & Storage
- Segments: units of storage with multiple records
- Records:
(ArtifactKey, BlockID, offset, length, DomainID, Visibility, CrossDomainSource) - Tombstones: track deleted/shadowed artifacts with domain/visibility metadata
- Small/Large block packing: store-level optimization, index unaffected
- ZFS snapshots: checkpoint state, append-only log ensures CURRENT reconstruction
5. Notes
- Small vs Large block handling: purely store-layer optimization
- Domain visibility: encoded in index, used for filtering CURRENT per domain
- Cross-domain references: read-only, preserve provenance, deterministic
- Execution receipts: stored as artifacts, may be consumed by other DAGs
This diagram and flow description captures:
- All layers from storage → index → PEL → provenance → federation
- Deterministic reconstruction from checkpoint + append-only log
- Block semantics, small/large handling, and domain visibility
- Integration of execution receipts into artifact flows and traces