[report] Автономное тестирование стенда — проход #2 (подробный отчёт: агенты, стадии, who-found-what, real-vs-false, улучшения процесса) #219
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
gitmost (Docmost fork + git-sync) — синтез QA и мета-отчёт
1. Краткое резюме
Находка с наибольшим impact: единственный неидемпотентный merge в
apps/server/src/integrations/git-sync/services/yjs-body-merge.tsвызывает тихое, неограниченное дублирование контента, которое раздувает и git-vault, и БД на каждом цикле синхронизации, без единого подключённого клиента. Это независимо всплыло у двух разных тестеров (editor-content на страницах с таблицами/callout'ами, git-roundtrip на блоках с дублирующимся контентом), и оба случая сводятся к одному и тому же сопоставлению блоков по содержимому. Это единственная проблема, которая должна блокировать демонстрацию фичи git-sync клиенту.Самая важная коррекция, сделанная в ходе верификации: два заявления тестера dual-edit уровня HIGH/medium о потере данных («UI-правка уничтожена git-push'ем») не пережили независимое воспроизведение — одно было понижено до спекулятивного, второе воспроизвелось в противоположном направлении. Стадия verifier в QA-пайплайне здесь оправдала себя, поймав галлюцинированный по серьёзности нарратив о потере данных.
2. Какие агенты отработали и как прошла каждая стадия
Стадия 0 — Recon (
recon)Установил базовую линию стенда: подтвердил, что экраны после авторизации возвращают 0 console-ошибок / 0 HTTP>=400, нанёс на карту панель AI-чата как здоровую, но не сконфигурированную, и зафиксировал обходной приём для тулинга Playwright/chromium (
executable_path=/home/claude/.cache/ms-playwright/chromium-1148/chrome-linux/chrome --no-sandbox), от которого зависел каждый последующий браузерный скрипт. Итог: прочный фундамент, найдены только безобидные/энвовые сигналы (401-проба до логина) — ровно то, что и должен производить recon.Стадия 1 — Шесть slice-тестеров
> [!warning]конвертируется в нативный callout, нашёл баги callout-paste и new-page-empty-body.Стадия 2 — Независимые verifier'ы (Doer-Verifier)
Прогнал воспроизведение по каждой находке против живого стенда, используя «золотой стандарт» оракула — git-export — где только возможно. Эта стадия проделала реальную работу: она повысила один спекулятивный отчёт (new-page empty body) до подтверждённого, исправила причинно-следственные истории (дублирование вызвано циклом синхронизации, а не перезагрузкой; потеря new-page — это тайминг collab, а не синтетическая вставка) и понизила заявления dual-edit о потере данных. Два вердикта вернулись с placeholder-строками доказательств («e», «test») — см. пробелы ниже.
3. Кто что нашёл (только подтверждённое)
> [!info]-> обычный blockquote4. False positives (сообщены, но не воспроизведены)
Все три концентрируются в таймингах гонок одновременного редактирования — самое трудное для детерминированного воспроизведения из скрипта, и ровно там, где кластеризуются false positives.
5. Ограничения окружения / не-баги (корректно обработаны, исключены из подсчёта багов)
executable_path.> [!warning]-> нативный callout — проверено как ПОЛОЖИТЕЛЬНОЕ, работает как задумано.6. Пробелы покрытия (честно)
7. Конкретные предложения по улучшению этого QA-процесса / skill'а
docmost: sync. Вшейте «clone, ждать 3 цикла, re-clone, diff по байтовым счётчикам на каждой странице» в charter git-sync как проверку по умолчанию — она ловит порчу от неидемпотентного merge, которую не поймала бы ни одна in-session проверка UI.git-sync находки этого прохода
c6f44420— нормализация ключа merge по дефолтам схемы; + индемпотентность реконсиляции7a7b840e)git pushв vault часто отклоняется как non-fast-forward, потому что собственные auto-commit'ы Docmost гоняются с пользователемИз них: дублирование — починено и запушено (живое подтверждение: FULLEDIT 315→315 стабильно, idle-churn 'sync 141 page(s)' каждый цикл → 0). Остаются НЕ-критичные: flush-latency ~10s (тайминг debounce+poll, не data-loss) и non-fast-forward push race (в основном снят устранением churn). По ним — решение хозяина, можно отдельным тикетом.
False positives (убиты verifier-проходом)
🤖 web-test-orchestrator (проход #2, 27 агентов)