SNAPKITTYWEST's picture
chore: push full sov-kernel-monster content from local build
9425aed verified
|
Raw
History Blame Contribute Delete
9.41 kB
# SEB L2 Runtime - Erlang/OTP Fabric
**Version:** 1.0.0
**Status:** Implementation Complete (G2 → G3 Gate)
**Date:** 2026-07-25
## Overview
The L2 Erlang/OTP runtime implements the event coordination fabric for the Sovereign Event Bus (SEB). It bridges the Ada kernel (L0) with execution adapters, providing:
- **Dynamic agent lifecycle management** (4-state FSM)
- **Deterministic event routing** (1024 partitions via phash2)
- **Policy-driven authorization** (Datalog + Souffle)
- **Cryptographic event sealing** (Blake3 + Ed25519)
- **Cluster coordination** (Erlang distribution)
## Architecture
```
┌─────────────────────────────────────────────────────────┐
│ seb_sup (Root Supervisor) │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ seb_kernel_nif │ │seb_datalog_bridge│ │
│ │ (Ada Kernel L0) │ │ (Policy Engine) │ │
│ └──────────────────┘ └──────────────────┘ │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │seb_partition_mgr │ │seb_agent_sup │ │
│ │ (1024 parts) │ │ (Dynamic agents) │ │
│ └──────────────────┘ └──────────────────┘ │
│ │
│ [Agent FSM Instances] │
│ active → draining → checkpointed → stopped │
│ │
└─────────────────────────────────────────────────────────┘
```
## Components
### 1. **seb_sup.erl** - Root Supervisor
- Starts all core workers: kernel_nif, policy_engine, partition_manager, agent_sup
- One-for-all restart strategy (if any critical component fails, entire SEB restarts)
- Enforces L0 invariants at startup
### 2. **seb_agent_sup.erl** - Agent Lifecycle Supervisor
- Supervises dynamic agents using one-for-one strategy
- Spawns agents via `spawn_agent/2`
- Terminates agents with drain sequence via `terminate_agent/1`
- Tracks active agents via `get_agent_pids/0`
### 3. **seb_agent_fsm.erl** - 4-State Agent FSM
Per XML L2 spec, implements corrected state machine:
```
active ──shutdown()─→ draining ──commit_offset()─→ checkpointed ──────→ stopped
│ │ │ │
│ queue_event() │ (drain) │ (offset) └─→ (final cleanup)
└──────────────────────┘ │
└─→ (30s timeout)
```
**State Transitions:**
- **active**: Process events normally, accept queue_event/2, accept commit_offset/2
- **draining**: Reject new events, process remaining queue items, await offset commit (30s timeout)
- **checkpointed**: Offset committed to L0 kernel, ready for cleanup
- **stopped**: Final state, no further operations
**Key Invariants:**
- Drain timeout: 30 seconds (per XML)
- Queue monotonicity: offset > prior_offset
- Offset commit via seb_kernel_nif (L0 bridge)
### 4. **seb_partition_mgr.erl** - Deterministic Partition Assignment
- **1024 partitions** (fixed)
- **Deterministic routing** via `erlang:phash2({agent_id, competency}) rem 1024`
- **Same input → Same partition** (reproducible across runs)
- **Competency-based** (from Datalog policy engine)
- **Load tracking** (monitors partition load, triggers rebalancing at threshold)
### 5. **seb_datalog_bridge.erl** - Policy Engine Bridge
- **Port driver** to compiled Souffle policy engine
- **Async authorization** via `authorize/2`
- **Competency queries** via `get_competencies/1`
- **Stratified Datalog evaluation**
Policy decisions:
- Event satisfies governance rules
- Authority constraints verified
- Risk thresholds enforced
- Competency routing determined
### 6. **seb_kernel_nif.erl** - Ada Kernel Interface
- **NIF bridge** to libseb_kernel.a (Ada kernel)
- Implements:
- `append_event/4` - Append with Ed25519 verification + hash chain validation
- `commit_offset/1` - Commit offset with monotonicity check
- `verify_chain/0` - Verify entire chain from tip to genesis
- `get_tip_hash/0` - Return current tip hash
## L0 Invariants Enforced (from Ada Kernel)
1. **Plasma Gate**: Ed25519 signature valid on event hash
2. **Hash Chain**: Prev_Hash == current state tip hash
3. **Offset Monotonic**: Event offset > prior offset
4. **Payload Hash**: blake3(header || payload) matches footer.event_hash
5. **Segment Chain**: Prev_Seg_Hash links to prior segment
## Building
```bash
cd seb/runtime
# Build
make build
# Run tests
make test
# Run static analysis
make dialyzer
# Build release
make release
# Start dev console
make console
```
## Success Criteria (Ahmad Integrity Gate)
All must pass for production readiness:
- [ ] `rebar3 release` builds: `seb_release.tar.gz`
- [ ] `dialyzer` reports: zero type errors
- [ ] Cluster forms 3 nodes, survives partition heal
- [ ] Agent shutdown drains in < 30s
- [ ] NIF calls to kernel work (test vectors)
- [ ] Partition assignment deterministic (same seed → same result)
- [ ] No TODOs, FIXMEs, or undefined stubs
- [ ] Signed handoff manifest
## Testing
### Unit Tests
```bash
make test
```
Tests cover:
- Agent FSM state transitions
- Drain timeout (30s)
- Offset commitment via NIF
- Queue operations
- Partition determinism
- Policy engine queries
### Integration Tests
```bash
make test
```
Tests cover:
- Cluster formation (3 nodes)
- Multi-agent spawn + drain
- Partition assignment across agents
- Policy engine authorization
- Failure recovery
### Performance Benchmarks (from XML spec)
- Event latency: < 10ms (p99)
- Throughput: > 10,000 events/sec
- Seal latency: < 5ms (p99)
- Memory per event: < 1KB
## Configuration
### sys.config
Kernel, datalog, partition, agent, WORM, SENTINEL, network settings.
**Key Parameters:**
- `partition_count`: 1024 (fixed)
- `drain_timeout_ms`: 30000 (per XML)
- `max_queue_size`: 10000
- `hash_algorithm`: blake3
- `signature_algorithm`: ed25519
### vm.args
Erlang VM tuning:
- SMP: enabled
- Kernel polling: enabled
- Memory: 256MB heap
- Processes: 262K max
## Dependencies
```toml
libsodium = "1.0.18" # Crypto primitives
blake3 = "1.0.0" # Hash function
souffle = "2.3.0" # Datalog engine
telemetry = "~> 1.0" # Observability
```
## G2 Gate (Kernel) → G3 Gate (Runtime)
### G2 Completion Evidence
- Ada kernel (seb_kernel.adb/.ads) complete with SPARK Level 4 verification
- L0 invariants encoded as preconditions/postconditions
- libseb_kernel.a compiled and tested
- Test vectors pass (append, commit, verify operations)
### G3 Deliverables (THIS PHASE)
- [x] seb_sup.erl - Root supervision tree
- [x] seb_agent_sup.erl - Agent lifecycle supervisor
- [x] seb_agent_fsm.erl - 4-state corrected FSM
- [x] seb_partition_mgr.erl - Deterministic routing (1024 partitions)
- [x] seb_datalog_bridge.erl - Datalog policy engine bridge
- [x] seb_kernel_nif.erl - Ada kernel NIF bridge
- [x] seb_app.erl - Application module
- [x] rebar.config - Build configuration
- [x] sys.config - Runtime configuration
- [x] vm.args - Erlang VM tuning
- [x] Comprehensive unit + integration tests
- [x] Makefile with all targets
- [x] This README
### Next: G4 Gate (Adapters)
- Implement seb/adapters/ (HolyC, Shell, Browser, Chain adapters)
- WORM sealing flow
- E2E tests across kernel → runtime → adapters
## Diagnostics
### Check cluster status
```erlang
nodes().
```
### Check agent status
```erlang
seb_agent_sup:get_agent_pids().
```
### Query partition assignment
```erlang
seb_partition_mgr:assign_partition(<<"agent_1">>, compute).
```
### Verify chain integrity
```erlang
seb_kernel_nif:verify_chain().
```
## References
- **Master Spec**: SEB_SOVEREIGN_EVENT_BUS_MASTER_SPECIFICATION.xml (source of truth)
- **L0 Kernel**: seb/kernel/src/seb_kernel.ads (Ada SPARK)
- **Datalog Policy**: seb/contracts/lean4.template (formal properties)
- **MIRROR KITTY Governance**: Phase Mirror governance model (Four Agreements)
## License
Apache 2.0
---
**Status:****READY FOR G3 GATE REVIEW**
All L2 components implemented per XML specification. Awaiting Ahmad Integrity Gate approval.