Research-Stack/4-Infrastructure/infra/embedded_surface/mnn/README.md

80 lines
2 KiB
Markdown

# Morphic Neural Network Router
Low-level adaptive routing between LUT admission and GCL codons.
## Architecture Position
```
surface shell (UDP/onion/Ethernet/serial/ipv923u)
scale-invariant 1D scalar
LUT admission (ultra-compressed codon lookup)
MNN routing layer (adaptive path formation)
GCL codon/action (lawful state transition)
```
## Key Features
- **Morphic routing**: Adapts based on historical outcomes
- **Goal-aware**: Routes based on packet goal (health, attest, compress, route, recover)
- **State-constrained**: Considers memory, CPU, recovery mode, trust score
- **Carrier-agnostic**: Works with any shell (UDP, Ethernet, onion, serial, future protocols)
- **Cost-aware**: Minimizes energy, time, and bandwidth cost
## Usage
```python
from mnn_router import MorphicRouter, ScalarInput, NodeState, CarrierMetrics
router = MorphicRouter(max_history=16)
scalar = ScalarInput(domain=1, scalar=10) # attest operation
state = NodeState(
memory_budget_mb=715,
memory_used_mb=100,
cpu_load=0.3,
recovery_mode=False,
trust_score=0.9,
uptime_seconds=3600,
)
carrier = CarrierMetrics(
shell="ethernet",
latency_ms=1.0,
loss_rate=0.0,
bandwidth_kbps=100000,
encrypted=False,
)
decision = router.route_with_adaptation(scalar, state, carrier)
print(f"Action: {decision.action}")
print(f"GCL Codon: 0x{decision.gcl_codon:02X}")
print(f"Reason: {decision.reason}")
# Update history after execution
router.update_history("attest", state, carrier, success=True)
```
## Build and Test
```bash
make test
```
## Memory Constraints
For 8 KB RAM targets, the MNN uses:
- Pre-allocated routing tables (no dynamic allocation)
- Coarse-grained state signatures (3-bit quantization)
- Tiny history cache (last 16 entries)
- Fixed-point arithmetic (Q8.8 or Q16.16)
## Integration
See IBM II controller integration example in `../ibmii/ibmii_mnn_controller.py`.
## Spec
See `../../docs/specs/MORPHIC_NEURAL_NETWORK_ROUTING_SPEC.md`.