Skip to content

kastertrooy/MAX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 

Repository files navigation

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                           Π£Π ΠžΠ’Π•ΠΠ¬ 1: Π˜ΠΠ’Π•Π Π€Π•Π™Π‘Π« ΠŸΠžΠ›Π¬Π—ΠžΠ’ΠΠ’Π•Π›Π―                              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚      TELEGRAM BOT           β”‚    β”‚        EMAIL MONITOR        β”‚    β”‚   LOCAL UI   β”‚ β”‚
β”‚  β”‚                             β”‚    β”‚                             β”‚    β”‚  (optional)  β”‚ β”‚
β”‚  β”‚  β€’ Inline ΠΊΠ½ΠΎΠΏΠΊΠΈ управлСния β”‚    β”‚  β€’ IMAP ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 10 ΠΌΠΈΠ½       β”‚    β”‚  β€’ CLI       β”‚ β”‚
β”‚  β”‚  β€’ УвСдомлСния ΠΎ событиях   β”‚    β”‚  β€’ ΠŸΠ°Ρ€ΡΠΈΠ½Π³ GitHub писСм     β”‚    β”‚  β€’ Web       β”‚ β”‚
β”‚  β”‚  β€’ ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ Π·Π°Π΄Π°Ρ‡      β”‚    β”‚  β€’ AI ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π½Π° русский    β”‚    β”‚  β€’ TUI       β”‚ β”‚
β”‚  β”‚  β€’ Настройки ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²     β”‚    β”‚  β€’ Callback ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² TG     β”‚    β”‚              β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                          β”‚
                                          β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                         Π£Π ΠžΠ’Π•ΠΠ¬ 2: Π―Π”Π Πž ΠžΠ ΠšΠ•Π‘Π’Π ΠΠ¦Π˜Π˜ (CORE)                              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                         ORCHESTRATOR ENGINE                                      β”‚   β”‚
β”‚  β”‚                                                                                  β”‚   β”‚
β”‚  β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚   β”‚
β”‚  β”‚   β”‚                    STATE MACHINE MANAGER                                   β”‚   β”‚   β”‚
β”‚  β”‚   β”‚                                                                              β”‚   β”‚   β”‚
β”‚   β”‚   β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”β”‚   β”‚   β”‚
β”‚   β”‚   β”‚  β”‚  IDLE   │───→│ FETCHING│───→│ANALYZING│───→│ CODING  │───→│TESTING β”‚β”‚   β”‚   β”‚
β”‚   β”‚   β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”¬β”€β”€β”€β”€β”˜β”‚   β”‚   β”‚
β”‚   β”‚   β”‚                                                                  β”‚      β”‚   β”‚   β”‚
β”‚   β”‚   β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                    β”‚      β”‚   β”‚   β”‚
β”‚   β”‚   β”‚  β”‚COMPLETED│←───│CREATE_PRβ”‚β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β”˜      β”‚   β”‚   β”‚
β”‚   β”‚   β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                           β”‚   β”‚   β”‚
β”‚   β”‚   β”‚       ↑                                                                β”‚   β”‚   β”‚
β”‚   β”‚   β”‚       β””β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β†β”˜      β”‚   β”‚
β”‚   β”‚   β”‚                    RETRY CONTROLLER (max 3 attempts)                     β”‚   β”‚   β”‚
β”‚   β”‚   β”‚                                                                              β”‚   β”‚   β”‚
β”‚   β”‚   β”‚  Ошибка Π½Π° любом этапС β†’ Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊ CODING с контСкстом ошибки β†’ ΠŸΠΎΠ²Ρ‚ΠΎΡ€     β”‚   β”‚   β”‚
β”‚   β”‚   β”‚  ПослС 3 ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ β†’ BLACKLIST                                               β”‚   β”‚   β”‚
β”‚   β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚   β”‚                                                                                      β”‚
β”‚   β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
β”‚   β”‚   β”‚                    PRIORITY QUEUE MANAGER                                  β”‚       β”‚
β”‚   β”‚   β”‚                                                                              β”‚       β”‚
β”‚   β”‚   β”‚  БВРУКВУРА ΠžΠ§Π•Π Π•Π”Π˜:                                                        β”‚       β”‚
β”‚   β”‚   β”‚  β€’ Heap-based (heapq) для O(log n) ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ                                β”‚       β”‚
β”‚   β”‚   β”‚  β€’ ΠšΠ»ΡŽΡ‡ сортировки: (-bounty_amount, created_at, issue_id)                β”‚       β”‚
β”‚   β”‚   β”‚  β€’ Persistence: АвтосохранСниС Π² SQLite ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ               β”‚       β”‚
β”‚   β”‚   β”‚  β€’ Recovery: Полная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈΠ· Π‘Π” ΠΏΡ€ΠΈ стартС                              β”‚       β”‚
β”‚   β”‚   β”‚                                                                              β”‚       β”‚
β”‚   β”‚   β”‚  ΠžΠŸΠ•Π ΠΠ¦Π˜Π˜:                                                                 β”‚       β”‚
β”‚   β”‚   β”‚  β€’ put(issue) β†’ Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ с ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ                                   β”‚       β”‚
β”‚   β”‚   β”‚  β€’ get() β†’ Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ highest priority (thread-safe)                       β”‚       β”‚
β”‚   β”‚   β”‚  β€’ prioritize(issue_id, level) β†’ Π ΡƒΡ‡Π½ΠΎΠ΅ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°               β”‚       β”‚
β”‚   β”‚   β”‚  β€’ remove(issue_id) β†’ Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ                                β”‚       β”‚
β”‚   β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
β”‚   β”‚                                                                                      β”‚
β”‚   β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
β”‚   β”‚   β”‚                    RATE LIMIT CONTROLLER                                   β”‚       β”‚
β”‚   β”‚   β”‚                                                                              β”‚       β”‚
β”‚   β”‚   β”‚  GITHUB API:                                                                 β”‚       β”‚
β”‚   β”‚   β”‚  β€’ Limit: 5000 requests/hour                                               β”‚       β”‚
β”‚   β”‚   β”‚  β€’ Window: Sliding window tracking                                         β”‚       β”‚
β”‚   β”‚   β”‚  β€’ Action ΠΏΡ€ΠΈ <100: ΠŸΠ°ΡƒΠ·Π° 60 сСк β†’ ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½Π°Ρ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°                      β”‚       β”‚
β”‚   β”‚   β”‚  β€’ Action ΠΏΡ€ΠΈ <10: ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΠΏΠ°ΡƒΠ·Π° β†’ Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ TG β†’ ОТиданиС          β”‚       β”‚
β”‚   β”‚   β”‚                                                                              β”‚       β”‚
β”‚   β”‚   β”‚  OPENAI API:                                                                 β”‚       β”‚
β”‚   β”‚   β”‚  β€’ Tier-based limits (RPM, TPM)                                            β”‚       β”‚
β”‚   β”‚   β”‚  β€’ Tracking: tokens/minute, requests/minute                                β”‚       β”‚
β”‚   β”‚   β”‚  β€’ Action ΠΏΡ€ΠΈ критичСском: STOP PROGRAM β†’ Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ TG                   β”‚       β”‚
β”‚   β”‚   β”‚                                                                              β”‚       β”‚
β”‚   β”‚   β”‚  DOCKER:                                                                     β”‚       β”‚
β”‚   β”‚   β”‚  β€’ Local resource limits (CPU, RAM)                                          β”‚       β”‚
β”‚   β”‚   β”‚  β€’ Concurrent container limit: 1 (ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°)               β”‚       β”‚
β”‚   β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
β”‚   β”‚                                                                                      β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚                                                                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                          β”‚
                                          β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                      Π£Π ΠžΠ’Π•ΠΠ¬ 3: ΠœΠžΠ”Π£Π›Π˜ Π˜ΠΠ’Π•Π“Π ΠΠ¦Π˜Π˜ (ADAPTERS)                              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚      GITHUB MODULE          β”‚  β”‚        AI MODULE             β”‚  β”‚ DOCKER MODULEβ”‚ β”‚
β”‚  β”‚                             β”‚  β”‚                               β”‚  β”‚              β”‚ β”‚
β”‚  β”‚  DUAL TOKEN ARCHITECTURE:   β”‚  β”‚  PROVIDER MANAGEMENT:         β”‚  β”‚  LIFECYCLE:  β”‚ β”‚
β”‚  β”‚  β€’ READ_TOKEN (repo, org)   β”‚  β”‚  β€’ Primary: GPT-4             β”‚  β”‚  β€’ Ensure    β”‚ β”‚
β”‚  β”‚  β€’ WRITE_TOKEN (workflow)   β”‚  β”‚  β€’ Fallback: Claude-3         β”‚  β”‚    running   β”‚ β”‚
β”‚  β”‚                             β”‚  β”‚  β€’ Switch: Manual (TG)        β”‚  β”‚  β€’ Build     β”‚ β”‚
β”‚  β”‚  SUBMODULES:                β”‚  β”‚                               β”‚  β”‚  β€’ Test      β”‚ β”‚
β”‚  β”‚  β€’ Client (rate tracking)   β”‚  β”‚  COMPONENTS:                β”‚  β”‚  β€’ Cleanup   β”‚ β”‚
β”‚  β”‚  β€’ IssueAnalyzer (bounty)   β”‚  β”‚  β€’ PromptEngineer             β”‚  β”‚              β”‚ β”‚
β”‚  β”‚  β€’ ContentAPI (<100MB)      β”‚  β”‚  β€’ CodeGenerator              β”‚  β”‚  SECURITY:   β”‚ β”‚
β”‚  β”‚  β€’ GraphQLClient (linked)   β”‚  β”‚  β€’ CommitMessageGenerator     β”‚  β”‚  β€’ Pattern   β”‚ β”‚
β”‚  β”‚  β€’ PRManager (create/commit)β”‚  β”‚  β€’ OutputValidator            β”‚  β”‚    matching  β”‚ β”‚
β”‚  β”‚  β€’ CommentManager           β”‚  β”‚                               β”‚  β”‚  β€’ AST scan  β”‚ β”‚
β”‚  β”‚                             β”‚  β”‚  TOKEN TRACKING:              β”‚  β”‚  β€’ Sandbox   β”‚ β”‚
β”‚  β”‚  OPERATIONS:                β”‚  β”‚  β€’ Input/Output per request   β”‚  β”‚              β”‚ β”‚
β”‚  β”‚  β€’ Search issues by labels  β”‚  β”‚  β€’ Cost estimation            β”‚  β”‚  RESOURCES:  β”‚ β”‚
β”‚  β”‚  β€’ Detect bounty via AI     β”‚  β”‚  β€’ Monthly budget tracking    β”‚  β”‚  β€’ Fixed:    β”‚ β”‚
β”‚  β”‚  β€’ Download relevant files  β”‚  β”‚                               β”‚  β”‚    2-4-6 CPU β”‚ β”‚
β”‚  β”‚  β€’ Parse linked issues A+B  β”‚  β”‚                               β”‚  β”‚  β€’ RAM:      β”‚ β”‚
β”‚  β”‚  β€’ Create branch ai/123/ts  β”‚  β”‚                               β”‚  β”‚    512+kb/10 β”‚ β”‚
β”‚  β”‚  β€’ Commit with AI message   β”‚  β”‚                               β”‚  β”‚              β”‚ β”‚
β”‚  β”‚  β€’ Create PR with body      β”‚  β”‚                               β”‚  β”‚  TIMEOUT:    β”‚ β”‚
β”‚  β”‚  β€’ Comment on issue         β”‚  β”‚                               β”‚  β”‚    25 sec    β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                                                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                          β”‚
                                          β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                         Π£Π ΠžΠ’Π•ΠΠ¬ 4: Π₯Π ΠΠΠ˜Π›Π˜Π©Π• ДАННЫΠ₯ (STORAGE)                            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                         SQLITE DATABASE SCHEMA                                     β”‚   β”‚
β”‚  β”‚                                                                                  β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚   β”‚
β”‚  β”‚  β”‚  REPOSITORIES                                                                β”‚β”‚   β”‚
β”‚  β”‚  β”‚  ─────────────                                                               β”‚β”‚   β”‚
β”‚  β”‚  β”‚  id | owner | name | full_name | language | stars | last_checked | is_active  β”‚β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚   β”‚
β”‚  β”‚                                                                                  β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚   β”‚
β”‚  β”‚  β”‚  ISSUES (central entity)                                                     β”‚β”‚   β”‚
β”‚  β”‚  β”‚  ─────────────                                                               β”‚β”‚   β”‚
β”‚  β”‚  β”‚  id | github_id | repo_id | number | title | body                           β”‚β”‚   β”‚
β”‚  β”‚  β”‚  has_bounty | bounty_amount | bounty_currency | detected_by                 β”‚β”‚   β”‚
β”‚  β”‚  β”‚  status (enum) | priority | queue_position                                   β”‚β”‚   β”‚
β”‚  β”‚  β”‚  linked_issue_ids [JSON] | linked_pr_numbers [JSON]                           β”‚β”‚   β”‚
β”‚  β”‚  β”‚  attempt_count | max_attempts | created_at | updated_at | started_at         β”‚β”‚   β”‚
β”‚  β”‚  β”‚  completed_at | is_blacklisted | blacklist_reason                             β”‚β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚   β”‚
β”‚  β”‚                                                                                  β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚   β”‚
β”‚  β”‚  β”‚  ATTEMPTS (retry tracking)                                                   β”‚β”‚   β”‚
β”‚  β”‚  β”‚  ─────────────                                                               β”‚β”‚   β”‚
β”‚  β”‚  β”‚  id | issue_id | attempt_number | status (enum)                            β”‚β”‚   β”‚
β”‚  β”‚  β”‚  ai_model_used | prompt_tokens | completion_tokens | ai_response_raw        β”‚β”‚   β”‚
β”‚  β”‚  β”‚  generated_code [JSON] | files_modified [JSON]                              β”‚β”‚   β”‚
β”‚  β”‚  β”‚  docker_image | docker_cpu | docker_memory | test_duration                   β”‚β”‚   β”‚
β”‚  β”‚  β”‚  error_message | error_traceback | security_violations [JSON]               β”‚β”‚   β”‚
β”‚  β”‚  β”‚  created_at                                                                    β”‚β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚   β”‚
β”‚  β”‚                                                                                  β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚   β”‚
β”‚  β”‚  β”‚  PULL_REQUESTS                                                               β”‚β”‚   β”‚
β”‚  β”‚  β”‚  ─────────────                                                               β”‚β”‚   β”‚
β”‚  β”‚  β”‚  id | issue_id | github_pr_number | branch_name | commit_sha                 β”‚β”‚   β”‚
β”‚  β”‚  β”‚  commit_message | pr_url | status | created_at | merged_at                  β”‚β”‚   β”‚
β”‚  β”‚  β”‚  initial_comment_posted | completion_comment_posted                         β”‚β”‚   β”‚
β”‚  β”‚  β”‚  email_notification_sent                                                     β”‚β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚   β”‚
β”‚  β”‚                                                                                  β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚   β”‚
β”‚  β”‚  β”‚  BLACKLIST (permanent blocks)                                                β”‚β”‚   β”‚
β”‚  β”‚  β”‚  ─────────────                                                               β”‚β”‚   β”‚
β”‚  β”‚  β”‚  id | issue_id | reason | added_at | added_by | is_permanent (always TRUE)   β”‚β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚   β”‚
β”‚  β”‚                                                                                  β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚   β”‚
β”‚  β”‚  β”‚  ANALYTICS (success metrics)                                                 β”‚β”‚   β”‚
β”‚  β”‚  β”‚  ─────────────                                                               β”‚β”‚   β”‚
β”‚  β”‚  β”‚  id | issue_id | estimated_bounty | actual_earned | currency                β”‚β”‚   β”‚
β”‚  β”‚  β”‚  time_to_solve | total_ai_tokens | github_api_calls | docker_runs           β”‚β”‚   β”‚
β”‚  β”‚  β”‚  success | failure_reason | language | recorded_at                          β”‚β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚   β”‚
β”‚  β”‚                                                                                  β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚   β”‚
β”‚  β”‚  β”‚  RATE_LIMIT_LOGS (API monitoring)                                            β”‚β”‚   β”‚
β”‚  β”‚  β”‚  ─────────────                                                               β”‚β”‚   β”‚
β”‚  β”‚  β”‚  id | service | limit_remaining | limit_total | reset_at | warning_sent       β”‚β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚   β”‚
β”‚  β”‚                                                                                  β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚   β”‚
β”‚  β”‚  β”‚  TELEGRAM_LOGS (notification history)                                          β”‚β”‚   β”‚
β”‚  β”‚  β”‚  ─────────────                                                               β”‚β”‚   β”‚
β”‚  β”‚  β”‚  id | message_type | chat_id | message_text | issue_id | sent_at | delivered  β”‚β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚   β”‚
β”‚  β”‚                                                                                  β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

---

## 2. ДЕВАЛЬНАЯ Π›ΠžΠ“Π˜ΠšΠ ΠŸΠžΠ’ΠžΠšΠžΠ’ (FLOW LOGIC)

### ПОВОК 1: ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ΅ сканированиС (Discovery Flow)

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   STARTUP   │────→│  LOAD REPOS  │────→│  SCAN ISSUES│────→│  AI BOUNTY  β”‚
β”‚             β”‚     β”‚  from DB     β”‚     β”‚  by labels   β”‚     β”‚  DETECTION  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
                                                                    β”‚
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
    β”‚
    β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  CALCULATE  │────→│   INSERT    │────→│   NOTIFY    β”‚
β”‚  PRIORITY   β”‚     β”‚  into QUEUE β”‚     β”‚   (none)    β”‚
β”‚  (-bounty)  β”‚     β”‚             β”‚     β”‚             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

**Π›ΠΎΠ³ΠΈΠΊΠ°:**
1. ΠŸΡ€ΠΈ стартС Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ список Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² ΠΈΠ· Π‘Π” (ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· API)
2. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ рСпозитория: GraphQL запрос Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ issue с ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ `[bounty, reward, $, paid, RTC]`
3. AI Π°Π½Π°Π»ΠΈΠ· тСкста issue (title + body) Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ сумм (`$500`, `USD 100`, `reward: 50`)
4. Расчёт ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°: `priority = -bounty_amount` (ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ для max-heap)
5. Вставка Π² PriorityQueue с сохранСниСм Π² SQLite
6. **НСт увСдомлСния** β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ

---

### ПОВОК 2: ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° issue (Processing Flow)

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  QUEUE GET  │────→│   FETCH     │────→│   ANALYZE   │────→│   GENERATE  β”‚
β”‚  (blocking) β”‚     β”‚   DATA      β”‚     β”‚   CONTEXT   β”‚     β”‚    CODE     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
                           β”‚                                         β”‚
                           β”‚    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                      β”‚
                           └───→│ CHECKPOINT  β”‚β†β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚   SAVE      β”‚
                                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

**ДСтализация этапов:**

| Π­Ρ‚Π°ΠΏ | ДСйствия | Π’Ρ‹Ρ…ΠΎΠ΄ ΠΏΡ€ΠΈ ошибкС |
|------|----------|------------------|
| **FETCH** | β€’ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Docker Π·Π°ΠΏΡƒΡ‰Π΅Π½ (автозапуск)<br>β€’ Content API: ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, связанныС с issue<br>β€’ GraphQL: ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ linked issues (A+B)<br>β€’ GraphQL: ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ linked PR + ΠΈΡ… ΠΊΠΎΠ΄<br>β€’ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° <100MB | `BLACKLIST` (file too large) β†’ permanent |
| **ANALYZE** | β€’ AI Π°Π½Π°Π»ΠΈΠ·: issue description + linked issues + PR ΠΊΠΎΠ΄<br>β€’ Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ solution plan<br>β€’ ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ | Retry (max 3) β†’ `BLACKLIST` |
| **CODE** | β€’ AI гСнСрация ΠΊΠΎΠ΄Π° ΠΏΠΎ plan<br>β€’ Security scan: ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ (rm -rf, System.exit, os.system)<br>β€’ Commit message generation | `BLACKLIST` (security) β†’ permanent |
| **TEST** | β€’ Расчёт рСсурсов: CPU ступСни (2-4-6), RAM=512+kb/10<br>β€’ Docker run с network=none, read-only volumes<br>β€’ Π’Π°ΠΉΠΌΠ°ΡƒΡ‚ 25 сСкунд<br>β€’ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° exit code | Retry (max 3) β†’ `BLACKLIST` |
| **PR** | β€’ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ `ai/{issue_number}/{timestamp}`<br>β€’ Commit с AI-generated message<br>β€’ Push β†’ Create PR β†’ Comment in issue | Retry (max 3) β†’ `BLACKLIST` |

---

### ПОВОК 3: Email ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° (Email Flow) β€” **ΠžΠ‘ΠΠžΠ’Π›ΠΠΠΠ«Π™**

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  IMAP CHECK │────→│  PARSE NEW  │────→│  TRANSLATE  │────→│   SEND TG   β”‚
β”‚  (10 min)   β”‚     β”‚  "merged" PRβ”‚     β”‚   to RU     β”‚     β”‚  with buttonsβ”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
                           β”‚                                         β”‚
                           β”‚         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                  β”‚
                           └────────→│  UPDATE DB  β”‚β†β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                     β”‚  status     β”‚
                                     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

**Π›ΠΎΠ³ΠΈΠΊΠ° ΠΊΠ½ΠΎΠΏΠΎΠΊ Π² Telegram:**

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  πŸŽ‰ PR #123 ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ merged!                                β”‚
β”‚  Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ: owner/repo                                   β”‚
β”‚  Π‘ΡƒΠΌΠΌΠ°: $150                                               β”‚
β”‚                                                            β”‚
β”‚  ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ письма:                                           β”‚
β”‚  "Π’Π°Ρˆ pull request #123 Π±Ρ‹Π» ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½..."          β”‚
β”‚                                                            β”‚
β”‚  [πŸ” ΠΠ½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ]  [πŸ—‘ Π£Π΄Π°Π»ΠΈΡ‚ΡŒ]                          β”‚
β”‚  [πŸš€ Бтатус] [⏸ ΠŸΠ°ΡƒΠ·Π°] [βš™ Настройки]                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

**ДСйствия ΠΊΠ½ΠΎΠΏΠΎΠΊ:**

| Кнопка | ДСйствиС |
|--------|----------|
| `πŸ” ΠΠ½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ` | β€’ ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ PR Π² AI<br>β€’ Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΈΠ·: "Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ?"<br>β€’ ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ<br>β€’ Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ insights Π² Π‘Π” |
| `πŸ—‘ Π£Π΄Π°Π»ΠΈΡ‚ΡŒ` | β€’ ΠΡ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запись<br>β€’ ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈ<br>β€’ ΠŸΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ "ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ" |
| `πŸš€ Бтатус` | β€’ ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ<br>β€’ Rate limits<br>β€’ АктивныС Π·Π°Π΄Π°Ρ‡ΠΈ |
| `⏸/β–Ά` | β€’ ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ°ΡƒΠ·Ρƒ<br>β€’ ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ/Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ |
| `βš™ Настройки` | β€’ МодСль (GPT-4/Claude)<br>β€’ Π’Π°ΠΉΠΌΠ°ΡƒΡ‚ Docker<br>β€’ CPU ступСни |

---

## 3. Π›ΠžΠ“Π˜ΠšΠ Π‘ΠžΠ‘Π’ΠžΠ―ΠΠ˜Π™ (State Logic)

### State Machine: ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹ ΠΈ условия

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  IDLE   │────────→│ FETCHING│────────→│ANALYZING│────────→│ CODING  β”‚
β”‚         β”‚  start  β”‚         β”‚  successβ”‚         β”‚  successβ”‚         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜
                           β”‚                   β”‚                   β”‚
                      errorβ”‚              errorβ”‚              errorβ”‚
                           β–Ό                   β–Ό                   β–Ό
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚  RETRY  β”‚         β”‚  RETRY  β”‚         β”‚  RETRY  β”‚
                    β”‚ counter+β”‚         β”‚ counter+β”‚         β”‚ counter+β”‚
                    β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜
                         β”‚                     β”‚                     β”‚
                    max 3?β”‚                max 3?β”‚                max 3?
                         β”‚Yes                  β”‚Yes                 β”‚Yes
                         β–Ό                     β–Ό                     β–Ό
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚ BLACKLISTβ”‚          β”‚ BLACKLISTβ”‚          β”‚ BLACKLISTβ”‚
                    β”‚ permanentβ”‚          β”‚ permanentβ”‚          β”‚ permanentβ”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ CODING  │────────→│ TESTING │────────→│CREATE_PRβ”‚
β”‚         β”‚  successβ”‚         β”‚  successβ”‚         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜
                    errorβ”‚                   errorβ”‚
                         β–Ό                     β–Ό
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚  RETRY  β”‚           β”‚  RETRY  β”‚
                    β”‚return toβ”‚           β”‚return toβ”‚
                    β”‚  CODING β”‚           β”‚  CODING β”‚
                    β”‚with errorβ”‚          β”‚with errorβ”‚
                    β”‚ context β”‚           β”‚ context β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚CREATE_PR│────────→│COMPLETEDβ”‚
β”‚         β”‚  successβ”‚         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

### Условия ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ²:

| From | To | Condition | Action on fail |
|------|-----|-----------|----------------|
| IDLE | FETCHING | Queue not empty, Docker ready, Rate limits OK | Wait 5s, retry |
| FETCHING | ANALYZING | All files <100MB downloaded, Linked issues fetched | Blacklist (file too large) |
| ANALYZING | CODING | AI returned valid solution plan | Retry (3x) β†’ Blacklist |
| CODING | TESTING | Security scan passed, Code generated | Blacklist (security) |
| TESTING | CREATE_PR | Docker exit code 0, within 25s | Retry (3x) β†’ Blacklist |
| CREATE_PR | COMPLETED | PR created successfully, comment posted | Retry (3x) β†’ Blacklist |

---

## 4. Π›ΠžΠ“Π˜ΠšΠ Π‘Π•Π—ΠžΠŸΠΠ‘ΠΠžΠ‘Π’Π˜ (Security Logic)

### Security Scan: Π£Ρ€ΠΎΠ²Π½ΠΈ ΡƒΠ³Ρ€ΠΎΠ·

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    SECURITY SCAN LAYERS                      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  LAYER 1: PATTERN MATCHING (regex)                          β”‚
β”‚  β”œβ”€ CRITICAL: rm -rf /, System.exit(), Runtime.exec()       β”‚
β”‚  β”œβ”€ CRITICAL: os.system(), subprocess(shell=True)            β”‚
β”‚  β”œβ”€ CRITICAL: eval(), exec(), __import__()                   β”‚
β”‚  β”œβ”€ WARNING:  socket, urllib, http requests                  β”‚
β”‚  └─ WARNING:  absolute path access (/etc, C:\\Windows)        β”‚
β”‚                                                             β”‚
β”‚  LAYER 2: AST ANALYSIS (abstract syntax tree)                β”‚
β”‚  β”œβ”€ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ² Π½Π° Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ                 β”‚
β”‚  β”œβ”€ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ высокого риска                 β”‚
β”‚  └─ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° доступа ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС                     β”‚
β”‚                                                             β”‚
β”‚  LAYER 3: DOCKER ISOLATION                                  β”‚
β”‚  β”œβ”€ Network: none (полная изоляция)                       β”‚
β”‚  β”œβ”€ Filesystem: read-only volumes                           β”‚
β”‚  β”œβ”€ Resources: CPU/RAM limits                               β”‚
β”‚  β”œβ”€ No privilege escalation                                   β”‚
β”‚  └─ Auto-kill after 25s timeout                             β”‚
β”‚                                                             β”‚
β”‚  LAYER 4: BLACKLIST ENFORCEMENT                              β”‚
β”‚  β”œβ”€ Permanent ban for security violations                   β”‚
β”‚  β”œβ”€ Permanent ban for 3 failed attempts                     β”‚
β”‚  └─ Permanent ban for files >100MB                        β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

### РСакция Π½Π° ΡƒΠ³Ρ€ΠΎΠ·Ρ‹:

| Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ | ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ | РСакция | Blacklist |
|---------|-------------|---------|-----------|
| CRITICAL | Π—Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Π² ΠΊΠΎΠ΄Π΅ | НСмСдлСнная остановка, ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ TG | **PERMANENT** |
| WARNING | ΠŸΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚ | Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Ρ‹ΠΌ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠΌ | НСт |
| DOCKER FAIL | Π’Ρ‹Ρ…ΠΎΠ΄ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° | Убийство ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π°Π½Π°Π»ΠΈΠ· Π»ΠΎΠ³ΠΎΠ² | По Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ |
| TIMEOUT | >25s выполнСния | ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅, retry с ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ | ПослС 3 ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ |

---

## 5. Π›ΠžΠ“Π˜ΠšΠ Π Π•Π‘Π£Π Π‘ΠžΠ’ (Resource Logic)

### Docker Resource Calculation: ЀиксированныС ступСни

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              CPU ALLOCATION (фиксированныС ступСни)          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  Π Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° (строк)    β”‚  CPU   β”‚  ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°          β”‚
β”‚  ───────────────────────┼────────┼───────────────────────── β”‚
β”‚  < 1,000                β”‚   2    β”‚  ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ скрипт          β”‚
β”‚  1,000 - 5,000          β”‚   4    β”‚  Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ          β”‚
β”‚  > 5,000                β”‚   6    β”‚  Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ сСрвис          β”‚
β”‚                                                             β”‚
β”‚  RAM = 512MB + (file_size_kb / 10)                         β”‚
β”‚  ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Ρ„Π°ΠΉΠ» 1024KB β†’ 512 + 102.4 = ~614MB                β”‚
β”‚                                                             β”‚
β”‚  HARD LIMITS:                                               β”‚
β”‚  β€’ CPU: max 6 (Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 6 физичСских ядСр)                β”‚
β”‚  β€’ RAM: max 4096MB (4GB)                                   β”‚
β”‚  β€’ Swap: disabled (memswap = memory)                       β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

### Rate Limit Management:

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    RATE LIMIT STATES                         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  GITHUB API:                                                β”‚
β”‚  β”œβ”€ GREEN (>1000): ΠΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°                        β”‚
β”‚  β”œβ”€ YELLOW (100-1000): ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π² Π»ΠΎΠ³Π°Ρ…               β”‚
β”‚  β”œβ”€ ORANGE (10-100): Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ TG, ΠΏΠ°ΡƒΠ·Π° 60s              β”‚
β”‚  └─ RED (<10): ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΠΏΠ°ΡƒΠ·Π°, ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ reset            β”‚
β”‚                                                             β”‚
β”‚  OPENAI API:                                                β”‚
β”‚  β”œβ”€ GREEN: ΠΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°                                β”‚
β”‚  β”œβ”€ YELLOW: ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Claude (Ссли доступСн)          β”‚
β”‚  └─ RED: STOP PROGRAM, ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ TG                       β”‚
β”‚                                                             β”‚
β”‚  DOCKER:                                                    β”‚
β”‚  β”œβ”€ GREEN: ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π·Π°ΠΏΡƒΡ‰Π΅Π½, рСсурсы доступны              β”‚
β”‚  β”œβ”€ YELLOW: Высокая Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° CPU/RAM                        β”‚
β”‚  └─ RED: НСвозмоТно Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ β†’ остановка         β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

---

## 6. Π›ΠžΠ“Π˜ΠšΠ Π’ΠžΠ‘Π‘Π’ΠΠΠžΠ’Π›Π•ΠΠ˜Π― (Recovery Logic)

### Checkpoint System:

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    CHECKPOINT STRATEGY                         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  БОΠ₯Π ΠΠΠ―Π•Πœ Π² SQLite послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ шага:           β”‚
β”‚  β€’ FETCHING β†’ files_downloaded, linked_issues               β”‚
β”‚  β€’ ANALYZING β†’ solution_plan, context                       β”‚
β”‚  β€’ CODING β†’ generated_code, commit_message                  β”‚
β”‚  β€’ TESTING β†’ test_results, docker_logs                      β”‚
β”‚  β€’ CREATE_PR β†’ pr_number, branch_name, commit_sha           β”‚
β”‚                                                             β”‚
β”‚  ПРИ Π‘Π‘ΠžΠ• (crash/restart):                                   β”‚
β”‚  1. Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ всС issue со status β‰  completed/failed         β”‚
β”‚  2. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ: ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ послСдний successful checkpoint  β”‚
β”‚  3. Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ state machine с этого шага                  β”‚
β”‚  4. ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ                                     β”‚
β”‚                                                             β”‚
β”‚  ПРИ ΠžΠ¨Π˜Π‘ΠšΠ• (error in step):                                 β”‚
β”‚  1. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ error_details Π² attempts Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ               β”‚
β”‚  2. Increment attempt_counter                                β”‚
β”‚  3. If attempt < 3 β†’ return to CODING with error context    β”‚
β”‚  4. If attempt >= 3 β†’ BLACKLIST permanent                   β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

---

## 7. Π˜ΠΠ’Π•Π“Π ΠΠ¦Π˜ΠžΠΠΠΠ― Π‘Π₯Π•ΠœΠ (Integration Map)

```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                         EXTERNAL SERVICES MAP                                β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                             β”‚
β”‚   GITHUB.COM                    OPENAI API                    DOCKER DESKTOP β”‚
β”‚   ───────────                   ───────────                   ────────────── β”‚
β”‚   β€’ REST API v3                 β€’ GPT-4 (primary)               β€’ Local daemonβ”‚
β”‚   β€’ GraphQL API v4              β€’ Claude-3 (manual fallback)    β€’ Windows exeβ”‚
β”‚   β€’ Dual tokens (read/write)    β€’ Token counting                β€’ Images:     β”‚
β”‚   β€’ Webhooks (optional)         β€’ Rate limit tracking             python:3.11 β”‚
β”‚                                   β€’ Cost tracking                 openjdk:17 β”‚
β”‚                                                                             β”‚
β”‚   TELEGRAM API                  GMAIL IMAP                    LOCAL SYSTEM   β”‚
β”‚   ───────────                   ───────────                   ────────────── β”‚
β”‚   β€’ Bot API (aiogram 3)         β€’ imap.gmail.com:993          β€’ SQLite DB   β”‚
β”‚   β€’ Inline keyboards            β€’ App Password                β€’ File system β”‚
β”‚   β€’ Callback queries            β€’ 10-min polling              β€’ Logs (JSON) β”‚
β”‚   β€’ Chat notifications          β€’ HTML/Plain text parsing                     β”‚
β”‚                                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

---

## 8. Π–Π˜Π—ΠΠ•ΠΠΠ«Π™ Π¦Π˜ΠšΠ› Π—ΠΠ”ΠΠ§Π˜ (Issue Lifecycle)

```
CREATED (Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ»ΠΈ сканСром)
    β”‚
    β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ PENDING │◄────────────────────────────────────────┐
β”‚         β”‚                                         β”‚
β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜                                         β”‚
     β”‚                                               β”‚
     β”‚ queue.get()                                   β”‚
     β–Ό                                               β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚
β”‚FETCHING │────→│ANALYZING│────→│ CODING  β”‚         β”‚
β”‚         β”‚     β”‚         β”‚     β”‚         β”‚         β”‚
β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜         β”‚
     β”‚               β”‚               β”‚              β”‚
     β”‚error          β”‚error          β”‚error         β”‚
     β”‚               β”‚               β”‚              β”‚
     β–Ό               β–Ό               β–Ό              β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚
β”‚ BLACKLISTβ”‚    β”‚ RETRY   β”‚     β”‚ RETRY   β”‚         β”‚
β”‚ permanentβ”‚    β”‚ (1/3)   β”‚     β”‚ (2/3)   β”‚         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜         β”‚
                     β”‚               β”‚               β”‚
                     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜               β”‚
                                     β”‚               β”‚
                                     β–Ό               β”‚
                              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”‚
                              β”‚ RETRY   β”‚β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β”‚ (3/3)   β”‚   return to CODING
                              β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜   with error context
                                   β”‚
                              errorβ”‚
                                   β–Ό
                            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                            β”‚ BLACKLISTβ”‚
                            β”‚ permanentβ”‚
                            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

SUCCESS PATH:
CODING ──→ TESTING ──→ CREATE_PR ──→ COMPLETED
            β”‚            β”‚
            β”‚            β–Ό
            β”‚       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
            β”‚       β”‚  NOTIFY β”‚
            β”‚       β”‚  TG: PR β”‚
            β”‚       β”‚  createdβ”‚
            β”‚       β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜
            β”‚            β”‚
            β–Ό            β–Ό
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚  EMAIL  β”‚   β”‚  EMAIL  β”‚
       β”‚  wait   │◄──│  merged β”‚
       β”‚  10 min β”‚   β”‚  check  β”‚
       β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜
            β”‚            β”‚
            β–Ό            β–Ό
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚  NOTIFY β”‚   β”‚  NOTIFY β”‚
       β”‚  TG:    β”‚   β”‚  TG:    β”‚
       β”‚ success β”‚   β”‚ merged  β”‚
       β”‚ $ earnedβ”‚   β”‚ +buttonsβ”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Π­Ρ‚ΠΎ полная глубокая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π±Π΅Π· ΠΊΠΎΠ΄Π°. ВсС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, состояния ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° взаимодСйствия описаны для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

About

MAT test

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors