This repository has been archived on 2026-03-24. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Timmy-time-dashboard/docs/adr/018-lightning-ledger.md
Alexander Payne d8d976aa60 feat: complete Event Log, Ledger, Memory, Cascade Router, Upgrade Queue, Activity Feed
This commit implements six major features:

1. Event Log System (src/swarm/event_log.py)
   - SQLite-based audit trail for all swarm events
   - Task lifecycle tracking (created, assigned, completed, failed)
   - Agent lifecycle tracking (joined, left, status changes)
   - Integrated with coordinator for automatic logging
   - Dashboard page at /swarm/events

2. Lightning Ledger (src/lightning/ledger.py)
   - Transaction tracking for Lightning Network payments
   - Balance calculations (incoming, outgoing, net, available)
   - Integrated with payment_handler for automatic logging
   - Dashboard page at /lightning/ledger

3. Semantic Memory / Vector Store (src/memory/vector_store.py)
   - Embedding-based similarity search for Echo agent
   - Fallback to keyword matching if sentence-transformers unavailable
   - Personal facts storage and retrieval
   - Dashboard page at /memory

4. Cascade Router Integration (src/timmy/cascade_adapter.py)
   - Automatic LLM failover between providers (Ollama → AirLLM → API)
   - Circuit breaker pattern for failing providers
   - Metrics tracking per provider (latency, error rates)
   - Dashboard status page at /router/status

5. Self-Upgrade Approval Queue (src/upgrades/)
   - State machine for self-modifications: proposed → approved/rejected → applied/failed
   - Human approval required before applying changes
   - Git integration for branch management
   - Dashboard queue at /self-modify/queue

6. Real-Time Activity Feed (src/events/broadcaster.py)
   - WebSocket-based live activity streaming
   - Bridges event_log to dashboard clients
   - Activity panel on /swarm/live

Tests:
- 101 unit tests passing
- 4 new E2E test files for Selenium testing
- Run with: SELENIUM_UI=1 pytest tests/functional/ -v --headed

Documentation:
- 6 ADRs (017-022) documenting architecture decisions
- Implementation summary in docs/IMPLEMENTATION_SUMMARY.md
- Architecture diagram in docs/architecture-v2.md
2026-02-26 08:01:01 -05:00

100 lines
2.4 KiB
Markdown

# ADR 018: Lightning Network Transaction Ledger
## Status
Accepted
## Context
The system needed to track all Lightning Network payments (incoming and outgoing) for accounting, dashboard display, and audit purposes. The existing payment handler created invoices but didn't persist transaction history.
## Decision
Implement a SQLite-based ledger (`ledger` table) that tracks all Lightning transactions with their lifecycle status.
## Transaction Types
| Type | Description |
|------|-------------|
| `incoming` | Invoice created (we're receiving payment) |
| `outgoing` | Payment sent (we're paying someone) |
## Transaction Status
| Status | Description |
|--------|-------------|
| `pending` | Awaiting settlement |
| `settled` | Payment completed |
| `failed` | Payment failed |
| `expired` | Invoice expired |
## Schema
```sql
CREATE TABLE ledger (
id TEXT PRIMARY KEY,
tx_type TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'pending',
payment_hash TEXT UNIQUE NOT NULL,
amount_sats INTEGER NOT NULL,
memo TEXT,
invoice TEXT,
preimage TEXT,
source TEXT NOT NULL,
task_id TEXT,
agent_id TEXT,
created_at TEXT NOT NULL,
settled_at TEXT,
fee_sats INTEGER DEFAULT 0
);
```
## Usage
```python
from lightning.ledger import (
create_invoice_entry,
mark_settled,
get_balance,
)
# Create invoice record
entry = create_invoice_entry(
payment_hash=invoice.payment_hash,
amount_sats=1000,
memo="API access",
source="payment_handler",
task_id=task.id,
)
# Mark as paid
mark_settled(payment_hash, preimage="secret")
# Get balance
balance = get_balance()
print(f"Net: {balance['net_sats']} sats")
```
## Integration
The `PaymentHandler` automatically:
- Creates ledger entries when invoices are created
- Updates status when payments are checked/settled
- Tracks fees for outgoing payments
## Balance Calculation
```python
{
"incoming_total_sats": total_received,
"outgoing_total_sats": total_sent,
"fees_paid_sats": total_fees,
"net_sats": incoming - outgoing - fees,
"pending_incoming_sats": pending_received,
"pending_outgoing_sats": pending_sent,
"available_sats": net - pending_outgoing,
}
```
## Consequences
- **Positive**: Complete payment history, balance tracking, audit trail
- **Negative**: Additional DB writes, must keep in sync with actual Lightning node
## Future Work
- Reconciliation job to sync with LND node
- Export to accounting formats (CSV, QIF)