[report] Автономное тестирование стенда — подробный отчёт (агенты, стадии, находки, real-vs-false, предложения) #217

Closed
opened 2026-06-26 07:33:24 +03:00 by Ghost · 0 comments

gitmost QA мета-отчёт — git-sync + UI smoke / состязательный проход

Stand: Docmost fork с нативным двусторонним git-sync. UI на :5173, API + git smart-HTTP на :3000. В пространстве "General" (019f01fd-...) git-sync включён. AI-провайдер намеренно НЕ настроен. Build ~v0.93.0-275-g937f04b7.

Method: skill web-test-orchestrator — фазовый recon -> charter'ы по слайсам -> исполнение в виде персон -> oracle FEW HICCUPPS + дешёвые сигналы (console errors, HTTP 4xx/5xx, failed requests, пустые страницы) -> независимый Doer-Verifier проход. Жёстко соблюдались правила: EVIDENCE BEFORE CLAIM (доказательство до утверждения) и DISCONFIRM BY DEFAULT (опровергай по умолчанию — reload-to-test-persistence).


1. Headline numbers

Кол-во
Сырых находок подано 24
Уникальных реальных дефектов после dedup 11 (4 UI + 7 git-sync)
из них severity HIGH 3 (все git-sync, все с потерей данных)
из них MEDIUM 4
из них LOW (включая by-design / ожидаемые шероховатости) 4
False positives, убитых verifier'ом 4 (включая один HIGH, понижённый до не-бага)
Наблюдения ожидаемого поведения / ограничения окружения (проверены, не баги) ~7

Суть этого прохода: оболочка UI чистая (ноль console errors / ноль 4xx-5xx на каждом аутентифицированном экране). Реальный риск сконцентрирован в сходимости git-sync ↔ живой редактор: три независимых пути тихой потери данных severity HIGH, все растущие из одного механизма — Yjs-документ открытого редактора в браузере никогда не сходится с git ingest, и его устаревший autosave побеждает.


2. Какие агенты отработали и как прошла каждая стадия

Recon (1 агент). Залогинился, прошёл /home, /s/general, редактор, поиск Ctrl+K, все вкладки Settings со слушателями console/response/requestfailed. Outcome: чистый baseline (только безобидный jotai-warning о deprecation atomFamily) плюс карта маршрутов с ожидаемыми pre-login 401 и legacy-deeplink 404. Также поймал первый намёк на поведение debounce у git-sync (транзиентный _.md). Хорошее скоупирование; корректно классифицировал собственный шум (pre-auth probes) как не-баги.

6 тестеров слайсов:

  • editor-content tester — вставка блоков, rich-контент, изображения, untitled-страницы, git-экспорт контента. Found: непортируемость изображений (REAL, medium), untitled _.md (REAL, low), flushSync (REAL, но неверно заскоупен), title-drop (FALSE — гонка инструментария). 2 real / 2 partial-or-false.
  • tree-nav — операции с деревом, корзина. Found: Restore-from-Trash "completely broken" (HIGH) — FALSE POSITIVE, пропущен второй шаг confirm-модалки (коллизия локатора). 0 real / 1 false (и это было самое громкое заявление).
  • share-search-settings — шаринг, поиск, настройки, AI-send. Found: дефолт includeSubPages (REAL, low) + AI-503 как ограничение окружения (корректно). 1 real / 0 false.
  • ai-chat-ui tester — плавающий чат. Found: застрявшее состояние New-chat-after-failure (REAL, medium, с точной корневой причиной в исходниках) + корректно классифицировал header-gate и 503 как намеренные / ограничение окружения. 1 real / 0 false. Лучшая работа по корневой причине среди тестеров слайсов.
  • git-roundtrip-tester — round trips редактор→git. Found: дублирование в начале документа (REAL, HIGH) + churn/push-rejection (REAL, medium) + untitled _.md (dup) + flushSync (REAL). Сильный, богатый доказательствами.
  • dual-edit — одновременное редактирование git+UI. Нашёл два бага с НАИВЫСШЕЙ ценностью: тихий откат открытого редактора + потеря при правке разных абзацев + механизм stale-island, каждый с решающим CONTROL'ом при закрытом редакторе. Плюс (ложная) строка BUG про git-clone. 3 real / 1 false. Агент с наивысшим сигналом.

Verifier pass (Doer-Verifier). Независимо перепрогнал каждую находку. Именно здесь skill себя оправдал: он убил 4 false positives (включая HIGH "Restore broken", который сожрал бы время владельца), исправил формулировку churn-находки (коммиты НЕ no-ops — они несут диф бага дублирования; просто сообщение неверно считает страницы) и переопределил скоуп flushSync-заявления. Также подтвердил каждый реальный баг потери данных с корневой причиной на уровне кода и контролями editor-open vs editor-closed. Честность verifier'а была высокой (например, пометил собственный поток ERR_INSUFFICIENT_RESOURCES и 429 как артефакты инструментария).


3. Dedup map (кто-что-нашёл)

  • flushSync warning — editor-content tester (как "during insertion", FALSE-скоуп) + git-roundtrip-tester (как "every editor page", VERIFIED). Смержено → 1 реальная low UI-находка.
  • Untitled _.md — editor-content tester + git-roundtrip-tester. Смержено → 1 реальная low git-sync находка.
  • Stale-island / потеря данных открытого редактора — dual-edit подал откат открытого редактора, потерю при правке абзацев И лежащий в основе механизм stale-island как 3 записи; это один причинный кластер (одна корневая причина, 3 симптома). Оставлены как 3 находки (2 git-sync HIGH + 1 UI medium), поскольку repro/impact различаются, но помечены как единая цель фикса.
  • AI-503 / "AI not configured" — подавалось ~4× в share-search-settings + ai-chat-ui tester + recon. Всё корректно — ограничение окружения; схлопнуто в одно наблюдение.

4. Единственный фикс, который важнее всего

Все три HIGH-бага имеют общую корневую причину в gitmost-datasource.service.ts (writeBody / collabGateway.openDirectConnection / mergeXmlFragments3Way): git ingest пишет серверный Y.Doc, но не сходится с in-memory Yjs-документом подключённого редактора в браузере и не даёт живого broadcast обратно в открытую комнату. Цепочка последствий: открытый редактор остаётся устаревшим → его следующий autosave затирает git-правку → PULL пушит затёртое тело обратно в vault как коммит docmost: sync → тихая потеря данных, при том что push рапортует успех. Баг дублирования в начале документа — это отдельная неидемпотентность реконсиляции, но именно он гонит churn коммитов и push-rejections. Починка сходимости + идемпотентности начала документа нейтрализует 5 из 7 git-sync находок.


5. Пробелы покрытия и заметки о честности

  • AI-фичи протестированы только негативно. Провайдер не настроен by design, поэтому каждый send в чат отдаёт 503. Мы проверили graceful degradation и нашли один реальный смежный UI-баг (сброс New-chat), но фактические happy paths AI-стриминга/инструментов/embeddings ни разу не задействованы. Это ENV-ограничение, а не вердикт продукту — корректность AI-поверхности фактически не тестировалась.
  • Контеншн auth rate-limit (HTTP 429) неоднократно блокировал verifier'ов (10 req/60s на IP, общий с собственными параллельными Claude-агентами пользователя). Один вердикт ("Restore from Trash") не смог получить живой click-through и был вынужден опереться на рассуждение по исходникам — честно залогирован как "speculative", без переоценки. Несколько verifier'ов сожгли время на retry-петлях.
  • Шум параллельных агентов: другой агент редактировал те же git-синхронизированные страницы (страницу переименовали в "RT Alphahello edit" посреди теста). Verifier'ы корректно отметили это как реальный шум, не менявший выводов, но он замутил пару трейсов подсчёта дублей.
  • Нет глубокого тестирования multi-user / permissions / groups / members сверх нагрузки (таблицы рендерятся). Нет mobile/responsive, нет offline, нет больших документов / perf, нет реального человеческого concurrent-3-way merge.
  • Trash/restore остался НЕРАЗРЕШЁННЫМ как позитив: мы доказали ложность заявления "broken", но так и не выполнили полный restore через modal-confirm end-to-end (заблокировано 429). Рекомендуется чистый ре-тест.

6. Improvement suggestions для этого QA-процесса / skill

  1. Осведомлённость о confirm-модалках в локаторах. Самый дорогой промах (false HIGH) пришёл от клика по пункту меню с надписью "Restore" и игнора одноимённого confirm в модалке. Добавить эвристику skill: когда появляется action-label, после клика проверять открытый dialog/confirm и ассертить терминальный сетевой вызов — не делать вывод "no API fired = broken", пока многошаговый confirm-UI не исчерпан. Считать "одноимённый контрол появляется дважды" известной ловушкой.
  2. Отличать "no-op" от "выглядит идентично". Churn-находка ошибочно пометила реальные, несущие контент коммиты как no-ops, потому что сообщение коммита неверно считает страницы. Правило skill: прежде чем звать коммиты "empty/no-op", запускать git diff HEAD~1 HEAD — судить по дифу дерева, никогда по сообщению.
  3. Карантин гонок инструментария для тайминга ввода. FP с title-drop пришёл от отправки нажатий до монтирования поля. Добавить постоянное правило: любая находка "first characters lost / input dropped" ОБЯЗАНА быть перетестирована с явным focus() + ожиданием готовности элемента, прежде чем пройти дальше speculative.
  4. Пинить версию git-клиента. Фантомный BUG: refs/files-backend.c был артефактом устаревшего клиента. Записывать git --version в доказательства каждой git-sync находки, чтобы клиентский шум отличался от серверных дефектов.
  5. Зарезервировать отдельную auth-личность / поднять throttle для QA. Контеншн 429 от общего IP (+ параллельные агенты пользователя) деградировал несколько верификаций и заставил один вердикт быть source-only. QA-only логин, обходящий throttle 10/60s, ощутимо улучшил бы надёжность verifier'ов.
  6. Явно кластеризовать причинно-связанные находки. 3 записи dual-edit — одна корневая причина; отчёт должен выносить поле "fix-cluster", чтобы владелец видел, что 1 фикс убивает 3 тикета, а не триажил их по отдельности.
  7. Помечать env-limitation находки как non-scoring сразу, чтобы они не раздували сырые счётчики (у нас было ~4 дубля AI-503). Pre-dedup проход по category=env-limitation срезал бы шум.
  8. Для git-sync конкретно — всегда прогонять CONTROL editor-open vs editor-closed. Именно контроли dual-edit сделали HIGH-баги неоспоримыми и изолировали причину до живых сессий. Возвести это в обязательный шаг шаблона git-sync charter'а.

Найденные git-sync баги (вынесены в фиксы на feat/git-sync)

  • [high] Git push в страницу с открытым редактором тихо откатывается -> потеря данных (нет конфликта, нет marker'а, нет ошибки)
  • [high] Одновременные правки РАЗНЫХ абзацев всё равно теряют git-сторону (three-way merge обходится, когда редактор открыт)
  • [high] Контент, вставленный в НАЧАЛО страницы, дублируется на каждом цикле двусторонней синхронизации (несходящаяся петля, неограниченная)
  • [medium] Двусторонняя синхронизация форсирует commit на каждый цикл опроса (churn истории) + частые non-fast-forward отказы push; сообщение коммита считает общее число страниц, а не изменённые
  • [medium] Git-sync vault не самодостаточен для изображений: экспортируется как закрытый авторизацией /api/files URL, бинарник не коммитится
  • [low] Untitled / null-title страницы сериализуются в '_.md' с разрешением коллизий через ' ~' (непрозрачные имена файлов)
  • [low] Одновременный git push отклоняется non-fast-forward, когда UI-правки продвинули ref vault'а (ожидаемая семантика git, мелкий UX)

False positives (убиты verifier-проходом)

  • [tree-nav] 'Restore from Trash полностью нефункционален' (заявлено HIGH) — НЕ РЕАЛЬНЫЙ БАГ. Обе точки входа restore идут через useRestorePageModal.openRestoreModal -> modals.openConfirmModal, поэтому один клик лишь ОТКРЫВАЕТ confirm-модалку; POST /api/pages/restore срабатывает только после клика по кнопке подтверждения 'Restore' в модалке. 'ZERO /api calls on click' — это спроектированное двухшаговое поведение модалки. Как
  • [editor-content tester] 'Поле заголовка может терять ведущие символы при наборе сразу после создания страницы' — артефакт инструментария, а не дефект продукта. Опровергнуто: когда title-редактору дают смонтироваться и явно фокусируют первым, набор при delay=0 проходил ЦЕЛИКОМ 5/5. Потеря возникает только когда нажатия отправляются через 0-200ms после клика Create, пока страница ещё навигируется/монт
  • [dual-edit] 'git clone выдаёт BUG: refs/files-backend.c:3175: initial ref transaction called with existing refs' — НЕ удалось воспроизвести (git 2.47.3, 7+ клонов, protocol v0 и v2, все EXIT=0 без строки 'BUG:'). ls-remote показывает корректно сформированный advertisement без дублирующихся refs (HEAD symref на refs/heads/main; кастомный refs/docmost/last-pushed живёт вне refs/heads и корректно игнорируется). M
  • [editor-content tester] 'flushSync console errors во время вставки блока в редакторе' (конкретика 'during block insertion') — НЕ удалось воспроизвести за два полных прогона с lists/dividers/images/tables/callouts/toggles/code (упоминаний flushSync 0, ошибок 0). NOTE: лежащий в основе flushSync-warning РЕАЛЕН и подаётся отдельно как подтверждённая gitmost-ui находка — он срабатывает на монт

🤖 web-test-orchestrator (multi-agent QA)

## gitmost QA мета-отчёт — git-sync + UI smoke / состязательный проход **Stand:** Docmost fork с нативным двусторонним git-sync. UI на :5173, API + git smart-HTTP на :3000. В пространстве "General" (019f01fd-...) git-sync включён. AI-провайдер намеренно НЕ настроен. Build ~v0.93.0-275-g937f04b7. **Method:** skill web-test-orchestrator — фазовый recon -> charter'ы по слайсам -> исполнение в виде персон -> oracle FEW HICCUPPS + дешёвые сигналы (console errors, HTTP 4xx/5xx, failed requests, пустые страницы) -> независимый Doer-Verifier проход. Жёстко соблюдались правила: EVIDENCE BEFORE CLAIM (доказательство до утверждения) и DISCONFIRM BY DEFAULT (опровергай по умолчанию — reload-to-test-persistence). --- ### 1. Headline numbers | | Кол-во | |---|---| | Сырых находок подано | 24 | | Уникальных реальных дефектов после dedup | **11** (4 UI + 7 git-sync) | | из них severity HIGH | **3** (все git-sync, все с потерей данных) | | из них MEDIUM | 4 | | из них LOW (включая by-design / ожидаемые шероховатости) | 4 | | False positives, убитых verifier'ом | **4** (включая один HIGH, понижённый до не-бага) | | Наблюдения ожидаемого поведения / ограничения окружения (проверены, не баги) | ~7 | **Суть этого прохода:** оболочка UI чистая (ноль console errors / ноль 4xx-5xx на каждом аутентифицированном экране). Реальный риск сконцентрирован в **сходимости git-sync ↔ живой редактор**: три независимых пути тихой потери данных severity HIGH, все растущие из одного механизма — *Yjs-документ открытого редактора в браузере никогда не сходится с git ingest, и его устаревший autosave побеждает.* --- ### 2. Какие агенты отработали и как прошла каждая стадия **Recon (1 агент).** Залогинился, прошёл /home, /s/general, редактор, поиск Ctrl+K, все вкладки Settings со слушателями console/response/requestfailed. Outcome: чистый baseline (только безобидный jotai-warning о deprecation `atomFamily`) плюс карта маршрутов с ожидаемыми pre-login 401 и legacy-deeplink 404. Также поймал первый намёк на поведение debounce у git-sync (транзиентный `_.md`). Хорошее скоупирование; корректно классифицировал собственный шум (pre-auth probes) как не-баги. **6 тестеров слайсов:** - **editor-content tester** — вставка блоков, rich-контент, изображения, untitled-страницы, git-экспорт контента. Found: непортируемость изображений (REAL, medium), untitled `_.md` (REAL, low), flushSync (REAL, но неверно заскоупен), title-drop (FALSE — гонка инструментария). 2 real / 2 partial-or-false. - **tree-nav** — операции с деревом, корзина. Found: Restore-from-Trash "completely broken" (HIGH) — **FALSE POSITIVE**, пропущен второй шаг confirm-модалки (коллизия локатора). 0 real / 1 false (и это было самое громкое заявление). - **share-search-settings** — шаринг, поиск, настройки, AI-send. Found: дефолт includeSubPages (REAL, low) + AI-503 как ограничение окружения (корректно). 1 real / 0 false. - **ai-chat-ui tester** — плавающий чат. Found: застрявшее состояние New-chat-after-failure (REAL, medium, с точной корневой причиной в исходниках) + корректно классифицировал header-gate и 503 как намеренные / ограничение окружения. 1 real / 0 false. Лучшая работа по корневой причине среди тестеров слайсов. - **git-roundtrip-tester** — round trips редактор→git. Found: дублирование в начале документа (REAL, HIGH) + churn/push-rejection (REAL, medium) + untitled `_.md` (dup) + flushSync (REAL). Сильный, богатый доказательствами. - **dual-edit** — одновременное редактирование git+UI. Нашёл два бага с НАИВЫСШЕЙ ценностью: тихий откат открытого редактора + потеря при правке разных абзацев + механизм stale-island, каждый с решающим CONTROL'ом при закрытом редакторе. Плюс (ложная) строка BUG про git-clone. 3 real / 1 false. Агент с наивысшим сигналом. **Verifier pass (Doer-Verifier).** Независимо перепрогнал каждую находку. Именно здесь skill себя оправдал: он **убил 4 false positives** (включая HIGH "Restore broken", который сожрал бы время владельца), **исправил формулировку** churn-находки (коммиты НЕ no-ops — они несут диф бага дублирования; просто сообщение неверно считает страницы) и **переопределил скоуп** flushSync-заявления. Также подтвердил каждый реальный баг потери данных с корневой причиной на уровне кода и контролями editor-open vs editor-closed. Честность verifier'а была высокой (например, пометил собственный поток ERR_INSUFFICIENT_RESOURCES и 429 как артефакты инструментария). --- ### 3. Dedup map (кто-что-нашёл) - **flushSync warning** — editor-content tester (как "during insertion", FALSE-скоуп) + git-roundtrip-tester (как "every editor page", VERIFIED). Смержено → 1 реальная low UI-находка. - **Untitled `_.md`** — editor-content tester + git-roundtrip-tester. Смержено → 1 реальная low git-sync находка. - **Stale-island / потеря данных открытого редактора** — dual-edit подал откат открытого редактора, потерю при правке абзацев И лежащий в основе механизм stale-island как 3 записи; это один причинный кластер (одна корневая причина, 3 симптома). Оставлены как 3 находки (2 git-sync HIGH + 1 UI medium), поскольку repro/impact различаются, но помечены как единая цель фикса. - **AI-503 / "AI not configured"** — подавалось ~4× в share-search-settings + ai-chat-ui tester + recon. Всё корректно — ограничение окружения; схлопнуто в одно наблюдение. --- ### 4. Единственный фикс, который важнее всего Все три HIGH-бага имеют общую корневую причину в `gitmost-datasource.service.ts` (writeBody / collabGateway.openDirectConnection / mergeXmlFragments3Way): **git ingest пишет серверный Y.Doc, но не сходится с in-memory Yjs-документом подключённого редактора в браузере и не даёт живого broadcast обратно в открытую комнату.** Цепочка последствий: открытый редактор остаётся устаревшим → его следующий autosave затирает git-правку → PULL пушит затёртое тело обратно в vault как коммит `docmost: sync` → тихая потеря данных, при том что push рапортует успех. Баг дублирования в начале документа — это отдельная неидемпотентность реконсиляции, но именно он *гонит churn коммитов и push-rejections*. Починка сходимости + идемпотентности начала документа нейтрализует 5 из 7 git-sync находок. --- ### 5. Пробелы покрытия и заметки о честности - **AI-фичи протестированы только негативно.** Провайдер не настроен by design, поэтому каждый send в чат отдаёт 503. Мы проверили graceful degradation и нашли один реальный смежный UI-баг (сброс New-chat), но фактические happy paths AI-стриминга/инструментов/embeddings **ни разу не задействованы**. Это ENV-ограничение, а не вердикт продукту — корректность AI-поверхности фактически не тестировалась. - **Контеншн auth rate-limit (HTTP 429)** неоднократно блокировал verifier'ов (10 req/60s на IP, общий с собственными параллельными Claude-агентами пользователя). Один вердикт ("Restore from Trash") не смог получить живой click-through и был вынужден опереться на рассуждение по исходникам — честно залогирован как "speculative", без переоценки. Несколько verifier'ов сожгли время на retry-петлях. - **Шум параллельных агентов:** другой агент редактировал те же git-синхронизированные страницы (страницу переименовали в "RT Alphahello edit" посреди теста). Verifier'ы корректно отметили это как реальный шум, не менявший выводов, но он замутил пару трейсов подсчёта дублей. - **Нет глубокого тестирования multi-user / permissions / groups / members** сверх нагрузки (таблицы рендерятся). Нет mobile/responsive, нет offline, нет больших документов / perf, нет реального человеческого concurrent-3-way merge. - **Trash/restore** остался НЕРАЗРЕШЁННЫМ как позитив: мы доказали ложность заявления "broken", но так и не выполнили полный restore через modal-confirm end-to-end (заблокировано 429). Рекомендуется чистый ре-тест. --- ### 6. Improvement suggestions для этого QA-процесса / skill 1. **Осведомлённость о confirm-модалках в локаторах.** Самый дорогой промах (false HIGH) пришёл от клика по пункту меню с надписью "Restore" и игнора одноимённого confirm в модалке. Добавить эвристику skill: когда появляется action-label, после клика проверять открытый dialog/confirm и ассертить *терминальный* сетевой вызов — не делать вывод "no API fired = broken", пока многошаговый confirm-UI не исчерпан. Считать "одноимённый контрол появляется дважды" известной ловушкой. 2. **Отличать "no-op" от "выглядит идентично".** Churn-находка ошибочно пометила реальные, несущие контент коммиты как no-ops, потому что *сообщение* коммита неверно считает страницы. Правило skill: прежде чем звать коммиты "empty/no-op", запускать `git diff HEAD~1 HEAD` — судить по дифу дерева, никогда по сообщению. 3. **Карантин гонок инструментария для тайминга ввода.** FP с title-drop пришёл от отправки нажатий до монтирования поля. Добавить постоянное правило: любая находка "first characters lost / input dropped" ОБЯЗАНА быть перетестирована с явным `focus()` + ожиданием готовности элемента, прежде чем пройти дальше speculative. 4. **Пинить версию git-клиента.** Фантомный `BUG: refs/files-backend.c` был артефактом устаревшего клиента. Записывать `git --version` в доказательства каждой git-sync находки, чтобы клиентский шум отличался от серверных дефектов. 5. **Зарезервировать отдельную auth-личность / поднять throttle для QA.** Контеншн 429 от общего IP (+ параллельные агенты пользователя) деградировал несколько верификаций и заставил один вердикт быть source-only. QA-only логин, обходящий throttle 10/60s, ощутимо улучшил бы надёжность verifier'ов. 6. **Явно кластеризовать причинно-связанные находки.** 3 записи dual-edit — одна корневая причина; отчёт должен выносить поле "fix-cluster", чтобы владелец видел, что 1 фикс убивает 3 тикета, а не триажил их по отдельности. 7. **Помечать env-limitation находки как non-scoring сразу,** чтобы они не раздували сырые счётчики (у нас было ~4 дубля AI-503). Pre-dedup проход по category=env-limitation срезал бы шум. 8. **Для git-sync конкретно — всегда прогонять CONTROL editor-open vs editor-closed.** Именно контроли dual-edit сделали HIGH-баги неоспоримыми и изолировали причину до живых сессий. Возвести это в обязательный шаг шаблона git-sync charter'а. ## Найденные git-sync баги (вынесены в фиксы на feat/git-sync) - **[high]** Git push в страницу с открытым редактором тихо откатывается -> потеря данных (нет конфликта, нет marker'а, нет ошибки) - **[high]** Одновременные правки РАЗНЫХ абзацев всё равно теряют git-сторону (three-way merge обходится, когда редактор открыт) - **[high]** Контент, вставленный в НАЧАЛО страницы, дублируется на каждом цикле двусторонней синхронизации (несходящаяся петля, неограниченная) - **[medium]** Двусторонняя синхронизация форсирует commit на каждый цикл опроса (churn истории) + частые non-fast-forward отказы push; сообщение коммита считает общее число страниц, а не изменённые - **[medium]** Git-sync vault не самодостаточен для изображений: экспортируется как закрытый авторизацией /api/files URL, бинарник не коммитится - **[low]** Untitled / null-title страницы сериализуются в '_.md' с разрешением коллизий через ' ~<slugId>' (непрозрачные имена файлов) - **[low]** Одновременный git push отклоняется non-fast-forward, когда UI-правки продвинули ref vault'а (ожидаемая семантика git, мелкий UX) ## False positives (убиты verifier-проходом) - [tree-nav] 'Restore from Trash полностью нефункционален' (заявлено HIGH) — НЕ РЕАЛЬНЫЙ БАГ. Обе точки входа restore идут через useRestorePageModal.openRestoreModal -> modals.openConfirmModal, поэтому один клик лишь ОТКРЫВАЕТ confirm-модалку; POST /api/pages/restore срабатывает только после клика по кнопке подтверждения 'Restore' в модалке. 'ZERO /api calls on click' — это спроектированное двухшаговое поведение модалки. Как - [editor-content tester] 'Поле заголовка может терять ведущие символы при наборе сразу после создания страницы' — артефакт инструментария, а не дефект продукта. Опровергнуто: когда title-редактору дают смонтироваться и явно фокусируют первым, набор при delay=0 проходил ЦЕЛИКОМ 5/5. Потеря возникает только когда нажатия отправляются через 0-200ms после клика Create, пока страница ещё навигируется/монт - [dual-edit] 'git clone выдаёт BUG: refs/files-backend.c:3175: initial ref transaction called with existing refs' — НЕ удалось воспроизвести (git 2.47.3, 7+ клонов, protocol v0 и v2, все EXIT=0 без строки 'BUG:'). ls-remote показывает корректно сформированный advertisement без дублирующихся refs (HEAD symref на refs/heads/main; кастомный refs/docmost/last-pushed живёт вне refs/heads и корректно игнорируется). M - [editor-content tester] 'flushSync console errors во время вставки блока в редакторе' (конкретика 'during block insertion') — НЕ удалось воспроизвести за два полных прогона с lists/dividers/images/tables/callouts/toggles/code (упоминаний flushSync 0, ошибок 0). NOTE: лежащий в основе flushSync-warning РЕАЛЕН и подаётся отдельно как подтверждённая gitmost-ui находка — он срабатывает на монт 🤖 web-test-orchestrator (multi-agent QA)
vvzvlad added the test label 2026-06-26 15:51:55 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: vvzvlad/gitmost#217