amduat-api/notes/PEL-Integrated Execution Model with ASL + TGK.md
2026-01-17 00:19:49 +01:00

206 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Absolutely — heres a **formal draft for integrating PEL deterministic DAG programs with the ASL + TGK execution plan**, including how PEL outputs feed into operators, while preserving snapshot safety, determinism, and memory efficiency.
---
# PEL-Integrated Execution Model with ASL + TGK
---
## 1. Purpose
This specification defines:
1. How **PEL programs** (deterministic DAG programs) are executed in conjunction with **ASL artifacts** and **TGK edges**.
2. How **PEL outputs (execution receipts)** feed into **index operators**.
3. How **snapshot safety, determinism, and DAG traversal** are preserved across layers.
4. Integration of **sharding, SIMD acceleration, and tombstone shadowing** in a unified execution model.
---
## 2. Key Concepts
* **PEL Program (PP)**: A deterministic DAG with **input artifacts**, **output artifacts**, and **computational nodes** (concat, slice, primitive ops).
* **PEL Execution Receipt (PER)**: Artifact recording program execution, including:
* Inputs consumed
* Outputs produced
* Canonical logseq / snapshot
* **Index Operators**: SegmentScan, IndexFilter, Merge, TGKTraversal, TombstoneShadow, Projection, Aggregation.
* **Snapshot Safety**: All reads of artifacts or TGK edges are constrained to `logseq ≤ snapshot`.
* **Determinism**: Execution order is fixed by **logseq ascending + canonical tie-breaker**.
---
## 3. Integration Principles
### 3.1 PEL Program Execution as Input
1. PEL program outputs (PER artifacts) are treated as **ASL artifacts** in execution plans.
2. Operators can consume **either raw artifacts or PERs**.
3. If the execution plan requires DAG traversal of PER-derived edges, treat **PER as a TGK edge node**.
```text
PEL program outputs → PER artifact → SegmentScan → IndexFilter → TGKTraversal
```
---
### 3.2 Deterministic DAG Mapping
1. Each PEL DAG node corresponds to a **logical operator in the execution plan**.
2. Execution plan DAG integrates **PEL DAG nodes** as **virtual operators**:
* Input nodes → SegmentScan / IndexFilter
* Computation nodes → Projection / Aggregation
* Outputs → Artifact storage in ASL
---
### 3.3 Snapshot Propagation
* **Input artifacts** for PEL programs are fetched with snapshot bounds:
```
artifact.logseq ≤ program.snapshot
```
* **Output PER artifacts** are written with:
```
logseq = max(input_logseq) + 1
```
* All downstream index operators inherit **snapshot constraints**.
---
## 4. Runtime Integration Flow
1. **Load PEL Program DAG**
* Validate deterministic operators
* Identify **input artifacts** (raw or PER)
2. **Execute PEL Program**
* Evaluate primitives (concat, slice, etc.)
* Generate output artifacts (PER)
* Each primitive produces deterministic outputs
3. **Register Outputs in Index**
* PER artifacts are **visible to SegmentScan**
* Type tag and canonical ID added to **shard-local buffers**
4. **Execute Index Operators**
* SegmentScan → IndexFilter → TGKTraversal
* Merge shards deterministically
* Apply TombstoneShadow
* Projection/Aggregation
5. **Return Results**
* Combined output includes:
* Raw ASL artifacts
* PER artifacts
* TGK traversal outputs
---
## 5. Pseudocode Sketch
```c
void ExecutePELProgramWithIndex(PELProgram *pp, snapshot_range_t snapshot, record_buffer_t *final_output) {
// Step 1: Load inputs (artifacts or PERs)
record_buffer_t input_buffer;
LoadPELInputs(pp->inputs, snapshot, &input_buffer);
// Step 2: Execute PEL DAG
record_buffer_t per_buffer;
ExecutePEL(pp, &input_buffer, snapshot, &per_buffer);
// Step 3: Register PERs in ASL/TGK buffers
record_buffer_t combined_buffer;
Merge(&input_buffer, &per_buffer, 2, &combined_buffer);
// Step 4: Run Index Operators
exec_plan_t *plan = BuildExecutionPlan(pp, &combined_buffer);
ExecutePlan(plan, snapshot, final_output);
}
```
* `LoadPELInputs` ensures **snapshot safety**
* `ExecutePEL` guarantees **deterministic outputs**
* `Merge` maintains **logseq + canonical ordering**
* `ExecutePlan` runs **ASL/TGK index operators with SIMD/shard acceleration**
---
## 6. Determinism Guarantees
1. **PEL DAG evaluation** deterministic per program snapshot
2. **PER artifacts** incorporated with canonical ID + logseq
3. **SegmentScan, Merge, TGKTraversal** maintain global ordering
4. **TombstoneShadow** ensures no resurrection of deleted artifacts
5. **SIMD/shard parallelism** does not affect final order
---
## 7. Memory Layout Integration
* PER artifacts stored in **shard-local buffers** alongside raw artifacts
* Type tags and canonical IDs mapped for **SIMD filtering**
* TGK traversal buffers extended to include **PER edges** where needed
* Snapshot ranges propagated to all buffers
```c
struct shard_buffer {
uint64_t *artifact_ids;
uint64_t *tgk_edge_ids;
uint32_t *type_tags;
uint8_t *roles;
uint64_t count;
snapshot_range_t snapshot;
};
```
---
## 8. DAG Operator Mapping Summary
| PEL DAG Node | Index Operator Equivalent | Notes |
| ------------------- | ------------------------- | ------------------------------ |
| Input Artifact | SegmentScan | Snapshot-limited |
| Concat / Slice | Projection | Deterministic fields selected |
| TGK Projection | TGKTraversal | DAG traversal depth controlled |
| Aggregate | Aggregation | Counts, sums, unions |
| PER Artifact Output | SegmentScan | Feed into downstream operators |
---
## 9. Federation & Multi-Machine Considerations
* PER artifacts can be **federated across nodes**
* Deterministic execution ensures **replayable results**
* Shard/SIMD acceleration applied locally
* Snapshot boundaries propagated across federation nodes
---
## 10. Summary
This integration:
* Treats **PEL programs as first-class DAG nodes** in execution plans
* Allows **PER artifacts** to feed seamlessly into index operators
* Preserves **snapshot safety, determinism, and shard/SIMD acceleration**
* Fully unifies **PEL execution** with **ASL artifact and TGK edge indexing**
* Enables **federated, replayable execution** across machines
---
Next step could be to **formalize federation propagation rules and cross-node deterministic replay**, ensuring PER artifacts are synchronized across pools and snapshots.
Do you want me to draft that next?