Files
Baradb/PLAN_old_3.md
T
dimgigov f622c8f82c docs(plan): archive old plan, create AI-Native Data Platform roadmap
- PLAN.md → PLAN_old_3.md (sessions 1-9 completed)
- New PLAN.md: Sessions 10-12 focused on:
  - Vector AI Native Integration (Hybrid RAG, LangChain, MCP Server)
  - Graph Engine Deep Integration (Native storage, Cypher, Algorithms)
  - AI Agents & NL → SQL
- All features preserve multi-tenant RLS isolation and MVCC safety
2026-05-17 13:08:24 +03:00

11 KiB
Raw Blame History

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 конфигурационни)
Общ брой сесии 9

Оставащи задачи (post-v1.0.0, non-critical)

# Задача Оценка
Няма — всички планирани задачи са завършени

BaraDB v1.0.0 е production-ready за blogs, e-commerce и small ERP системи. Всички distributed gaps са запълнени: replication, gossip transport, sharding migration, inter-module wiring. Thread safety: SharedLock ref споделен между всички connection-и — конкурентни DDL/DML защитени.


🆕 Сесия 9 — Stabilization Sprint (май 2026)

Цел: Да махнем всички workaround-и от BARADB_DEFICIENCIES.md, да почистим build-а и да подготвим почвата за типова система. Принцип: Без нови светове — само stabilizaция на съществуващото.

Седмица 1: Deficiency Hunt + Build Cleanup

# Задача Оценка Статус
9.1.1 Почистване на 9-те build warnings (ResultShadowed + UnusedImport)
9.1.2 Issue #6: Aggregate column names (count(*)count(*), max(id)max(id))
9.1.3 Issue #5: GROUP BY bare columns — първи ред от групата за non-aggregated колони 4-6ч
9.1.4 Issue #7+8: Решение за async vs sync client + thread safety
9.1.5 Regression тестове за всички 10 deficiencies

Метрика: NimForum миграционният код маха всички DISTINCT workaround-и за GROUP BY.


Седмица 2: Type Safety in Execution Layer

# Задача Оценка Статус
9.2.1 IRExpr носи valueKind — всеки AST node знае дали е INT, FLOAT, TEXT, NULL 4-6ч
9.2.2 evalExprValue връща discriminated union (Value(kind: vkInt64/Float64/String/Null)) вместо само string 6-8ч
9.2.3 irAdd/irSub/irMul/irDiv използват типовата информация (INT+INT → INT, INT+FLOAT → FLOAT)
9.2.4 validateType използва Value.kind вместо parseInt/parseFloat на string

Метрика: Премахваме всички try: parseFloat catch: return fallback евристики от evalExpr.


Седмица 3: JOIN Performance

# Задача Оценка Статус
9.3.1 Hash Join: ON a.col = b.col с hash table върху по-малката страна
9.3.2 Index Nested Loop Join: ако има B-Tree индекс на join колоната
9.3.3 Benchmark: thread JOIN category с 10K/100K редове
9.3.4 Query planner избира между Nested Loop / Hash / Index въз основа на наличие на индекс

Метрика: JOIN с 100K редове е под 100ms.


Седмица 4: Production Hardening

# Задача Оценка Статус
9.4.1 Property-based tests за evalExpr — случайни AST-та, проверка на invariant-и
9.4.2 Fuzz test за wire protocol — случайни байтове, mutation fuzzing, roundtrip за всички FieldKind
9.4.3 Thread safety audit + fix: execInsert/execUpdate/execDelete с shared ExecutionContext
9.4.4 NimForum integration test — отпада, запазваме универсалност

Метрика: 58 property-based invariant-а + 35 fuzz сценария. ctxLockSharedLock ref споделен между всички connection-и.

Thread safety fix: ctxLock беше per-connection Lock — всеки клониран контекст имаше собствен mutex, което не пази shared state (tables, btrees, ftsIndexes, users, policies, etc.) при конкурентни DDL/DML. Преместен в SharedLock = ref object споделен между всички клонинги на ExecutionContext.


Финални метрики (след сесия 9 — завършена)

Метрика Стойност
Тестове 316 — 0 failures
Prop тестове 58 (commutativity, associativity, distributivity, identity, NULL propagation, type coercion, comparisons)
Fuzz тестове 35 (deserializeValue, roundtrip всички FieldKind, mutation, stress)
Build warnings 0
BARADB_DEFICIENCIES 0 непоправени (всички 10 поправени)
Workaround-и в NimForum 0
evalExprValue Връща Value(kind: vkInt64/Float64/String/Null)
Аритметични ops INT+INT→INT, INT+FLOAT→FLOAT, FLOAT/INT→FLOAT
Join стратегии Hash Join + Index Nested Loop + Nested Loop
JOIN 10K (Hash) ~115ms
JOIN 10K (Index NL) ~90ms
Shared lock SharedLock ref — един mutex за всички connection-и
Общ брой сесии 9

BaraDB v1.0.0 — production-ready. Сесия 9 завършена: build чист, типова система в execution layer, JOIN performance, production hardening.