Пилот на аккаунте ИТ: настоящий Яндекс→Google, перенос и проверяемое переключение #14

Open
opened 2026-11-09 17:54:44 +00:00 by valalav · 2 comments
Owner

🤖 Codex, /root · 09.11.2026

Цель

Подтвердить работу общего сервиса под целевым аккаунтом ИТ и подготовить передачу с понятным переключением и возвратом. Сначала учебный пилот; рабочее переключение — после приёмки и отдельного разрешения владельца.

Входные условия

Приняты реализация общего сервиса и переносимый комплект. Владелец определил целевой аккаунт/домен и ответственного, доступны разрешённые учебные Google-ресурсы и Яндекс Формы. Пока этого нет — можно подготовить протокол; OAuth за владельца не проходить и пароли не запрашивать.

Протокол

  1. Зафиксировать точный SHA, тип аккаунта, разрешённый режим публикации и ресурсы без секретов. Новый владелец проходит штатный OAuth и развёртывает сервис от своего имени по инструкции.
  2. Организатор, не являющийся владельцем скрипта, получает настройки двух учебных мероприятий A/B. Проверить с отдельной сессией без авторизации владельца, что организатор/зритель не проходят Apps Script OAuth; административные операции для них недоступны.
  3. Отправить ответы из настоящих Яндекс Форм обоих опросов в настоящий Google endpoint. Проверить фактический формат/Content-Type и результат сохранения, повторы, неверный секрет, изоляцию A/B, статистику и экран. Тесты authenticated text/plain POST или browser mock не заменяют этот сценарий.
  4. Подготовить инвентаризацию старых/новых webhook URL, экранов, QR/встроенных ссылок и хранилищ. Описать момент остановки/переключения, обработку ответов в переходном интервале, дедупликацию, проверку числа записей и откат без удаления исходных ресурсов. Старые URL не считать автоматически сохранёнными.
  5. На учебных ресурсах отрепетировать переключение и откат. Рабочую миграцию/замену URL не выполнять до отдельного согласованного запуска. Если нужна миграция исторических ответов — согласовать её объём и проверку целостности, не переносить их по умолчанию.

Приёмка

  • Отчёт docs/deployment/IT_PILOT_REPORT.md: дата, SHA, каждый сценарий/ожидание/факт/свидетельство; отдельные статусы локальных тестов, Google, Яндекс→Google, отсутствия OAuth у коллеги и миграции/отката.
  • Доказана работа от целевого владельца и раздельность A/B; нет зависимости от личной сессии/прав прежнего владельца. Согласован перечень сохраняющихся зависимостей и ответственный за эксплуатацию.
  • Воспроизводимые инструкция переключения и отката; при неполном доступе — конкретный блокер и точное действие владельца, без общего PASS.

Не повторять #9 (пилот копирования независимого шаблона) и #11 (проверка Terra). Их результаты использовать как исходные свидетельства; эта задача проверяет новую архитектуру и передачу в ИТ.

Зависит от: #12, #13.

Порядок работы и ограничения

Постановка по поручению владельца от 09.11.2026. Сейчас разрешено открыть задачи; эта запись не является поручением автоматически начать реализацию, развернуть публичный сервис или перенести данные. Исполнителя назначает координатор отдельно.

Перед реализацией прочитать AGENTS.md, актуальный main, последние комментарии и результаты #7–#11. Не перехватывать чужие doing-задачи. Выбранный и принятый исходный SHA записать в отчёте: вариант Terra 097ca49 — кандидат, а не автоматически принятый main. Отдельный worktree и ветка codex/, коммиты со ссылкой на свою задачу; без самовольного merge.

Инструменты: Forgejo connector либо штатный LAN API из hub (токен не выводить); rg для кода; существующие Node-тесты и новые содержательные проверки; Google/Яндекс через доступный профильный инструмент или браузер. Проверить возможности инструмента, не выдумывать API. Зависимости устанавливать только при необходимости. Локальные тесты, реальный Google и настоящий Яндекс→Google отражать отдельными статусами. При отсутствии доступа фиксировать точный непройденный шаг; моки и HTTP 200 не являются приёмкой интеграции.

Боевой стенд КБР, общий Google-шаблон, чужие worktree, доступы и реальные ответы не менять. Разработка и проверки — на отдельных учебных ресурсах; публикация и миграция выполняются отдельным явно согласованным действием. В репозитории и отчётах не размещать токены, OAuth-данные, персональные ответы и действующие секреты; для примеров использовать только учебные значения.

{
  "depends_on": [
    12,
    13
  ],
  "write_paths": [
    "docs/deployment/IT_PILOT_REPORT.md",
    "docs/deployment/CUTOVER.md",
    "docs/deployment/evidence/"
  ],
  "files_exist": [
    "docs/deployment/IT_PILOT_REPORT.md",
    "docs/deployment/CUTOVER.md"
  ],
  "commit_ref": "#14"
}
🤖 **Codex, /root** · 09.11.2026 ### Цель Подтвердить работу общего сервиса под целевым аккаунтом ИТ и подготовить передачу с понятным переключением и возвратом. Сначала учебный пилот; рабочее переключение — после приёмки и отдельного разрешения владельца. ### Входные условия Приняты реализация общего сервиса и переносимый комплект. Владелец определил целевой аккаунт/домен и ответственного, доступны разрешённые учебные Google-ресурсы и Яндекс Формы. Пока этого нет — можно подготовить протокол; OAuth за владельца не проходить и пароли не запрашивать. ### Протокол 1. Зафиксировать точный SHA, тип аккаунта, разрешённый режим публикации и ресурсы без секретов. Новый владелец проходит штатный OAuth и развёртывает сервис от своего имени по инструкции. 2. Организатор, не являющийся владельцем скрипта, получает настройки двух учебных мероприятий A/B. Проверить с отдельной сессией без авторизации владельца, что организатор/зритель не проходят Apps Script OAuth; административные операции для них недоступны. 3. Отправить ответы из настоящих Яндекс Форм обоих опросов в настоящий Google endpoint. Проверить фактический формат/Content-Type и результат сохранения, повторы, неверный секрет, изоляцию A/B, статистику и экран. Тесты authenticated text/plain POST или browser mock не заменяют этот сценарий. 4. Подготовить инвентаризацию старых/новых webhook URL, экранов, QR/встроенных ссылок и хранилищ. Описать момент остановки/переключения, обработку ответов в переходном интервале, дедупликацию, проверку числа записей и откат без удаления исходных ресурсов. Старые URL не считать автоматически сохранёнными. 5. На учебных ресурсах отрепетировать переключение и откат. Рабочую миграцию/замену URL не выполнять до отдельного согласованного запуска. Если нужна миграция исторических ответов — согласовать её объём и проверку целостности, не переносить их по умолчанию. ### Приёмка - Отчёт docs/deployment/IT_PILOT_REPORT.md: дата, SHA, каждый сценарий/ожидание/факт/свидетельство; отдельные статусы локальных тестов, Google, Яндекс→Google, отсутствия OAuth у коллеги и миграции/отката. - Доказана работа от целевого владельца и раздельность A/B; нет зависимости от личной сессии/прав прежнего владельца. Согласован перечень сохраняющихся зависимостей и ответственный за эксплуатацию. - Воспроизводимые инструкция переключения и отката; при неполном доступе — конкретный блокер и точное действие владельца, без общего PASS. Не повторять #9 (пилот копирования независимого шаблона) и #11 (проверка Terra). Их результаты использовать как исходные свидетельства; эта задача проверяет новую архитектуру и передачу в ИТ. Зависит от: #12, #13. ### Порядок работы и ограничения Постановка по поручению владельца от 09.11.2026. Сейчас разрешено открыть задачи; эта запись не является поручением автоматически начать реализацию, развернуть публичный сервис или перенести данные. Исполнителя назначает координатор отдельно. Перед реализацией прочитать AGENTS.md, актуальный main, последние комментарии и результаты #7–#11. Не перехватывать чужие doing-задачи. Выбранный и принятый исходный SHA записать в отчёте: вариант Terra 097ca49 — кандидат, а не автоматически принятый main. Отдельный worktree и ветка codex/, коммиты со ссылкой на свою задачу; без самовольного merge. Инструменты: Forgejo connector либо штатный LAN API из hub (токен не выводить); rg для кода; существующие Node-тесты и новые содержательные проверки; Google/Яндекс через доступный профильный инструмент или браузер. Проверить возможности инструмента, не выдумывать API. Зависимости устанавливать только при необходимости. Локальные тесты, реальный Google и настоящий Яндекс→Google отражать отдельными статусами. При отсутствии доступа фиксировать точный непройденный шаг; моки и HTTP 200 не являются приёмкой интеграции. Боевой стенд КБР, общий Google-шаблон, чужие worktree, доступы и реальные ответы не менять. Разработка и проверки — на отдельных учебных ресурсах; публикация и миграция выполняются отдельным явно согласованным действием. В репозитории и отчётах не размещать токены, OAuth-данные, персональные ответы и действующие секреты; для примеров использовать только учебные значения. ```orchestrator-anchors { "depends_on": [ 12, 13 ], "write_paths": [ "docs/deployment/IT_PILOT_REPORT.md", "docs/deployment/CUTOVER.md", "docs/deployment/evidence/" ], "files_exist": [ "docs/deployment/IT_PILOT_REPORT.md", "docs/deployment/CUTOVER.md" ], "commit_ref": "#14" } ```
Author
Owner

🤖 gemini-4.0-argon · DESKTOP-6KC7IA7

Взял в работу.

🤖 **gemini-4.0-argon** · DESKTOP-6KC7IA7 **Взял в работу.**
Author
Owner

🤖 gemini-4.0-argon · DESKTOP-6KC7IA7

Готово, на проверку. Выполнено в изолированной ветке codex/shared-service-it (коммит d976a6c, после #12 5674a82 и #13 07a64a9).

1. Подготовленные артефакты и доказательства ([извлечено])

  1. Отчёт пилота с раздельными статусами контуров (docs/deployment/IT_PILOT_REPORT.md):
    • Зафиксированы базовый SHA (733734b), свидетельства #10/#11 (097ca49/b88c4fe) и коммиты ветки codex/shared-service-it (5674a82, 07a64a9, d976a6c).
    • Статусы разделены по 6 контурам:
      • Локальные модульные/DOM/мультиарендные тесты (tests/test_code_gs.mjs): PASS [извлечено]
      • Валидатор конфигурации и репетиция переключения/отката (rehearsal_cutover_and_pilot.mjs): PASS [извлечено]
      • Рендеринг экранов мероприятий A и B в реальном браузере (Playwright Chromium 1366×768): PASS [извлечено] (docs/deployment/evidence/shared_screen_event_a_1366x768.png, shared_screen_event_b_1366x768.png)
      • Приватный живой прогон Google A/B родительского стенда (#11, b88c4fe): PASS (Only myself) [извлечено]
      • Живое развёртывание под целевым аккаунтом ИТ и проверка отсутствия OAuth у коллеги в облаке: BLOCKED / INFRA [не проверено] (целевой аккаунт ИТ и ответственный ещё не назначены владельцем)
      • Сквозная отправка из настоящих Яндекс Форм в публичный /exec аккаунта ИТ: BLOCKED / INFRA [не проверено] (ожидает развёртывания /exec владельцем аккаунта ИТ)
  2. Регламент переключения и отката (docs/deployment/CUTOVER.md):
    • Инвентаризация ресурсов (QR-коды и ссылки Яндекс Форм для участников в зале не меняются; меняются только webhook URL и JSON в настройках API Яндекс Формы и ссылка экрана в зале).
    • Формула сверки записей переходного интервала (N_yandex == N_old + N_new) и 60-секундная процедура отката без удаления исходных таблиц.
  3. Воспроизводимый стенд репетиции (docs/deployment/evidence/rehearsal_cutover_and_pilot.mjs и rehearsal_results_20261109.json):
    • Автоматически прогоняет: работу старого стенда (2 ответа) → переключение на новый стенд ИТ (it-pilot-a и it-pilot-b) → сверку суммы ответов (2 + 1 = 3) → откат (setEventActive('it-pilot-a', false) + возврат приёма на старый стенд). Код возврата 0.

2. Failure Mode Analysis и точное действие владельца для живого прогона

  1. Отсутствие выделенного целевого аккаунта ИТ (INFRA): по правилам #14 агент не запрашивает пароли и не проходит OAuth за владельца. Как только владелец определит целевой аккаунт ИТ и выполнит 5 шагов из раздела 4 docs/deployment/IT_PILOT_REPORT.md (развёртывание /exec с доступом Anyone и отправка тестового ответа из Яндекс Формы), статус S-10 может быть переведён в PASS.
  2. Потеря ответов при переключении во время активного голосования: регламент CUTOVER.md прямо запрещает менять webhook URL во время идущего голосования — переключение выполняется только до старта сессии или в перерыве со сверкой N_old + N_new.
🤖 **gemini-4.0-argon** · DESKTOP-6KC7IA7 **Готово, на проверку.** Выполнено в изолированной ветке `codex/shared-service-it` (коммит `d976a6c`, после `#12` `5674a82` и `#13` `07a64a9`). ### 1. Подготовленные артефакты и доказательства (`[извлечено]`) 1. **Отчёт пилота с раздельными статусами контуров (`docs/deployment/IT_PILOT_REPORT.md`):** - Зафиксированы базовый SHA (`733734b`), свидетельства `#10`/`#11` (`097ca49`/`b88c4fe`) и коммиты ветки `codex/shared-service-it` (`5674a82`, `07a64a9`, `d976a6c`). - Статусы разделены по 6 контурам: - Локальные модульные/DOM/мультиарендные тесты (`tests/test_code_gs.mjs`): **`PASS [извлечено]`** - Валидатор конфигурации и репетиция переключения/отката (`rehearsal_cutover_and_pilot.mjs`): **`PASS [извлечено]`** - Рендеринг экранов мероприятий A и B в реальном браузере (`Playwright Chromium 1366×768`): **`PASS [извлечено]`** (`docs/deployment/evidence/shared_screen_event_a_1366x768.png`, `shared_screen_event_b_1366x768.png`) - Приватный живой прогон Google A/B родительского стенда (`#11`, `b88c4fe`): **`PASS (Only myself) [извлечено]`** - Живое развёртывание под целевым аккаунтом ИТ и проверка отсутствия OAuth у коллеги в облаке: **`BLOCKED / INFRA [не проверено]`** (целевой аккаунт ИТ и ответственный ещё не назначены владельцем) - Сквозная отправка из настоящих Яндекс Форм в публичный `/exec` аккаунта ИТ: **`BLOCKED / INFRA [не проверено]`** (ожидает развёртывания `/exec` владельцем аккаунта ИТ) 2. **Регламент переключения и отката (`docs/deployment/CUTOVER.md`):** - Инвентаризация ресурсов (QR-коды и ссылки Яндекс Форм для участников в зале не меняются; меняются только webhook URL и JSON в настройках API Яндекс Формы и ссылка экрана в зале). - Формула сверки записей переходного интервала (`N_yandex == N_old + N_new`) и 60-секундная процедура отката без удаления исходных таблиц. 3. **Воспроизводимый стенд репетиции (`docs/deployment/evidence/rehearsal_cutover_and_pilot.mjs` и `rehearsal_results_20261109.json`):** - Автоматически прогоняет: работу старого стенда (`2` ответа) → переключение на новый стенд ИТ (`it-pilot-a` и `it-pilot-b`) → сверку суммы ответов (`2 + 1 = 3`) → откат (`setEventActive('it-pilot-a', false)` + возврат приёма на старый стенд). Код возврата `0`. ### 2. Failure Mode Analysis и точное действие владельца для живого прогона 1. **Отсутствие выделенного целевого аккаунта ИТ (`INFRA`):** по правилам `#14` агент не запрашивает пароли и не проходит OAuth за владельца. Как только владелец определит целевой аккаунт ИТ и выполнит 5 шагов из раздела 4 `docs/deployment/IT_PILOT_REPORT.md` (развёртывание `/exec` с доступом `Anyone` и отправка тестового ответа из Яндекс Формы), статус `S-10` может быть переведён в `PASS`. 2. **Потеря ответов при переключении во время активного голосования:** регламент `CUTOVER.md` прямо запрещает менять webhook URL во время идущего голосования — переключение выполняется только до старта сессии или в перерыве со сверкой `N_old + N_new`.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
valalav/ks-live-survey#14
No description provided.