# Petter Graff Architecture — 90-Day Roadmap

## System Architecture — After Petter Graff Roadmap

**Datum:** 2026-02-23 | **MC Tasks:** #1840–#1852 | **Testovi:** 127/127 PASS

---

### Dijagram: Kako sve komponente rade zajedno

```

┌─────────────────────────────────────────────────────────────────────┐
│                        ALEM (CEO)                                   │
│                                                                     │
│   localhost:3030          localhost:3030/decide                      │
│   ┌──────────────┐       ┌──────────────────┐                       │
│   │ MC Dashboard  │       │ Decision Queue   │ ◄── Fullscreen       │
│   │ (tasks, stats)│       │ (approve/reject) │     single-item UI   │
│   └──────┬───────┘       └────────┬─────────┘                       │
└──────────┼────────────────────────┼─────────────────────────────────┘
           │                        │
           ▼                        ▼
┌──────────────────────────────────────────────────────────────────────┐
│                     KNOWLEDGE GATEWAY                                │
│                   knowledge-gateway.js                                │
│                                                                      │
│   ask("question") ──► Intent Classification ──┬── structured        │
│                                                │── semantic          │
│                                                │── operational       │
│                                                └── docs              │
│                                                                      │
│   ┌────────────┐  ┌─────────────────┐  ┌──────────┐  ┌───────────┐  │
│   │ facts.db   │  │ Retrieval Orch. │  │ HiveMind │  │ BookStack │  │
│   │ contacts   │  │ (RRF merge)     │  │ + MC     │  │ REST API  │  │
│   │ leads      │  │ 4 stores        │  │ active   │  │ search    │  │
│   │ invoices   │  │ semantic search │  │ intel    │  │           │  │
│   └────────────┘  └─────────────────┘  └──────────┘  └───────────┘  │
└──────────────────────────────────────────────────────────────────────┘

┌──────────────────────────────────────────────────────────────────────┐
│                      PIPELINE ENGINE                                 │
│                                                                      │
│   ┌─────────────────────────────────────────────────────────────┐    │
│   │              DAG Scheduler (dag-scheduler.js)                │    │
│   │                                                              │    │
│   │   lead ──► discovery ──► nda ──► proposal ──► contract      │    │
│   │                                                  │           │    │
│   │                                          ┌───────┴───────┐   │    │
│   │                                          ▼               ▼   │    │
│   │                                       setup          design  │    │
│   │                                          │               │   │    │
│   │                                          └───────┬───────┘   │    │
│   │                                                  ▼           │    │
│   │                              development ──► testing ──► ... │    │
│   └─────────────────────────────────────────────────────────────┘    │
│                                                                      │
│   ┌─────────────────┐    ┌────────────────────┐                      │
│   │ Proposal Quality │    │ Lead Score         │                      │
│   │ Gate             │    │ Feedback Loop      │                      │
│   │ • completeness   │    │ • feature extract  │                      │
│   │ • pricing sanity │    │ • outcome tracking │                      │
│   │ • tech stack     │    │ • weight calc      │                      │
│   │ 28 tests ✓       │    │ 38 tests ✓         │                      │
│   └─────────────────┘    └────────────────────┘                      │
│                                                                      │
│   ┌─────────────────┐    ┌────────────────────┐                      │
│   │ Retainer Auto-   │    │ Saga Compensation  │                      │
│   │ Invoicer         │    │ (saga.js)          │                      │
│   │ • monthly billing│    │ • step/compensate  │                      │
│   │ • auto-generate  │    │ • durable mode     │                      │
│   │ • event notify   │    │ • onboard-client   │                      │
│   └─────────────────┘    └────────────────────┘                      │
└──────────────────────────────────────────────────────────────────────┘

┌──────────────────────────────────────────────────────────────────────┐
│                     INFRASTRUCTURE                                   │
│                                                                      │
│   ┌───────────────────────────────────────────────────────────┐      │
│   │              54 Daemons (daemon-registry.json)             │      │
│   │   23 active  │  31 scheduled  │  P1: 16  │  P2: 27       │      │
│   └───────────────────────────────────────────────────────────┘      │
│                                                                      │
│   ┌─────────────────┐    ┌────────────────────┐                      │
│   │ Back-Pressure    │    │ Unified Telemetry  │                      │
│   │ Monitor          │    │ (telemetry.js)     │                      │
│   │ • CPU > 80%     │    │ • record/query     │                      │
│   │ • MEM > 85%     │    │ • startTimer/end   │                      │
│   │ • queue > 100   │    │ • 30-day retention │                      │
│   │ • isOverloaded() │    │ • telemetry.db     │                      │
│   │ 9 tests ✓        │    │ 27 tests ✓         │                      │
│   └─────────────────┘    └────────────────────┘                      │
│                                                                      │
│   ┌─────────────────┐    ┌────────────────────┐                      │
│   │ DB Write Proxy   │    │ Event Bus          │                      │
│   │ (db-proxy.js)    │    │ (event-bus.js)     │                      │
│   │ • 100ms flush    │    │ • emit/subscribe   │                      │
│   │ • 50-item batch  │    │ • WAL mode         │                      │
│   │ • singleton      │    │ • dead letter      │                      │
│   │ 8 tests ✓        │    │ • outbox relay     │                      │
│   └─────────────────┘    └────────────────────┘                      │
└──────────────────────────────────────────────────────────────────────┘

┌──────────────────────────────────────────────────────────────────────┐
│                     BACKUP & DR                                      │
│                                                                      │
│   ┌──────────────────────────────────────────────────────────────┐   │
│   │                    3-Layer Backup Strategy                    │   │
│   │                                                              │   │
│   │   Layer 1: Local DB backup (daily 03:00)                     │   │
│   │   Layer 2: Offsite B2 (rclone, every 6h)   ◄── NEW #1840   │   │
│   │   Layer 3: Mac Mini rsync (every 6h +3h)   ◄── NEW #1851   │   │
│   │                                                              │   │
│   │   ┌────────────┐     ┌────────────┐     ┌────────────────┐  │   │
│   │   │ Mac Studio │────►│ Backblaze  │     │ Mac Mini       │  │   │
│   │   │ (primary)  │────►│ B2 Cloud   │     │ (DR standby)   │  │   │
│   │   │            │────►│            │     │ 15-min failover│  │   │
│   │   └────────────┘     └────────────┘     └────────────────┘  │   │
│   └──────────────────────────────────────────────────────────────┘   │
│                                                                      │
│   BCP: ~/system/ops/bcp-disaster-recovery.md                         │
│   Failover: ~/system/ops/mac-mini-failover.md                        │
└──────────────────────────────────────────────────────────────────────┘
```

---

### Novi Moduli — Quick Reference

<table id="bkmrk-modulputanjasvrhates"><thead><tr><th>Modul</th><th>Putanja</th><th>Svrha</th><th>Testovi</th></tr></thead><tbody><tr><td>**Knowledge Gateway**</td><td>tools/knowledge-gateway.js</td><td>Unified ask() — 4 store-a (structured, semantic, operational, docs)</td><td>✓ verified</td></tr><tr><td>**DAG Scheduler**</td><td>lib/dag-scheduler.js</td><td>Pipeline faze kao DAG umjesto linear array. Paralelno izvršavanje.</td><td>17/17</td></tr><tr><td>**DB Write Proxy**</td><td>lib/db-proxy.js</td><td>Write buffering za SQLite. 100ms flush, singleton po DB.</td><td>8/8</td></tr><tr><td>**Telemetry**</td><td>lib/telemetry.js</td><td>Unified event schema. record/query/stats. telemetry.db.</td><td>27/27</td></tr><tr><td>**System Load Monitor**</td><td>lib/system-load-monitor.js</td><td>isOverloaded() — CPU/MEM/queue back-pressure check.</td><td>9/9</td></tr><tr><td>**Saga**</td><td>lib/saga.js</td><td>Step/compensate pattern. Durable mode. Integrisan u onboard-client.</td><td>8/8</td></tr><tr><td>**Proposal Quality Gate**</td><td>tools/proposal-quality.js</td><td>3 provjere prije CEO odluke: completeness, pricing, tech stack.</td><td>28/28</td></tr><tr><td>**Lead Score Feedback**</td><td>tools/lead-score-feedback.js</td><td>Outcome tracking + statistički weight calculation za lead scoring.</td><td>38/38</td></tr><tr><td>**Retainer Invoicer**</td><td>tools/retainer-invoicer.js</td><td>Auto-generisanje faktura za recurring contracts.</td><td>✓ verified</td></tr><tr><td>**Offsite Backup**</td><td>daemons/offsite-backup.sh</td><td>rclone sync → Backblaze B2 svakih 6h.</td><td>✓ script</td></tr><tr><td>**DR Sync**</td><td>daemons/dr-sync.sh</td><td>rsync → Mac Mini svakih 6h (+3h offset).</td><td>36/36</td></tr><tr><td>**Daemon Registry**</td><td>config/daemon-registry.json</td><td>Dokumentacija svih 54 daemona sa statusom i criticality.</td><td>✓ complete</td></tr><tr><td>**Decision Queue UI**</td><td>tools/mc-dashboard.js /decide</td><td>Fullscreen approve/reject UI za Alema.</td><td>✓ live</td></tr></tbody></table>

---

### Action Items za Alema

1. **Backblaze B2:** Popuni credentials u `~/.config/rclone/rclone.conf` (account ID + app key)
2. **Mac Mini IP:** Kreiraj `~/system/config/dr-sync.conf` sa `MAC_MINI_HOST=192.168.68.XX`
3. **Decision Queue:** Otvori `localhost:3030/decide` — 99 pending decisions čeka review

---

*Generisano: 2026-02-23 | MC #1840–#1852 | Architect: Petter Graff agent | Builder: John*