diff --git a/docs/uk/concepts/mantis.md b/docs/uk/concepts/mantis.md index e7cbf5e09..8cd3355d5 100644 --- a/docs/uk/concepts/mantis.md +++ b/docs/uk/concepts/mantis.md @@ -1,65 +1,65 @@ --- read_when: - - Створення або запуск живої візуальної перевірки якості для помилок OpenClaw - - Додавання перевірки до й після для запиту на злиття - - Додавання сценаріїв Discord, Slack, WhatsApp або інших реальних транспортів - - Налагодження QA-запусків, яким потрібні знімки екрана, автоматизація браузера або доступ через VNC -summary: Mantis — це візуальна система наскрізної перевірки для відтворення помилок OpenClaw на живих транспортах, збирання доказів до і після та прикріплення артефактів до запитів на внесення змін. + - Створення або запуск візуальної перевірки якості в реальному часі для помилок OpenClaw + - Додавання перевірки до та після для запиту на злиття + - Додавання сценаріїв із Discord, Slack, WhatsApp або іншими реальними транспортами + - Налагодження запусків QA, для яких потрібні знімки екрана, автоматизація браузера або доступ через VNC +summary: Mantis — це система візуальної наскрізної перевірки для відтворення помилок OpenClaw у реальних транспортах, фіксації доказів до й після та прикріплення артефактів до PR. title: Богомол x-i18n: - generated_at: "2026-05-03T16:33:01Z" + generated_at: "2026-05-03T16:48:36Z" model: gpt-5.5 provider: openai - source_hash: d8a9a623728a34a6c642293de29e40026351130acc9f6fd12b55f25f3c9aef85 + source_hash: 5b58934ec88a640745f7430c875c377e898f87f1b3d4a9ef03115395084664f5 source_path: concepts/mantis.md workflow: 16 --- -Mantis — це система наскрізної перевірки OpenClaw для помилок, яким потрібні справжнє середовище виконання, справжній транспорт і видимий доказ. Вона запускає сценарій для відомого несправного посилання, збирає докази, запускає той самий сценарій для кандидатного посилання та публікує порівняння як артефакти, які супровідник може переглянути з PR або з локальної команди. +Mantis — це система наскрізної верифікації OpenClaw для помилок, яким потрібні реальне середовище виконання, реальний транспорт і видимий доказ. Вона запускає сценарій проти відомого поганого ref, збирає докази, запускає той самий сценарій проти кандидатного ref і публікує порівняння як артефакти, які мейнтейнер може переглянути з PR або з локальної команди. -Mantis починає з Discord, бо Discord дає нам цінну першу смугу: справжню автентифікацію бота, справжні канали гільдії, реакції, потоки, нативні команди та браузерний інтерфейс, де люди можуть візуально підтвердити, що показав транспорт. +Mantis починає з Discord, бо Discord дає нам високоцінний перший напрям: справжню автентифікацію бота, реальні канали guild, реакції, треди, нативні команди й браузерний UI, де люди можуть візуально підтвердити, що показав транспорт. ## Цілі - Відтворити помилку з GitHub issue або PR з тією самою формою транспорту, яку бачать користувачі. -- Захопити артефакт **до** на базовому посиланні перед застосуванням виправлення. -- Захопити артефакт **після** на кандидатному посиланні після застосування виправлення. -- Використовувати детермінований оракул, коли це можливо, наприклад читання реакції Discord REST або перевірку стенограми каналу. -- Захоплювати знімки екрана, коли помилка має видиму поверхню UI. -- Запускати локально з CLI, керованого агентом, і віддалено з GitHub. -- Зберігати достатньо стану машини для VNC-порятунку, коли вхід, автоматизація браузера або автентифікація провайдера застрягає. -- Надсилати стислий статус в операторський канал Discord, коли запуск заблоковано, потрібна ручна допомога VNC або запуск завершується. +- Зібрати артефакт **до** на базовому ref перед застосуванням виправлення. +- Зібрати артефакт **після** на кандидатному ref після застосування виправлення. +- За можливості використовувати детермінований оракул, наприклад читання реакції Discord REST або перевірку транскрипту каналу. +- Збирати знімки екрана, коли помилка має видиму поверхню UI. +- Запускати локально з керованого агентом CLI і віддалено з GitHub. +- Зберігати достатньо стану машини для VNC-порятунку, коли вхід, браузерна автоматизація або автентифікація провайдера застрягають. +- Публікувати стислий статус в операторський канал Discord, коли запуск заблоковано, потрібна ручна допомога VNC або запуск завершено. -## Поза цілями +## Нецілі -- Mantis не є заміною модульних тестів. Запуск Mantis зазвичай має перетворитися на менший регресійний тест після того, як виправлення зрозуміле. -- Mantis не є звичайним швидким CI-шлюзом. Він повільніший, використовує живі облікові дані та призначений для помилок, де живе середовище має значення. -- Mantis не має вимагати участі людини для нормальної роботи. Ручний VNC — це шлях порятунку, а не щасливий шлях. -- Mantis не зберігає необроблені секрети в артефактах, журналах, знімках екрана, Markdown-звітах або коментарях PR. +- Mantis не є заміною модульних тестів. Запуск Mantis після розуміння виправлення зазвичай має перетворюватися на менший регресійний тест. +- Mantis не є звичайним швидким шлюзом CI. Він повільніший, використовує живі облікові дані й призначений для помилок, де живе середовище має значення. +- Mantis не має вимагати людини для нормальної роботи. Ручний VNC — це шлях порятунку, а не штатний сценарій. +- Mantis не зберігає сирі секрети в артефактах, журналах, знімках екрана, Markdown-звітах або коментарях PR. -## Власність +## Володіння -Mantis живе в QA-стеку OpenClaw. +Mantis належить до стеку QA OpenClaw. - OpenClaw володіє середовищем виконання сценаріїв, транспортними адаптерами, схемою доказів і локальним CLI під `pnpm openclaw qa mantis`. -- QA Lab володіє частинами живого транспортного стенда, помічниками захоплення браузера та записувачами артефактів. +- QA Lab володіє частинами harness для живого транспорту, помічниками браузерного захоплення й записувачами артефактів. - Crabbox володіє прогрітими Linux-машинами, коли потрібна віддалена VM. - GitHub Actions володіє віддаленою точкою входу workflow і збереженням артефактів. -- ClawSweeper володіє маршрутизацією коментарів GitHub: розбором команд супровідників, запуском workflow і публікацією фінального коментаря PR. +- ClawSweeper володіє маршрутизацією коментарів GitHub: розбором команд мейнтейнерів, dispatch workflow і публікацією фінального коментаря PR. - Агенти OpenClaw керують Mantis через Codex, коли сценарію потрібні агентне налаштування, налагодження або звітування про застряглий стан. -Ця межа тримає транспортні знання в OpenClaw, планування машин у Crabbox, а клей workflow супровідників у ClawSweeper. +Ця межа тримає знання про транспорт в OpenClaw, планування машин у Crabbox, а клей мейнтейнерського workflow у ClawSweeper. -## Форма команд +## Форма команди -Перша локальна команда перевіряє бота Discord, гільдію, канал, надсилання повідомлення, надсилання реакції та шлях артефактів: +Перша локальна команда перевіряє бота Discord, guild, канал, надсилання повідомлення, надсилання реакції та шлях артефактів: ```bash pnpm openclaw qa mantis discord-smoke \ --output-dir .artifacts/qa-e2e/mantis/discord-smoke ``` -Пізніший виконувач «до» і «після» має приймати таку форму: +Пізніший runner для до і після має приймати таку форму: ```bash pnpm openclaw qa mantis run \ @@ -70,12 +70,12 @@ pnpm openclaw qa mantis run \ --output-dir .artifacts/qa-e2e/mantis/local-discord-status-reactions ``` -Димовий workflow GitHub — `Mantis Discord Smoke`. Workflow GitHub «до» і «після» для першого справжнього сценарію — `Mantis Discord Status Reactions`. Він приймає: +Smoke workflow GitHub — це `Mantis Discord Smoke`. Workflow GitHub для до і після першого реального сценарію — це `Mantis Discord Status Reactions`. Він приймає: -- `baseline_ref`: посилання, на якому очікується відтворення поведінки лише з чергою. -- `candidate_ref`: посилання, на якому очікується показ `queued -> thinking -> done`. +- `baseline_ref`: ref, на якому очікується відтворення поведінки лише queued. +- `candidate_ref`: ref, на якому очікується показ `queued -> thinking -> done`. -Він витягує посилання стенда workflow, будує окремі робочі дерева базового й кандидатного варіантів, запускає `discord-status-reactions-tool-only` для кожного робочого дерева та завантажує `baseline/`, `candidate/`, `comparison.json` і `mantis-report.md` як артефакти Actions. +Він checkout-ить ref harness workflow, будує окремі worktree для baseline і candidate, запускає `discord-status-reactions-tool-only` проти кожного worktree та завантажує `baseline/`, `candidate/`, `comparison.json` і `mantis-report.md` як артефакти Actions. Приклади команд ClawSweeper: @@ -90,35 +90,35 @@ pnpm openclaw qa mantis run \ 1. Отримати облікові дані. 2. Виділити або повторно використати VM. -3. Підготувати чистий checkout для базового посилання. -4. Установити залежності та зібрати лише те, що потрібно сценарію. +3. Підготувати чистий checkout для базового ref. +4. Встановити залежності й зібрати лише те, що потрібно сценарію. 5. Запустити дочірній OpenClaw Gateway з ізольованим каталогом стану. 6. Налаштувати живий транспорт, провайдера, модель і профіль браузера. -7. Запустити сценарій і захопити базові докази. -8. Зупинити gateway і зберегти журнали. -9. Підготувати кандидатне посилання в тій самій VM. -10. Запустити той самий сценарій і захопити кандидатні докази. -11. Порівняти результати оракула та візуальні докази. -12. Записати Markdown, JSON, журнали, знімки екрана та необов’язкові артефакти трасування. +7. Запустити сценарій і зібрати базові докази. +8. Зупинити Gateway і зберегти журнали. +9. Підготувати кандидатний ref у тій самій VM. +10. Запустити той самий сценарій і зібрати кандидатні докази. +11. Порівняти результати оракула й візуальні докази. +12. Записати Markdown, JSON, журнали, знімки екрана та опціональні артефакти трасування. 13. Завантажити артефакти GitHub Actions. 14. Опублікувати стислий статус у PR або Discord. Сценарій має вміти завершуватися невдачею двома різними способами: -- **Помилку відтворено**: базовий варіант завершився невдачею очікуваним способом. -- **Збій стенда**: налаштування середовища, облікові дані, Discord API, браузер або провайдер відмовили до того, як оракул помилки став змістовним. +- **Помилку відтворено**: baseline впав очікуваним способом. +- **Збій harness**: налаштування середовища, облікові дані, Discord API, браузер або провайдер впали до того, як оракул помилки став змістовним. -Фінальний звіт має розділяти ці випадки, щоб супровідники не плутали нестабільне середовище з поведінкою продукту. +Фінальний звіт має розділяти ці випадки, щоб мейнтейнери не плутали нестабільне середовище з поведінкою продукту. -## Discord MVP +## MVP Discord -Перший сценарій має націлюватися на статусні реакції Discord у каналах гільдії, де режим доставки відповіді джерела — `message_tool_only`. +Перший сценарій має націлюватися на реакції статусу Discord у каналах guild, де режим доставки вихідної відповіді — `message_tool_only`. -Чому це добрий початковий сценарій Mantis: +Чому це хороший початковий сценарій Mantis: -- Він видимий у Discord як реакції на повідомленні, що запускає сценарій. +- Це видно в Discord як реакції на повідомлення, що запустило сценарій. - Він має сильний REST-оракул через стан реакцій повідомлення Discord. -- Він перевіряє справжній OpenClaw Gateway, автентифікацію бота Discord, диспетчеризацію повідомлень, режим доставки відповіді джерела, стан статусних реакцій і життєвий цикл ходу моделі. +- Він перевіряє реальний OpenClaw Gateway, автентифікацію бота Discord, dispatch повідомлення, режим доставки вихідної відповіді, стан реакцій статусу та життєвий цикл ходу моделі. - Він достатньо вузький, щоб перша реалізація залишалася чесною. Очікувана форма сценарію: @@ -152,9 +152,9 @@ evidence: screenshotMessageRow: true ``` -Базові докази мають показувати реакцію підтвердження в черзі, але без переходу життєвого циклу в режимі лише інструмента. Кандидатні докази мають показувати запуск статусних реакцій життєвого циклу, коли `messages.statusReactions.enabled` явно дорівнює `true`. +Базові докази мають показувати реакцію підтвердження queued, але без переходу життєвого циклу в режимі лише інструментів. Кандидатні докази мають показувати виконання реакцій статусу життєвого циклу, коли `messages.statusReactions.enabled` явно дорівнює `true`. -Перший виконуваний зріз — це opt-in живий QA-сценарій Discord: +Виконуваний перший зріз — це opt-in живий QA-сценарій Discord: ```bash pnpm openclaw qa discord \ @@ -166,20 +166,20 @@ pnpm openclaw qa discord \ --output-dir .artifacts/qa-e2e/mantis/discord-status-reactions-candidate ``` -Він налаштовує SUT з постійно ввімкненою обробкою гільдій, `visibleReplies: -"message_tool"`, `ackReaction: "👀"` і явними статусними реакціями. Оракул опитує справжнє повідомлення Discord, що запускає сценарій, і очікує спостережену послідовність `👀 -> 🤔 -> 👍`. Артефакти включають `discord-qa-reaction-timelines.json`, `discord-status-reactions-tool-only-timeline.html` і `discord-status-reactions-tool-only-timeline.png`. +Він налаштовує SUT із постійно ввімкненою обробкою guild, `visibleReplies: +"message_tool"`, `ackReaction: "👀"` і явними реакціями статусу. Оракул опитує справжнє повідомлення-тригер Discord і очікує спостережувану послідовність `👀 -> 🤔 -> 👍`. Артефакти включають `discord-qa-reaction-timelines.json`, `discord-status-reactions-tool-only-timeline.html` і `discord-status-reactions-tool-only-timeline.png`. -## Наявні QA-частини +## Наявні частини QA -Mantis має будуватися на наявному приватному QA-стеку, а не починатися з нуля: +Mantis має будуватися на наявному приватному стеку QA замість старту з нуля: -- `pnpm openclaw qa discord` уже запускає живу смугу Discord із driver-ботом і SUT-ботом. -- Живий транспортний runner уже записує звіти та артефакти спостережених повідомлень у `.artifacts/qa-e2e/`. +- `pnpm openclaw qa discord` вже запускає живий напрям Discord з ботами driver і SUT. +- Runner живого транспорту вже записує звіти та артефакти спостережуваних повідомлень у `.artifacts/qa-e2e/`. - Оренди облікових даних Convex уже надають ексклюзивний доступ до спільних живих транспортних облікових даних. - Сервіс керування браузером уже підтримує знімки екрана, snapshots, headless керовані профілі та віддалені профілі CDP. - QA Lab уже має UI налагоджувача і шину для тестування у формі транспорту. -Перша реалізація Mantis може бути тонким runner «до/після» поверх цих частин плюс один шар візуальних доказів. +Перша реалізація Mantis може бути тонким runner до/після поверх цих частин плюс один шар візуальних доказів. ## Модель доказів @@ -205,61 +205,61 @@ Mantis має будуватися на наявному приватному QA `mantis-summary.json` має бути машинозчитуваним джерелом істини. Markdown-звіт призначений для коментарів PR і людського рев’ю. -Зведення має включати: +Підсумок має включати: -- перевірені посилання та SHA -- транспорт і ідентифікатор сценарію -- провайдера машини та ідентифікатор машини або ідентифікатор оренди +- протестовані refs і SHA +- транспорт і id сценарію +- провайдера машини та id машини або id оренди - джерело облікових даних без секретних значень -- результат базового варіанта -- результат кандидатного варіанта -- чи відтворилася помилка на базовому варіанті -- чи кандидат виправив її +- результат baseline +- результат candidate +- чи відтворилася помилка на baseline +- чи candidate її виправив - шляхи артефактів -- санітизовані проблеми налаштування або очищення +- очищені проблеми налаштування або очищення -Знімки екрана — це докази, а не секрети. Вони все одно потребують дисципліни редагування: можуть з’являтися приватні назви каналів, імена користувачів або вміст повідомлень. Для публічних PR надавайте перевагу посиланням на артефакти GitHub Actions замість вбудованих зображень, доки історія редагування не стане сильнішою. +Знімки екрана — це докази, а не секрети. Вони все одно потребують дисципліни редагування: можуть з’явитися назви приватних каналів, імена користувачів або вміст повідомлень. Для публічних PR віддавайте перевагу посиланням на артефакти GitHub Actions замість inline-зображень, доки історія редагування не стане сильнішою. ## Браузер і VNC -Браузерна смуга має два режими: +Браузерний напрям має два режими: -- **Headless-автоматизація**: типово для CI. Chrome запускається з увімкненим CDP, а Playwright або керування браузером OpenClaw захоплює знімки екрана. -- **VNC-порятунок**: увімкнений на тій самій VM, коли вхід, MFA, антиавтоматизація Discord або візуальне налагодження потребує людини. +- **Headless-автоматизація**: типово для CI. Chrome працює з увімкненим CDP, а Playwright або браузерне керування OpenClaw збирає знімки екрана. +- **VNC-порятунок**: вмикається на тій самій VM, коли вхід, MFA, антиавтоматизація Discord або візуальне налагодження потребують людини. -Профіль браузера спостерігача Discord має бути достатньо сталим, щоб не входити під час кожного запуску, але ізольованим від особистого стану браузера. Профіль належить пулу машин Mantis, а не ноутбуку розробника. +Профіль браузера-спостерігача Discord має бути достатньо persistent, щоб не входити в систему під час кожного запуску, але ізольованим від особистого стану браузера. Профіль належить пулу машин Mantis, а не ноутбуку розробника. -Коли Mantis застрягає, він публікує повідомлення статусу Discord з: +Коли Mantis застрягає, він публікує статусне повідомлення Discord з такими даними: -- ідентифікатором запуску -- ідентифікатором сценарію -- провайдером машини -- каталогом артефактів -- інструкціями підключення VNC або noVNC, якщо доступні -- коротким текстом блокера +- id запуску +- id сценарію +- провайдер машини +- каталог артефактів +- інструкції підключення VNC або noVNC, якщо доступні +- короткий текст блокера -Перше приватне розгортання може публікувати ці повідомлення в наявний операторський канал, а пізніше перейти до окремого каналу Mantis. +Перше приватне розгортання може публікувати ці повідомлення в наявний операторський канал і пізніше перейти до окремого каналу Mantis. ## Машини -Mantis має надавати перевагу AWS через Crabbox для першої віддаленої реалізації. Crabbox дає нам прогріті машини, відстеження оренд, гідратацію, журнали, результати та очищення. Якщо потужність AWS надто повільна або недоступна, додайте провайдера Hetzner за тим самим інтерфейсом машин. +Mantis має віддавати перевагу AWS через Crabbox для першої віддаленої реалізації. Crabbox дає нам прогріті машини, відстеження оренд, hydration, журнали, результати й очищення. Якщо місткість AWS занадто повільна або недоступна, додайте провайдера Hetzner за тим самим інтерфейсом машини. Мінімальні вимоги до VM: -- Linux із desktop-capable встановленням Chrome або Chromium -- доступ CDP для автоматизації браузера +- Linux з інсталяцією Chrome або Chromium, здатною працювати з робочим столом +- доступ CDP для браузерної автоматизації - VNC або noVNC для порятунку - Node 22 і pnpm - checkout OpenClaw і кеш залежностей - кеш браузера Playwright Chromium, коли використовується Playwright -- достатньо CPU та пам’яті для одного OpenClaw Gateway, одного браузера й одного запуску моделі -- вихідний доступ до Discord, GitHub, провайдерів моделей і брокера облікових даних +- достатньо CPU і пам’яті для одного OpenClaw Gateway, одного браузера й одного запуску моделі +- вихідний доступ до Discord, GitHub, модельних провайдерів і брокера облікових даних -VM не має зберігати довготривалі необроблені секрети поза очікуваними сховищами облікових даних або профілів браузера. +VM не має зберігати довгоживучі сирі секрети поза очікуваними сховищами облікових даних або профілів браузера. ## Секрети -Секрети живуть у секретах організації або репозиторію GitHub для віддалених запусків і в локальному файлі секретів під контролем оператора для локальних запусків. +Секрети живуть у секретах організації або репозиторію GitHub для віддалених запусків і в локальному контрольованому оператором файлі секретів для локальних запусків. Рекомендовані назви секретів: @@ -273,30 +273,34 @@ VM не має зберігати довготривалі необроблен - `OPENCLAW_QA_CONVEX_SITE_URL` - `OPENCLAW_QA_CONVEX_SECRET_CI` -У довгостроковій перспективі пул облікових даних Convex має залишатися звичайним джерелом для живих транспортних облікових даних. Секрети GitHub початково завантажують брокер і резервні смуги. +У довгостроковій перспективі пул облікових даних Convex має залишатися звичайним джерелом для живих транспортних облікових даних. Секрети GitHub bootstrap-лять брокер і резервні напрями. Runner Mantis ніколи не має друкувати: - токени ботів Discord - API-ключі провайдерів - cookies браузера -- вміст профілю автентифікації +- вміст профілів автентифікації - паролі VNC -- необроблені payload облікових даних +- сирі payload облікових даних -Публічні завантаження артефактів також мають редагувати цільові метадані Discord, як-от ідентифікатори бота, гільдії, каналу та повідомлення. Димовий workflow GitHub вмикає `OPENCLAW_QA_REDACT_PUBLIC_METADATA=1` саме з цієї причини. +Публічні завантаження артефактів також мають редагувати цільові метадані Discord, як-от id бота, guild, каналу й повідомлення. Smoke workflow GitHub вмикає `OPENCLAW_QA_REDACT_PUBLIC_METADATA=1` саме з цієї причини. -Якщо токен випадково вставлено в issue, PR, чат або журнал, ротируйте його після збереження нового секрету. +Якщо токен випадково вставлено в issue, PR, чат або журнал, ротувати його після збереження нового секрету. ## Артефакти GitHub і коментарі PR -Робочі процеси Mantis мають завантажувати повний пакет доказів як короткоживучий артефакт Actions. Коли робочий процес запускається для PR, він також має публікувати відредаговані PNG-знімки екрана в гілку `qa-artifacts` і додавати або оновлювати коментар PR із вбудованими знімками екрана до/після. Сирі журнали, спостережені повідомлення та інші об'ємні докази залишаються в артефакті Actions. +Робочі процеси Mantis мають завантажувати повний пакет доказів як короткочасний артефакт Actions. Коли робочий процес запускається для звіту про помилку або PR з виправленням, він також має публікувати редаговані PNG-знімки екрана в гілку `qa-artifacts` і створювати або оновлювати коментар до цієї помилки чи PR з виправленням із вбудованими знімками екрана до/після. Не публікуйте основний доказ лише в загальному PR автоматизації QA. Сирі журнали, спостережені повідомлення та інші об’ємні докази залишаються в артефакті Actions. -Коментар PR має бути коротким і візуальним: +Коментар до PR має бути коротким і візуальним: ```md Mantis Discord Status Reactions QA +Summary: Mantis reran the reported Discord status-reaction bug against the known +bad baseline and the candidate fix. The baseline reproduced the bug, while the +candidate showed the expected queued -> thinking -> done sequence. + - Scenario: `discord-status-reactions-tool-only` - Run: - Artifact: @@ -308,60 +312,60 @@ Mantis Discord Status Reactions QA | | | ``` -Коли запуск не вдався через збій тестового стенда, у коментарі має бути сказано саме це, а не створюватися враження, що кандидат не пройшов перевірку. +Коли запуск завершується невдало через збій тестового стенда, у коментарі має бути сказано саме це, а не натяк, що кандидат не пройшов перевірку. -## Нотатки щодо приватного розгортання +## Примітки щодо приватного розгортання -Приватне розгортання може вже мати застосунок Mantis Discord. Повторно використовуйте цей застосунок замість створення ще одного, якщо він має потрібні дозволи бота і його можна безпечно ротувати. +У приватному розгортанні вже може бути застосунок Mantis Discord. Повторно використайте цей застосунок замість створення іншого, якщо він має належні дозволи бота і його можна безпечно ротувати. -Задайте початковий канал сповіщень оператора через секрети або конфігурацію розгортання. Спочатку він може вказувати на наявний канал супровідників або операційний канал, а потім перейти до виділеного каналу Mantis, коли такий з'явиться. +Задайте початковий канал сповіщень оператора через secrets або конфігурацію розгортання. Спершу він може вказувати на наявний канал супровідників або операційний канал, а потім перейти на окремий канал Mantis, коли він з’явиться. -Не вносьте в цей документ ідентифікатори гільдій, ідентифікатори каналів, токени ботів, браузерні cookie або паролі VNC. Зберігайте їх у секретах GitHub, брокері облікових даних або локальному сховищі секретів оператора. +Не розміщуйте ідентифікатори гільдій, ідентифікатори каналів, токени ботів, браузерні cookie або паролі VNC у цьому документі. Зберігайте їх у GitHub secrets, брокері облікових даних або локальному сховищі секретів оператора. ## Додавання сценарію Сценарій Mantis має оголошувати: -- id і назву +- ідентифікатор і заголовок - транспорт - потрібні облікові дані -- політику базового ref -- політику кандидатного ref +- політику baseline ref +- політику candidate ref - патч конфігурації OpenClaw - кроки налаштування - стимул -- очікуваний базовий оракул -- очікуваний кандидатний оракул +- очікуваний оракул baseline +- очікуваний оракул candidate - цілі візуального захоплення - бюджет часу очікування - кроки очищення -Сценарії мають віддавати перевагу малим типізованим оракулам: +Сценарії мають надавати перевагу невеликим типізованим оракулам: - стан реакцій Discord для помилок реакцій -- посилання на повідомлення Discord для помилок тредингу -- ts треду Slack і стан API реакцій для помилок Slack +- посилання на повідомлення Discord для помилок гілкування +- thread ts Slack і стан API реакцій для помилок Slack - ідентифікатори повідомлень електронної пошти та заголовки для помилок електронної пошти -- знімки екрана браузера, коли UI є єдиним надійним спостережуваним сигналом +- знімки екрана браузера, коли UI є єдиним надійним спостережуваним показником -Перевірки зору мають бути додатковими. Якщо API платформи може довести помилку, використовуйте API як оракул pass/fail, а знімки екрана залишайте для впевненості людини. +Перевірки Vision мають бути додатковими. Якщо API платформи може довести помилку, використовуйте API як оракул pass/fail, а знімки екрана залишайте для впевненості людини. ## Розширення провайдерів Після Discord той самий runner може додати: -- Slack: реакції, треди, згадки застосунку, модальні вікна, завантаження файлів. -- Електронна пошта: автентифікація Gmail і трединг повідомлень через `gog`, коли конекторів недостатньо. -- WhatsApp: QR-вхід, повторна ідентифікація, доставка повідомлень, медіа, реакції. -- Telegram: обмеження згадок у групах, команди, реакції, де доступні. -- Matrix: зашифровані кімнати, зв'язки тредів або відповідей, відновлення після перезапуску. +- Slack: реакції, гілки, згадки застосунку, модальні вікна, завантаження файлів. +- Електронна пошта: автентифікація Gmail і гілкування повідомлень за допомогою `gog`, коли конекторів недостатньо. +- WhatsApp: вхід через QR, повторна ідентифікація, доставлення повідомлень, медіа, реакції. +- Telegram: обмеження згадок у групах, команди, реакції, де вони доступні. +- Matrix: зашифровані кімнати, зв’язки гілок або відповідей, відновлення після перезапуску. -Кожен транспорт має мати один дешевий smoke-сценарій і один або кілька сценаріїв класу помилок. Дорогі візуальні сценарії мають залишатися opt-in. +Кожен транспорт має мати один дешевий smoke-сценарій і один або більше сценаріїв класів помилок. Дорогі візуальні сценарії мають залишатися opt-in. ## Відкриті питання - Який бот Discord має бути драйвером, а який SUT, коли наявний бот Mantis використовується повторно? -- Чи має вхід браузера-спостерігача використовувати людський обліковий запис Discord, тестовий обліковий запис або лише доступні боту докази REST на першому етапі? +- Чи має вхід спостерігача в браузері використовувати людський обліковий запис Discord, тестовий обліковий запис або лише доступні боту докази REST для першої фази? - Як довго GitHub має зберігати артефакти Mantis для PR? - Коли ClawSweeper має автоматично рекомендувати Mantis замість очікування команди супровідника? - Чи потрібно редагувати або обрізати знімки екрана перед завантаженням для публічних PR?