21 слайд · ← → · зібрано зі звіту

existing-system audit

SaaS ERP

Два роки чудової інженерії без жодного запуску. Система вміє тихо заблокувати роботу цеху і не має способу про це повідомити, і саме тому власник двох діючих фабрик щоразу відступає.

Повний звіт ↗1 / 21

PL1 · direction · proposed

Скарзі потрібна адреса: чат стає трекером, Sentry заводить issue сам.

Що закриває
RC1 (скарзі власника нема куди потрапити) · D6 (Telegram як дошка задач) · R5 (власник знову зупиниться на введенні даних) · R1 (конвеєр стає і ніхто не дізнається) · D3 (нуль спостережуваності)
Щодо чинних стратегій
уточнює S3 (дошка задач — це Telegram)
Механізми
Три дії, жодних зборів. Разова: агент проходить експорт чату і заводить у GitHub Projects кожну незакриту вимогу, скаргу і обіцянку, з датою та автором з оригіналу. Стала: раз на тиждень той самий прохід по новому, з тихим виходом, коли заводити нічого. Автоматична: інтеграція Sentry заводить issue на кожну нову помилку в проді сама, без людини в ланцюгу.
Виконується
GitHub Projects на репозиторії бекенду: разова конвертація історії, щотижневий прохід агентом по чату, інтеграція Sentry → GitHub Issues
Перегляд
2026-11-13

Найдешевша політика в наборі, і водночас та, що б'є в найдорожчий дефект. Ламається все в одному місці: канал, який працює за дошку задач, не має стану.

Повністю: Політики та операції ↗2 / 21

PL2 · direction · proposed

main захищений зеленим rspec, і кожен прогін публікує покриття.

Що закриває
RC3 (сигнал є, але він нічого не коштує) · D1 (rspec поза CI)
Щодо чинних стратегій
замінює S2 (відомий провал тесту — нормальний стан); ратифікує S1 (якість забезпечується локально й добровільно)
Механізми
Автоматизація: джоба в наявному воркфлоу. SimpleCov у групі :test, артефакт покриття як вихід джоби і поріг, нижче якого злиття не проходить: сьогодні цифри не бачив ніхто, тож перший крок це зробити їх видимими, а не одразу карантинними. Сім відомих падінь розділяються, а не карантинуються гуртом : шість у відеопідсистемі (videos_spec, aws_events_controller_spec) ідуть у карантин з issue і датою, а сьоме — users_controller_spec — карантину не підлягає, бо це живий дефект, і його лагодять.
Виконується
Обов'язкова перевірка GitHub Actions на main і staging (детерміністична сходинка)
Перегляд
2026-09-13

У проєкті є 6 114 прикладів rspec і 95,71% покриття рядків. BE-розробник запускає їх регулярно , тож набір не лежить мертвим — він прикриває ті зміни, які проходять через його руки.

Повністю: Політики та операції ↗3 / 21

Грант на 100 тис. USD дорівнює вже витраченому, а умова його це запуск.

Стартап-грант до 100 тис. USD вимагає запущеної версії продукту, бажано з доходом. Тред прожив тиждень у грудні 2025 і згас після перенесеної зустрічі. За наступні сім місяців слово «грант» в експорті не зустрічається жодного разу.

Повністю: Бізнес-контекст: гроші, яких менше, ніж здається ↗4 / 21

Резервний шлях отримав повну розробку і сім e2e-тестів. Петля — ні.

У травні 2025 розробник спроєктував «резервну функцію, щоб адмін міг вручну внести дані про виконанні процеси». У червні 2026 вона отримала повний CRUD процесів зміни у вебі й сім e2e-специфікацій. Мобільна половина петлі — та, що несе обіцянку — з серпня 2025 на людях не перевірялась.

Повністю: Продукт: обіцянка, яку перевіряли один раз ↗5 / 21

Троє людей, три ролі, і жодна не тримає інженерний напрям.

Власникпредметна істина, пріоритети, гроші, доступ до двох фабриктехнічна стратегія — немає експертизи
BE-розробникдомен backend, інфраструктура Herokuне бере на себе покращення машини та інженерне лідерство
FE-розробникCI, ADR, PRD, harness, e2e, фактично і backend тежнемає глибокої BE-експертизи; 2026-07-30 питає, чи шукати роботу
Повністю: Організація: у кімнаті немає дорослого ↗6 / 21

Три числа покриття, яких до цього аудиту не бачив ніхто.

  • 95,71%покриття backend від rspec, 6 114 прикладів
  • 79,05%покриття backend від e2e, 303 тести
  • 80,72%покриття frontend від e2e
  • 0з цього було коли-небудь виміряно до цього аудиту
Повністю: Інженерія: висока якість без жодних рамок ↗7 / 21

Система має вбудований спосіб заблокувати роботу і жодного способу про це повідомити.

Резерв кількості без строку давності зупиняє наступну людину на операції. Спостережуваності нуль. Для фабрики час до виявлення дорівнює часу простою, а механізм виявлення сьогодні — це власник, який пише в Telegram.

Повністю: Механізм, що зупиняє цех ↗8 / 21

Сім стратегій уже діють, і записана лише одна.

RuleWritten where?Health
S1Якість забезпечується локально й добровільно, а не рамками. Доказ : 6 114 прикладів, 95,71% покриття, і жодної джоби, що їх запускає.ніде не записананабір чудовий, не захищає нікого
S2Відомий провал тесту є нормальним станом. Доказ : сім падінь rspec відомі розробникам, задокументовані і терпимі досі.тіньова — тримається машиною, не документомпрацює як норма і руйнує сигнал
S3Дошка задач — це Telegram. Доказ : 5 735 повідомлень, жодного трекера; дата запуску, грант і виміряна скарга розчинились однаково.ніде не записанані — у каналу немає стану
S4Архітектурну дисципліну задає фронтенд. Доказ : межі FSD як помилки CI, два ADR, harness на 426 рядків, запінені скіли.ратифікована у frontend_v2/CLAUDE.md і рамках CIтак — найкраще працююча стратегія проєкту
S5Backend-контекст живе в приватній пам'яті агента розробника. Доказ : кореневого CLAUDE.md чи AGENTS.md немає; на весь репозиторій два harness-артефакти, обидва фронтендові.ніде не записанані — знання не кумулятивне
S6Коли впровадження буксує — переписуємо. Доказ : v1→v2 з лютого 2026, хвиля 70/44/35 комітів на місяць, переробка моделі матеріалів у липні 2026. З вересня 2026 — переписування мобільного застосунку, тоді як запуску на фабриці так і не було .ніде не записана, але приписова на практиціпродукує якість, не продукує запуск
S7Продуктову обіцянку ніхто не тримає. Доказ : петля провалилась у серпні 2025, не перевірялась відтоді, резервний шлях виріс поруч, а письмового сліду рішення про це немає .за умовчанням — через відсутність рішенняні
Повністю: Стратегія, яка вже діє ↗9 / 21

Шість причин, і жодна з них не про якість коду.

Вхід у систему коштує дорожче за вихід із неї; збій тихий і небезпечний одночасно; скарзі власника нема куди потрапити; відомий дефект нічого не коштує ігнорувати; обіцянку не перевіряють і не знімають; за інженерну машину і послідовність робіт не відповідає ніхто. Жодна з шести не лікується переписуванням коду — усі шість лікуються рішеннями про те, куди йде сигнал і хто його читає.

Повністю: Першопричини ↗10 / 21

Карта ризиків: небезпечна чверть — не гучна, а тиха.

помітність →
гучні, але малоймовірнігучні й імовірнітихі й малоймовірнітихі й імовірні — найдорожчіR1Конвеєр стає: трекінгу помилок немає, сигнал приходить від людиниR3Петля скану: помітність нульова до першого дня в цехуR6Мобільний застосунок: аудит його не бачив, імовірність невідомаR4Гроші: квитанції видно, справжній рахунок — у таблиці власникаR5Власник зупинився на введенні даних: справдилось у вересні 2026R2Відхід розробника: знижено переписуванням мобільного, а не домовленістю
ймовірність →
  1. R1Конвеєр стає: трекінгу помилок немає, сигнал приходить від людини
  2. R3Петля скану: помітність нульова до першого дня в цеху
  3. R6Мобільний застосунок: аудит його не бачив, імовірність невідома
  4. R4Гроші: квитанції видно, справжній рахунок — у таблиці власника
  5. R5Власник зупинився на введенні даних: справдилось у вересні 2026
  6. R2Відхід розробника: знижено переписуванням мобільного, а не домовленістю
Шість ризиків: імовірність проти помітності. Позиції оцінені з опису кожного ризику в реєстрі нижче, не виміряні.
Повністю: Реєстр ризиків ↗11 / 21

Шість ризиків. Найдорожчий — той, якого ніхто не помітить.

RiskFlagLikelihoodWould you notice?
R1Конвеєр стає, і ніхто не дізнаєтьсявисока в перший же тиждень реальної роботи — обидва сценарії вже траплялись у 2025практично нульова: трекінгу помилок немає, логи Heroku живуть буфером на ~1 500 рядків без пошуку, єдиний надійний канал сигналу — власник пише в Telegram
R2Єдиний носій знань і єдиний кандидат у лідери йдезнижена, але не знята: для FE-розробника проєкт — повна зайнятість, і питання 2026-07-30 про пошук роботи виникло саме через брак задач; з вересня 2026 він переписує мобільний застосунок. Завантаження дала нова переробка, а не домовленість, тож ризик повернеться разом із її завершеннямвисока — про це вже сказано вголос; це рідкісний випадок гучного ризику
R3Петля скану досі не працює, і це з'ясується вже після онбордингуневідома і саме тому небезпечна: репозиторій мобільного застосунку аудиту недоступнийнульова до першого дня в цеху
R4Гроші закінчаться раніше за запусксередня: суми коливаються, є розрив у виплатах на п'ять місяців, є величина невиплаченогосередня — квитанції видно, але справжній рахунок ведеться в таблиці, недоступній аудиту
R5Власник знову зупиняється на введенні данихсправдився: 2026-09-08 запуску на фабриці досі немає, власник зупинився на тому, як згрупувати обладнання; механізму завантаження так само немаєвисока — це видно за днями мовчання в каналі
R6Мобільний застосунок містить невідомі аудиту дефектиневідоманизька
Повністю: Реєстр ризиків ↗12 / 21

Сім боргів, і найдорожчого з них не видно на жодному дашборді.

DebtKind
D1rspec поза CIорганізаційний і технічний
D3Нуль спостережуваностітехнічний
D4Дві клієнтські поверхні на дві пари рукстратегічний
D8Нуль рамок безпеки і гігієни залежностейтехнічний
D5Backend-контекст існує лише в приватній пам'яті агентазнаннєвий
D6Telegram виконує роль дошки задачорганізаційний
D7Резерв кількості без строку давностітехнічний
Повністю: Реєстр боргів ↗13 / 21

Вісім активів. Машина зібрана добре — не підключена нікуди.

CreditStatus
C1Набір backend-тестів: 6 114 прикладів, 95,71% рядків, 82,12% гілокпрацює, але прикриває лише половину змін
C2303 e2e-тести у 110 файлах, з інфраструктурою фікстурпідтверджений — набір проходить повністю
C3Фікстури e2e як еталонний набір для агентного онбордингупідтверджений — найцінніший актив під B3
C4Система вже видає повну технологічну карту виробупідтверджений — це вихід системи, а не вхід
C8e2e дає 79% покриття backend і 81% frontendпідтверджений
C5Документація: PRD, user stories, моделі даних, два ADRпідтверджений
C6Agent harness фронтендупідтверджений
C7Власник як предметний оракулпідтверджений
Повністю: Реєстр активів ↗14 / 21

Швидкі перемоги: кожна коштує день агентного часу або менше.

WinFeedsDayStatus
E2Джоба rspec у наявному воркфлоу + карантин семи відомих падінь із issue. Виконує PL2.verification: тести в конвеєрі0.5
E3Записувати покриття обома наборами, а не лише rspec: SimpleCov у групі :test дає 95,71% від юніт-тестів і 79,05% від e2e (той самий SimpleCov у процесі Puma), vite-plugin-istanbul плюс nyc дають 80,72% фронтенду. Артефакт у CI і Codecov роблять C1 і C8 видимими команді вперше: сьогодні жодної з цих цифр не бачив ніхто.verification: планка покриття0.5
E4Sentry у backend і в обох фронтендах; сорсмапи вже вивантажуються, приймача бракує. Одразу з інтеграцією Sentry → GitHub Issues, бо саме вона робить PL1 повним: машинний сигнал потрапляє в той самий трекер, що й людський. Закриває половину D3.observability: трекінг помилок0.5
E5Підключити log drain на Heroku. Зараз логи живуть у Logplex: буфер на ~1 500 рядків і щонайбільше тиждень, без пошуку . Drain пересилає кожен рядок у зовнішній сервіс, де він зберігається і шукається, тож розбір збою в цеху перестає означати «відтворіть його ще раз».observability: структуровані логи0.2
E6Окрема база для rspec у тестовому стеку — прибирає deadlock, через який набір не стартує штатно.verification: швидкий зворотний зв'язок0.2
E7Верхнє поле на етикетці QR — названа розробником причина поганого сканування в серпні 2025.release safety: якість друку0.1
E8Кореневий AGENTS.md для backend за зразком frontend_v2/CLAUDE.md: правила, команди, пастки, карта доменів. Закриває D5.agent harness: маршрутизація контексту1.0
E10brakeman і bundler-audit як геми плюс дві джоби в наявному воркфлоу. Закриває половину D8.static gates: сканери безпеки0.3
E11.github/dependabot.yml на два екосистеми (bundler і npm). Друга половина D8.dependency hygiene: автоматичні оновлення0.2
E9Скрипт дампу і відновлення продакшн-бази з перевіркою — передумова будь-якого пілоту на реальних даних.release safety: перевірені бекапи0.5
Повністю: Швидкі перемоги ↗15 / 21

Сім ставок, і вердикт по кожній — робити, чекати чи вирішити.

BetVerdictAddressesCost
B1Зробити збій помітним і безпечним: трекінг помилок, таймаут на резерв незавершеного процесу, ідемпотентність створення процесу, алерт на заблоковану операцію. R1 · RC6 · D3 · D7Робити≈1 тиждень
B2Один виріб, один цех, паралельно з чинним обліком: завантажити виріб із того джерела, яке власник має насправді (Q6), руками або агентом. Критерій готовності вже існує: система має видати техкарту, що збігається з паперовою C4. Далі пройти повний цикл до закритої зміни й нарахованої зарплати, звіряючи з чинним обліком щодня. RC4 · RC5 · R3 · R5Робити≈6 тижнів, з них 2 у цеху
B4Призначити відповідального за інженерну машину: одна людина відповідає за CI, деплой, спостережуваність і послідовність робіт — із доступами, які це дозволяють. Кандидат один. RC2 · R2 · D5Робитиодна розмова + доступи
B3Агентний онбординг як повторюваний механізм: скіл, що читає вихідні дані власника — у тому форматі, який з'ясує Q6, — і наповнює фабрику через API, ідемпотентно і з сухим прогоном. Навчається на фікстурах e2e як на еталонному наборі C3 і звіряється проти них. RC5 · C3Чекати на B2≈2 тижні після
B5Мобільний застосунок: або провести аудит тією ж дисципліною, або офіційно визнати веб-режим основним і зняти обіцянку. R6 · RC4Вирішити≈3 дні на аудит
B7Разова консультація QA по наявному набору e2e: чи правильна методологія, яких критичних шляхів бракує. Не наймання — саме зовнішній погляд на те, що вже написано. C2 · R3 · RC4Купити разовокілька годин консультації
B6Міграція v1→v2 доведена до кінця без цього звіту: збірку v1 прибрали з ланцюга 2026-07-10, сам каталог внесли до .slugignore 2026-07-22.ЗробленоD4
Повністю: Стратегічні ставки ↗16 / 21

Послідовність: що зараз, що наступного кварталу, що на горизонті.

Зараз (тижні)
Наступний квартал
Горизонт 2
Безпека і машинапередумова всього іншого
Швидкі перемоги E2‑E11 (≈4 дні)
B1 — збій помітний і безпечний
B4 — відповідальний за машину
Запускєдине, що змінює становище
Дата пілоту
B2 — пілот на одному виробі (6 тижнів)
Друга фабрика
Перший зовнішній клієнт
Вартість входу
B3 — агентний онбординг
Онбординг як частина продукту
Клієнти
B5 — рішення щодо мобільного
Гроші
Самореєстрація і білінг
Трек гранту
Повністю: Пріоритети інвестицій ↗17 / 21

Дві уявні переваги SaaS ERP виявилися стандартом ніші: цехове сканування і локальність.

«Швейка 8» заявляє понад 550 українських підприємств, має штрихкодування техоперацій у готовому рішенні і продуктизований платний онбординг «Примірка» (2 місяці, 11 000 грн, зараховується в покупку). Мобільна петля в цеху — не відмінність SaaS ERP, а очікуваний елемент, який у конкурента відвантажений, а тут непідтверджений.

Повністю: Ринок: ніша зайнята, і зайнята міцніше, ніж здавалося ↗18 / 21

Заборона 1С і BAS не примушує приватну фабрику. Вікно вужче, ніж здавалося.

Перелік забороненого ПЗ від 9 січня 2026 стосується держсектора і критичної інфраструктури; законопроєкт №13505 зі штрафами не ухвалено. Водночас BAF проєктувався як наближення до 1С, тож переїзд 1С → BAS дешевший за переїзд 1С → SaaS ERP, і хвиля міграції тече переважно туди.

Повністю: Ринок: ніша зайнята, і зайнята міцніше, ніж здавалося ↗19 / 21

Не вірте деку на слово: у звіту є дати перевірки.

2026-09-13PL2: чи рамки увімкнені й чи хоч раз зупинили злиттятехнічний відповідальний (B4)
2026-09-13Швидкі перемоги E2–E11: що відвантажено, що перевищило свій день і що саме чинило опіртехнічний відповідальний
2026-10-13PL3 і PL5: чи стартував пілот, чи зведено щоденну розбіжністьвласник бізнесу
2026-10-13PL4: у якій колонці фактично була роботавласник бізнесу
2026-11-13PL1: скільки скарг стало issue і скільки з них закритотехнічний відповідальний
2026-11-13C1 і C2: чи перейшли з проєктних у підтвердженітехнічний відповідальний
2027-02-13PL6: переписування мобільного застосунку почалося у вересні 2026 — чи записані його причина, критерій виходу і дататехнічний відповідальний
Повністю: Список спостереження ↗20 / 21

Перед висновками

112 тверджень із джерелом

знайдено44%50
веб20%22
стейкхолдер29%32
виведено3%3
припущено4%5

Скільки з почутого справді знайдено в джерелах.

Повний звіт ↗21 / 21