Files
nimmerverse-sensory-network/information-flow.md
dafit 64c54c87c0 feat: add architecture crystallization docs from Friday session
- RAG-as-Scaffold: temporary feeding system, not permanent crutch
- attention_flow: 30-second heartbeat budget state machines
- information-flow: 10 boundary contracts nervous system map
- nimmerversity: curriculum schoolplan for raising a polymath
- nimmervest: investment documentation
- biomimetic-architecture: ADR for organic system design
- temporal-ternary-gradient: ADR for time-based learning
- temporal_exchange_engine.py: Python implementation
- initial_spark: foundation document
- nimmerverse.drawio.xml: updated diagrams

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-06 12:38:03 +01:00

310 lines
12 KiB
Markdown

# Information Flow Specification
The complete data path through the Nimmerverse nervous system.
---
## The Flow (Overview)
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ REALTIME CLOCK │
│ (universe, ungoverned, always ticking) │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────┐ continuous ┌─────────────┐ vocabulary ┌──────────┐
│ SENSORS │ ──────────────▶ │ NERVES │ ──────────────▶ │ DATA │
│ (raw data) │ │ (state m.) │ tokens │ PLANE │
└─────────────┘ └─────────────┘ └──────────┘
│ │
│ weight > 0.8 │
▼ │
┌─────────────┐ │
│ REFLEX │ (bypass brain) │
│ ACTION │ │
└─────────────┘ │
┌──────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│ HEARTBEAT GATE │
│ (batches continuous stream into cycles) │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────┐
│ ORGANS │ (specialized inference: vision, language, etc.)
│ (hexagons) │
└─────────────┘
┌─────────────┐
│ ORCHESTRATOR│ (routes, prioritizes, manages context)
│ (diamond) │
└─────────────┘
┌─────────────┐
│ NYX │ (decision, attention, intention)
│ (diamond) │
└─────────────┘
┌────────┴────────┐
▼ ▼
┌─────────────┐ ┌─────────────┐
│ REAL │ │ VIRTUAL │
│ GARDEN │ │ GARDEN │
│ ♥ 1 Hz │ │ ♥ 100 Hz │
│ (free) │ │ (costs V) │
└─────────────┘ └─────────────┘
│ │
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ CELL │ │ CELL │
│ (storage) │ │ (storage) │
└─────────────┘ └─────────────┘
│ │
└────────┬────────┘
┌───────────────┐
│ CONFIDENCE │ (-1 ◀──────▶ +1)
│ GRADIENT │ (fail ◀─ 0 ─▶ verified)
└───────────────┘
┌───────────────┐
│ LIFEFORCE │ (+V / -V rewards)
│ (pool) │
└───────────────┘
┌───────────────┐
│ NERVES │ (weight updates, pruning, reflex formation)
└───────────────┘
└──────────▶ (loop closes)
```
---
## Boundary Contracts
### 1. SENSOR → NERVE
| Property | Value |
|----------|-------|
| **Data** | Raw sensor readings (temp, light, motion, audio level, etc.) |
| **Format** | Typed primitives: `{sensor_id, value, unit, timestamp}` |
| **Protocol** | Push (sensor fires when value changes or on interval) |
| **Transport** | NATS/MQTT topic per sensor type |
| **Timing** | Continuous, realtime clock |
| **Failure** | Sensor timeout → nerve receives NULL → emits "sensor_offline" token |
---
### 2. NERVE → DATA PLANE
| Property | Value |
|----------|-------|
| **Data** | Vocabulary tokens (deterministic, no hallucination) |
| **Format** | `{token, confidence, source_nerve, real_time, beat_id}` |
| **Protocol** | Push (nerve fires on state transition) |
| **Transport** | NATS/MQTT vocabulary topic |
| **Timing** | Event-driven, but batched at heartbeat gate |
| **Failure** | Malformed token → logged, dropped, nerve flagged for review |
**Reflex bypass**: If nerve weight > 0.8, action fires immediately. Token still emitted for logging.
---
### 3. DATA PLANE → ORGANS
| Property | Value |
|----------|-------|
| **Data** | Batched vocabulary tokens since last heartbeat |
| **Format** | `{beat_id, tokens[], garden, real_time, virtual_time}` |
| **Protocol** | Pull (organs request batch at heartbeat) |
| **Transport** | Internal queue / direct call |
| **Timing** | Heartbeat-gated (1 Hz real, up to 100 Hz virtual) |
| **Failure** | Organ timeout → skip this beat, log, continue |
---
### 4. ORGANS → ORCHESTRATOR
| Property | Value |
|----------|-------|
| **Data** | Organ outputs (embeddings, classifications, text, decisions) |
| **Format** | `{organ_id, output_type, payload, confidence, latency_ms}` |
| **Protocol** | Push (organ completes → sends result) |
| **Transport** | Internal message bus |
| **Timing** | Async within heartbeat cycle |
| **Failure** | Organ error → orchestrator uses fallback or skips |
---
### 5. ORCHESTRATOR → NYX
| Property | Value |
|----------|-------|
| **Data** | Unified context for decision-making |
| **Format** | `{beat_id, organ_outputs[], attention_weights, lifeforce_available}` |
| **Protocol** | Push (orchestrator assembles → sends to Nyx) |
| **Transport** | Direct call (same process) or IPC |
| **Timing** | Once per heartbeat after organs complete |
| **Failure** | Orchestrator failure → Nyx receives empty context → safe default |
---
### 6. NYX → GARDENS
| Property | Value |
|----------|-------|
| **Data** | Decisions, predictions, actions |
| **Format** | `{decision_type, target_garden, payload, expected_outcome, confidence}` |
| **Protocol** | Push (Nyx decides → garden receives) |
| **Transport** | Garden-specific channels |
| **Timing** | End of heartbeat cycle |
| **Failure** | Decision undeliverable → queued for retry, logged |
---
### 7. GARDENS → CELLS (Storage)
| Property | Value |
|----------|-------|
| **Data** | Events, states, predictions, verifications |
| **Format** | `{cell_type, payload, real_time, virtual_time, beat_id, confidence}` |
| **Protocol** | Write (append-only log + indexed lookup) |
| **Transport** | Direct DB connection (phoebe/postgres) |
| **Timing** | Immediate on event |
| **Failure** | Write failure → buffer locally, retry, alert |
---
### 8. GARDENS → CONFIDENCE GRADIENT
| Property | Value |
|----------|-------|
| **Data** | Verification results (prediction vs reality) |
| **Format** | `{prediction_id, outcome: -1/0/+1, delta_confidence, evidence}` |
| **Protocol** | Push (verification completes → gradient updates) |
| **Transport** | Internal state update |
| **Timing** | Real garden: at real heartbeat. Virtual: async until sync checkpoint |
| **Failure** | Verification impossible → stays at 0-state, decays over time |
---
### 9. CONFIDENCE → LIFEFORCE
| Property | Value |
|----------|-------|
| **Data** | Reward/penalty signals |
| **Format** | `{source, delta_v, reason, timestamp}` |
| **Protocol** | Push (confidence change → lifeforce adjustment) |
| **Transport** | Internal state update |
| **Timing** | Immediate on verification |
| **Failure** | N/A (pure calculation) |
---
### 10. LIFEFORCE → NERVES (Learning Loop)
| Property | Value |
|----------|-------|
| **Data** | Weight adjustments |
| **Format** | `{nerve_id, delta_weight, new_weight, reason}` |
| **Protocol** | Push (lifeforce flows → weights update) |
| **Transport** | Nerve registry update |
| **Timing** | End of verification cycle |
| **Failure** | Update failure → logged, retried |
**Reflex formation**: When weight crosses 0.8 threshold, nerve gains reflex capability.
**Pruning**: Nerves with weight < 0.1 and no activity for N cycles → removed.
---
## The Three Clocks
| Clock | Governs | Rate | Cost |
|-------|---------|------|------|
| **Realtime** | Universe, sensors, real garden | 1x (wall clock) | Free |
| **Real Heartbeat** | Real garden sampling, verification sync | ~1 Hz | Free |
| **Virtual Heartbeat** | Virtual garden cycles, simulation | ~100 Hz (variable) | Lifeforce |
**Sync rule**: Virtual predictions queue until real heartbeat. Verification only at real heartbeats.
---
## Reflex Bypass Path
```
SENSOR → NERVE (weight > 0.8) → REFLEX ACTION
└──▶ TOKEN (logged, Nyx notified after)
```
Nyx learns about reflex after it fires. Like pulling hand from stove.
---
## The Economics (Sim2Real)
```
Target confidence needed
┌─────────────────────────┐
│ target > sim_fidelity? │
└─────────────────────────┘
YES │ NO
┌────┴────┐
▼ ▼
REALITY SIMULATE
(wait) (spend V)
```
Formula: `grounded_confidence = raw_confidence * sim_fidelity`
Virtual can never exceed fidelity cap. Beyond that, only reality teaches.
---
## Dual Timestamp (Every Event)
```python
event = {
"real_time": "2025-12-05T22:30:00Z", # wall clock
"virtual_time": 847291, # beat number
"beat_id": "uuid", # which heartbeat
"garden": "real" | "virtual"
}
```
---
## Design Principles
1. **Deterministic core**: Sensors → Nerves → Vocabulary is hallucination-free
2. **Batched processing**: Heartbeat gates continuous stream into manageable cycles
3. **Earned trust**: Reflexes form through verification, not configuration
4. **Economic honesty**: Virtual confidence is discounted by fidelity
5. **Graceful degradation**: Every boundary has a failure mode that doesn't crash the system
6. **Inspectable**: Every flow is logged, every decision traceable
---
*The map of how she thinks.*
---
**Created**: 2025-12-05
**Session**: Partnership dialogue (dafit + Chrysalis)
**Status**: Flow specification v1.0