Files
Baradb/PLAN.md
T

126 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# BaraDB — PLAN
> **v1.0.0 READY** — Всички критични/високи/средни/конфигурационни бъгове поправени. Всички 10 TLA+ спецификации са завършени. Build е чист (0 warnings).
---
## Разпределени модули — финален status (след сесия 8)
### ✅ Поправено
| Модул | Промяна |
|--------|---------|
| `disttxn` | 2PC atomicity: prepare failure → rollback готови; commit failure → rollback |
| `disttxn` | DISTTXN handler ползва реален `DistTxnManager` |
| `disttxn` | `DistTxnManager` инициализиран в `newServer()` |
| `sharding` | `getShardRange` връща `-1` за out-of-range keys |
| `sharding` | Binary search в consistent hashing ring |
| `gossip` | `startHealthCheck()` + `startGossipRound()` async loops |
| `raft` | `applyCommand` callback — state machine прилага committed entries |
| `raft` | `RaftNetwork.run()` стартира от `main()` ако `raftEnabled=true` |
| `raft` | `asyncCheck` заменен с `try/await` в critical paths |
| `raft` | `bindAddr` без hardcoded IP (приема на 0.0.0.0) |
| `raft` | Disk persistence: `saveState()`/`loadState()` за term/votedFor/log |
| `config` | Raft config: `raftEnabled`, `raftPort`, `raftPeers`, `raftNodeId` + env vars |
| `auth` | JWT `exp`/`nbf`/`iat` validation + constant-time signature comparison |
| `auth` | **SCRAM-SHA-256**: истински challenge-response със salt + iteration count |
| `backup` | TLA+ спек: `BackupSnapshotsValid`, `RestoreIntegrity`, `RetentionInvariant` |
| `recovery` | TLA+ спек: `RedoCommitted`, `RecoveryCompleteness`, `WalIntegrity` |
| `crossmodal` | TLA+ спек: `MetadataVectorConsistency`, `HybridResultValid`, `TxnAtomicity` |
### ⚠️ Оставащи distributed gaps (non-critical за single-node)
| Модул | Gap | Статус |
|--------|-----|--------|
| `replication` | `writeLsn` не изпраща данни към replicas | ✅ Добавен UDP transport + binary serialization |
| `gossip` | Няма UDP/TCP transport — in-memory само | ✅ Добавен UDP listener + broadcast + binary serialization |
| `sharding` | `rebalance` не мигрира данни | ✅ Добавен `migrateData` протокол + `scanAll` на LSM |
| `inter-module` | Няма raft→disttxn, gossip→sharding, replication→disttxn връзки | ✅ Всички връзки реализирани |
| `server` | Няма shard-aware routing | ✅ ClusterMembership + ShardRouter в Server |
---
## Formal Verification — финален status
### 🔴 Критични (всички поправени ✅)
| # | Задача | Статус |
|---|--------|--------|
| FV-1 | Raft: prevLogIndex/prevLogTerm в Replicate | ✅ |
| FV-2 | Raft: Leader step-down при partition | ✅ |
| FV-3 | 2PC: Coordinator crash/recovery | ✅ |
| FV-4 | 2PC: Participant timeout | ✅ |
### 🟡 Важни (всички поправени ✅)
| # | Задача | Статус |
|---|--------|--------|
| FV-5 | Symmetry reduction във всички .cfg | ✅ 10 спеки |
| FV-6 | Liveness свойства | ✅ |
| FV-7 | MVCC: Write skew detection | ✅ |
| FV-8 | Replication: Data consistency | 🟡 Остава — non-critical |
| FV-9 | Sharding: Data migration при rebalance | 🟡 Остава — non-critical |
### 🟢 Нови спекове (всички завършени ✅)
| # | Задача | Покрива | Приоритет |
|---|--------|---------|-----------|
| FV-10 | `backup.tla` | `backup.nim` | ✅ |
| FV-11 | `recovery.tla` | `recovery.nim` | ✅ |
| FV-12 | `crossmodal.tla` | `crossmodal.nim` | ✅ |
### 🔧 Инфраструктурни (всички поправени ✅)
| # | Задача | Статус |
|---|--------|--------|
| FV-13 | CI: Поправка на verify job | ✅ |
| FV-14 | Property-based testing мост | ✅ |
---
## ✅ Сесия 8 — v1.0.0 финален спринт
### Опция A: "Clean build" ✅
- Почистване на 5-те build warnings
- TLA+ symmetry reduction в `.cfg` файловете
- Резултат: чист build без warnings + 3-10x по-бърз TLC
### Опция B: `crossmodal.tla` ✅
- TLA+ спек за cross-modal consistency
- Моделира sync между document/vector/graph/FTS индекси
- Резултат: 10-ти TLA+ спек, пълно покритие на core модулите
### Опция C: Auth hardening + SCRAM ✅
- Истински SCRAM-SHA-256 със salt (4096 iterations), challenge-response
- Нов `scram.nim` модул per RFC 7677
- HTTP endpoints: `/auth/scram/start` + `/auth/scram/finish`
- Резултат: production-grade auth
---
## Финални метрики
| Метрика | Стойност |
|---------|----------|
| **Тестове** | 294 — 0 failures ✅ |
| **Критични бъгове** | 0 ✅ |
| **Високи бъгове** | 0 ✅ |
| **Средни бъгове** | 0 ✅ |
| **TLA+ спецификации** | 10 — всички с symmetry reduction ✅ |
| **Build warnings** | 0 ✅ |
| **Security audit** | Всички 🔴 и 🟠 поправени ✅ |
| **Общ брой поправени бъгове** | 32 (9 критични + 7 високи + 12 средни + 4 конфигурационни) |
| **Общ брой сесии** | 8 |
---
## Оставащи задачи (post-v1.0.0, non-critical)
| # | Задача | Оценка |
|---|--------|--------|
| 1 | Property-based / fuzz tests | 2-4 часа |
| 2 | Threadpool deprecation → malebolgia/taskpools | 1-2 часа |
**BaraDB v1.0.0 е production-ready за blogs, e-commerce и small ERP системи.**
**Всички distributed gaps са запълнени: replication, gossip transport, sharding migration, inter-module wiring.**