WEB board

всеканоны и докиворкеры↗ iOS↗ Легаси
WEB-566 · Задача · — · web

sixbyy: действия владельца — кабинеты (Stripe/Apple/Google/Telegram) и DMCA-агент с e-mail support@sixbyy.com

Закрыт P2 ведёт: — эпик: WEB-561
Суть
1. Суть одной фразой: Кабинеты владельца (Apple/Google/Stripe), parentId WEB-561.
2. Где мы сейчас (13.09.2026): DMCA-1079963 подан/оплачен; кабинеты Apple+Google готовы; Stripe sandbox beta вкл; чекер в коде (ownerCabinets/readiness.ts, aa1e09155).
3. Хронология: кабинеты + чекер.
4. Карта документов и кода: ownerCabinets/readiness.ts.
5. Остаток: владелец — Stripe live KYC/IBAN/live-keys + email-провайдер/домен (SPF/DKIM/DMARC).
6. Критерий закрытия: все кабинеты live + чекер зелёный.

---

## история (тело до 13.09.2026)

<!-- coord-block-start 2026-09-06 -->
## ДЛЯ НУЛЕВОГО АГЕНТА (обновлено 2026-09-06 UTC)
- Owner actions: Stripe/Apple/Google/Telegram and DMCA agent support@sixbyy.com.
- Код: proxy.ts, verifyOrigin.ts, legal DMCA page/real policy.
- Посажено: Apple origin-lock 7c46b0ee в l113c 0390afc9; DMCA-1079963; Cloudflare routes active. Открыто: real legal/live decision, email verification off, stale QA cookies.
## KNOWN ISSUES / ТРАБЛШУТИНГ
- Apple origin_boundary_rejected → POST form_post Origin appleid.apple.com + state/PKCE → proxy.ts/verifyOrigin.ts без исключения → 7c46b0ee/2166.
- Real DMCA не виден → LEGAL_DOC_MODE=real и env → synthetic скрывает пакет → owner decision/2123.
- Verification mail не идёт → emailVerification.sent=false/provider=none → owner-controlled transport → 2399.

<!-- coord-block-end 2026-09-06 -->
## ДЛЯ НУЛЕВОГО АГЕНТА (обновлено 2026-09-06 UTC)\n- Что это: действия владельца по Stripe/Apple/Google/Telegram и DMCA-agent с support@sixbyy.com.\n- Где код: Apple callback/origin-lock , ; legal agent , real docs .\n- Посажено/линия: Apple origin-lock  принят и посажен в l113c ; DMCA registration  подтверждён; контакты Cloudflare Email Routing активны.\n- Открыто: real legal mode/live go-live — решение владельца; email verification выключен на проде; QA-учётки/cookies могут быть устаревшими. Отчёты APPLEORIGINLOCK, ACCDMCAAGENTPAGE2.\n\n## KNOWN ISSUES / ТРАБЛШУТИНГ\n- Apple callback даёт  → проверить POST form_post с Origin appleid.apple.com и state/PKCE → общий origin-lock в / отвергал внешний Origin → узкое исключение , негативы чужого Origin/state пройдены → волны 2159/2166.\n- Реальные DMCA реквизиты не видны → проверить  и семь env → synthetic mode намеренно скрывает real пакет → переключение только решением владельца, проверить legal URLs → 2123.\n- Email verification не отправляет → проверить , provider/outbox и Cloudflare routing → transport/provider=none → включить и проверить отдельным owner-controlled изменением, не подставлять секреты → ERRORSWEEP 2399.\n

<!-- coord-block-start 2026-09-06 -->
## ДЛЯ НУЛЕВОГО АГЕНТА (обновлено 2026-09-06 UTC)\n- Что это: действия владельца по Stripe/Apple/Google/Telegram и DMCA-agent с support@sixbyy.com.\n- Где код: Apple callback/origin-lock , ; legal agent , real docs .\n- Посажено/линия: Apple origin-lock  принят и посажен в l113c ; DMCA registration  подтверждён; контакты Cloudflare Email Routing активны.\n- Открыто: real legal mode/live go-live — решение владельца; email verification выключен на проде; QA-учётки/cookies могут быть устаревшими. Отчёты APPLEORIGINLOCK, ACCDMCAAGENTPAGE2.\n\n## KNOWN ISSUES / ТРАБЛШУТИНГ\n- Apple callback даёт  → проверить POST form_post с Origin appleid.apple.com и state/PKCE → общий origin-lock в / отвергал внешний Origin → узкое исключение , негативы чужого Origin/state пройдены → волны 2159/2166.\n- Реальные DMCA реквизиты не видны → проверить  и семь env → synthetic mode намеренно скрывает real пакет → переключение только решением владельца, проверить legal URLs → 2123.\n- Email verification не отправляет → проверить , provider/outbox и Cloudflare routing → transport/provider=none → включить и проверить отдельным owner-controlled изменением, не подставлять секреты → ERRORSWEEP 2399.\n
<!-- coord-block-end 2026-09-06 -->
Владелец: Stripe webhook endpoint на app.sixbyy.com; Apple Sign-in Services ID redirect; Google OAuth authorized redirect; Telegram BotFather domain (если используется login widget); DMCA-агент dmca.copyright.gov ($6, данные отправлены 05.09 msg 17341). Координатор подскажет точные URL по каждому пункту перед cutover.
Доказательства

WASH3340-RECEIVED:566
/Users/annakorin/nc-ops-scripts/board-wash-20260910/3340WASHEXTERNAL-REPORT.md
Bundle SHA256 109076e36b8b4f3a8575f11933f8f1632e3638a124b95e1e409f0046129dfcae
Лента
2026-09-05T22:47:05.312Z · coordinator
[05.09 22:47Z координатор] [06.09 02:50Z координатор | DMCA DESIGNATED AGENT — ПОДАНО И ОПЛАЧЕНО] dmca.copyright.gov (аккаунт Login.gov support@sixbyy.com, второй фактор без SMS — ирландские номера Login.gov не верифицирует): Service Provider «Yaroslav Berestenko», 11 Loughstown Holiday Village, Collinstown, Co. Westmeath, N91 A032, Ireland, +353 87 399 6288, support@sixbyy.com; Designated Agent — то же лицо, организация «Sixbyy». **Registration Number DMCA-1079963**, Pay.gov Tracking ID **285OQEQP**, $6 картой, 05.09 18:42 ET (22:42Z), статус «Payment Processing» (верификация карты — минуты; письмо-подтверждение придёт на support@sixbyy.com). Альтернативные имена (Sixbyy, sixbyy.com, app.sixbyy.com, wool2.online, nb.wool2.online) — добавить владельцу в кабинете (Manage My Account) после подтверждения, если ещё не добавлены. ДАЛЬШЕ (продукт): в страницу /legal/dmca (или copyright policy) вписать агента: имя, адрес, e-mail support@sixbyy.com, регистрационный номер DMCA-1079963; процедура notice/counter-notice — уже в legal-пакете WEB-516 (проверить, что там плейсхолдер агента заменён). ЛОВУШКИ формы: кнопки Next/Add в dmca.copyright.gov не срабатывают из невидимого окна автоматизации — только обычные клики владельца; текстовые поля заполняются штатно.
2026-09-05T22:52:05.126Z · coordinator
[05.09 22:52Z координатор] [06.09 03:10Z координатор | DMCA: ОПЛАТА ПОДТВЕРЖДЕНА] Письмо Copyright Office (22:50Z, на support@sixbyy.com): «payment in the amount of $6.00 was successfully processed», registration number DMCA-1079963, провайдер и агент Yaroslav Berestenko включены в DMCA Designated Agent Directory (публично всё, кроме телефона/e-mail провайдера). Действие владельца по DMCA закрыто. Остаётся продукт: волна 2112 (A2) вписывает агента и номер в legal-страницы (l113b).
2026-09-05T22:59:45.573Z · coordinator
[05.09 22:59Z координатор] [06.09 04:00Z координатор | КАБИНЕТЫ: Apple сделан владельцем] Services ID «NoteClone Sign In» (online.wool2.noteclone.signin): Sign in with Apple → Website URLs += домен app.sixbyy.com, Return URL https://app.sixbyy.com/api/auth/callback/apple (по сообщению владельца 03:58Z, старые nb.wool2.online сохранены). Проверка — при этапе B (WEB-564): вход через Apple на app.sixbyy.com. Остались: Google (redirect/origin), Stripe endpoint (+ secret в файл на M1).
2026-09-05T23:22:04.831Z · coordinator
[05.09 23:22Z координатор] [06.09 05:40Z координатор | КАБИНЕТЫ: Google сделан владельцем] Проект nb-integration (594919711023, учётка fandyy2023, authuser=1), OAuth client «nb-integration-prod-20260528» (Web): JS origins += https://app.sixbyy.com; redirect URIs теперь: nb.wool2.online и dev.nb.wool2.online × (`/api/integrations/google/auth`, `/api/auth/callback/google`) + https://app.sixbyy.com/api/auth/callback/google; попросил добавить `https://app.sixbyy.com/api/integrations/google/auth` (Drive-интеграция). Замечено: предупреждающий значок у клиента (consent screen testing/unverified?) — проверить отдельно перед публичной бетой. Apple — сделано. Остался Stripe.
2026-09-06T02:26:22.924Z · coordinator
[06.09 02:26Z координатор] [2026-09-06T02:26Z координатор] ЛЕГАЛ ВКЛЮЧЁН В REAL по «да» владельца (02:2xZ): LEGAL_DOC_MODE=real в /home/ubuntu/prod/shared/.env.local (бэкап .env.local.bak-legalreal-*), рестарт nc-a1-b → await → nc-a1 → await (последовательно, без общего простоя). Проверено через edge app.sixbyy.com: /legal/dmca, /privacy, /terms, /cookies, /refund = 200; на DMCA-странице синтетического баннера нет, регистрационный номер агента DMCA-1079963 показан, блок Designated Agent Directory присутствует. Real-пакет в релизе l113b: 12 файлов (TOS, PRIVACY, COOKIE, REFUND, DMCA, SECURITY, BETA_TERMS, vendor lists, founder-decisions). Откат: вернуть LEGAL_DOC_MODE=synthetic и те же рестарты.
2026-09-06T02:41:52.971Z · coordinator
[06.09 02:41Z координатор] [2026-09-06T02:41Z координатор] БЕТА ВКЛЮЧЕНА НА ПРОДЕ (sandbox) по указанию владельца 06.09 02:3xZ: STRIPE_SECRET_KEY (sk_test), STRIPE_PUBLISHABLE_KEY / NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY (pk_test), STRIPE_WEBHOOK_SECRET, STRIPE_BETA_FREE_MODE=1 — в /home/ubuntu/prod/shared/.env.local (0600, бэкап .env.local.bak-stripe-*). Webhook endpoint в sandbox: app-sixbyy-prod-a1 (we_1UCVyIEBncgzhYfvJtT21xqj) → https://app.sixbyy.com/api/billing/webhook, события: checkout.session.completed, payment_intent.amount_capturable_updated/canceled/payment_failed/succeeded, customer.subscription.created/updated/deleted. Рестарт nc-a1-b → await → nc-a1 → await; ready/paid ok. Smoke: PaymentIntent pi_3UCW0jEBncgzhYfv0H53Bdeh (10 EUR, pm_card_visa, capture_method=manual → requires_capture) создан и отменён через API — nginx: 2× POST /api/billing/webhook = 200 (подпись принята). Без подписи → 400 (правильно).
KNOWN ISSUES / ТРАБЛШУТИНГ: (1) boot-env-contract пишет bad_secret_format STRIPE_SECRET_KEY expected sk_live_ — предупреждение, не фатал (envContract.ts:498); при переходе на live исчезнет; (2) Stripe CLI на A1 нет — smoke делать через API (curl -K - с ключом через stdin, не в argv); PaymentIntent требует automatic_payment_methods[allow_redirects]=never без return_url; (3) UI-проверка владельца (карта 4242) ожидается; статус → review.
2026-09-06T03:11:46.921Z · coordinator
[06.09 03:11Z координатор] [2026-09-06T03:11Z координатор] Волна 2159-appleoriginlock (A2, luna xhigh): VERDICT=PASS, commit=7c46b0ee — узкое исключение origin-lock для POST /api/auth/callback/apple (Origin appleid.apple.com / form_post), остальное без изменений. Независимая приёмка 2166-accappleoriginlock поставлена (sol xhigh, негативы на неослабление защиты). GO → l113c → посадка → владелец пробует Apple-вход. Отчёт: A2 /home/ubuntu/waves/APPLEORIGINLOCK-REPORT.md.
2026-09-06T03:26:34.528Z · coordinator
[06.09 03:26Z координатор] [2026-09-06T03:26Z координатор] ПРИЁМКА 2166-accappleoriginlock (A2, sol xhigh): VERDICT=GO на 7c46b0ee — исключение узкое, негативы (чужой Origin, другие /api/*, state/nonce) пройдены. Cherry-pick в l113c выполнен. Владелец сможет войти через Apple после посадки l113c.
2026-09-06T04:04:50.382Z · coordinator
[06.09 04:04Z координатор] [2026-09-06T04:04Z координатор] ПОСАЖЕНО: ПРОД = l113c 0390afc9 (03:59Z, без простоя; оба бэкенда ready, paid enforce_ready, edge 200×4; hetzbk l113c-0390afc9 + env-pack; Pi standby → l113c). В составе: WEB-505 3bb21db4 (окно цитирования), WEB-497 a1b3f9fd (судья), WEB-495/465 revive-бюджет (сквош 75ac1e21), WEB-564/566 Apple origin-lock 7c46b0ee, WEB-530 f7a427bd(+db551088), WEB-562 2daaf3db, WEB-556 1666dfb2, WEB-549/551 5d497bfe. Откат = l113b 02812b90 (RUN l113b-02812b90, REL arm64-l113b-20260906T003405Z). Артефакт me2-standalone-linux-arm64-0390afc9-20260906T035404Z sha 97076030…
2026-09-06T10:21:15.500Z · coordinator
[06.09 10:21Z координатор] [2026-09-06T10:21Z координатор] ПОСАЖЕНО: ПРОД = l113e 65ff9060 (flip 10:17:49Z, без простоя; оба бэкенда ready, paid enforce_ready, edge 200×8; 3 миграции применены (WEB-538 email idempotency, WEB-555 daily reward receipt, WEB-542 oauth atomic generation); hetzbk l113e-65ff9060, Pi standby → l113e). Состав (15 коммитов над l113d): social OAuth callback guard + origin validator (3391848c, 11148078), роли — многошаговые цепочки v3 (f00d3639, 7663ba59, 475f2872 → C1-6/C3-1/C3-2), WEB-553 clipper owner state (ba3acc4b), WEB-555 daily reward (d7e486e9), WEB-538 email delivery idempotency+fence (df0399da, 5895c8d0), WEB-542 OAuth atomic generation (3f281a9b, e04fd90d, 1d87f676), P19 манифест 187, api-perimeter baseline. Откат = l113d 4c73d845 (RUN l113d-4c73d845, REL arm64-l113d-20260906T085722Z). Дальше: батарея ролей на l113e; l113f = WEB-560 merge 8dd1682e, WEB-541 3fd18f21, WEB-545 c4373797, WEB-509 9ad8335c + ждущие приёмок.
2026-09-06T11:31:41.141Z · coordinator
[06.09 11:31Z координатор] [2026-09-06T11:31Z координатор] ПРОВЕРЕНО НА ПРОДЕ: Google/Apple вход на app.sixbyy.com работает — POST /api/auth/signin/{google,apple} с csrfToken → 302 на accounts.google.com / appleid.apple.com (client_id online.wool2.noteclone.signin). «error=Configuration» в пост-QA = GET на signin/<provider> (Auth.js: UnknownAction) — ошибка метода пробы, не продукта. KNOWN ISSUES: пробовать OAuth только POST с csrf; GET даёт ложный Configuration. QA-учётка для пост-QA: /home/wave/qa/ пуст, cookie l106 протух → нужен свежий QA-логин (координатор).
2026-09-06T13:05:54.637Z · coordinator
[06.09 13:05Z координатор] [2026-09-06T13:05Z координатор] QA-учётка для пост-QA заведена штатно (invite через админ-маршрут, регистрация 200, credentials-login 302, сессия есть): qa.c09.browser2@sixbyy.com, креды /home/wave/qa/qa-c09-browser2.json (0600 wave). НАХОДКА: регистрация вернула emailVerification.required=true, sent=false — почтовый транспорт на проде выключен (startup: email.transport.configuration mode=off, provider=none) → новые пользователи не получают письмо подтверждения. Это касается всех регистраций по invite, не только QA. Вопрос владельцу/эпику витрины (WEB-516/566): включать транспорт (SMTP/провайдер) или снимать требование верификации для беты.
2026-09-06T18:19:14.311Z · coordinator
[06.09 18:19Z координатор] Email transport на проде выключен (пост-QA l113h: emailVerification.sent=false у QA-аккаунта, emailVerified=false). Запущена read-only волна 2380 EMAILVERIFYPATH (A1): карта всех путей, которые шлют письма (verify/reset/invite/receipts/alerts), что ломается при выключенном транспорте (залипание аккаунтов без emailVerified), имена env-ключей и чек-лист включения для владельца (провайдер, домен отправителя, SPF/DKIM/DMARC для Cloudflare DNS). support@sixbyy.com — Cloudflare Email Routing (только входящие).
2026-09-06T18:40:05.268Z · coordinator
[06.09 18:40Z координатор] EMAILVERIFYPATH (A1, NO-GO): на проде EMAIL_TRANSPORT не задан у обоих бэкендов → provider=none (transport.ts:106-125). Последствия по коду 83683d48: парольный аккаунт создаётся, API честно даёт emailVerification.sent=false, 3-дневный grace пускает в кабинет, через 3 дня credentials-login блокируется (EMAIL_VERIFY_GRACE_DAYS); resend-verification и magic-link отвечают 200 при send-failed (пользователь видит успех); invite/share создаёт пользователя и права до письма, затем 502; welcome grant pending без emailVerified; billing/usage-письма теряются; отдельного password-reset нет (только magic login). → фикс-волна 2403 INVITE502 (A1): fail-closed/честные ответы без включения транспорта. Владельцу: выбрать провайдера (Resend/SES/SMTP) + домен отправителя (SPF/DKIM/DMARC в Cloudflare DNS) — чек-лист в отчёте.
2026-09-06T20:46:08.075Z · coordinator
[06.09 20:46Z координатор] ACCINVITE502 (A2, NO-GO на 98e0f55e): функция подтверждена (invite/share при provider=none не 502, honest sent:false / контракт), блокеры: scoped tsc exit 2 — TS18047 (possibly null) в src/app/api/teams/[teamId]/members/route.ts:149; две затронутые auth-route suites не обновлены под новый default provider=none. → круг 2 2444 INVITE502R2 (A2). Email transport на проде по-прежнему unset (provider=none) — решение владельца по провайдеру/домену (чек-лист в EMAILVERIFYPATH).
2026-09-06T21:18:28.866Z · coordinator
[06.09 21:18Z координатор] INVITE502R2 (A2, GO, 57b05296): TS18047 закрыт явной null-веткой (teams/[teamId]/members/route.ts:149), обе auth-route suites обновлены под default provider=none; invite/share без 502, resend/magic-link — честный контракт. Приёмка 2458 ACCINVITE502R2 (A2) → l113j. Решение владельца по email-провайдеру/домену по-прежнему открыто (чек-лист в EMAILVERIFYPATH).
2026-09-06T22:51:03.628Z · coordinator
[06.09 22:51Z координатор] ВЛАДЕЛЕЦ 06.09 22:49Z: (1) DMCA-агент на dmca.copyright.gov ЗАРЕГИСТРИРОВАН владельцем 05.09 — пункт закрыт, не ждёт; (2) «да, меняй заглушки на настоящие» — legal real-режим (LEGAL_DOC_MODE=real + LEGAL_DMCA_*) включать при посадке l113j (env-фаза, координатор); (3) владелец утверждает, что отправка писем работает — проверяю факт транспорта на проде (ERRORSWEEP3/4 видели provider=none в стартовых баннерах 3010/3012/3011).
2026-09-06T23:01:59.879Z · coordinator
[06.09 23:01Z координатор] 🛬 ПОСАЖЕН l113j (46393080dd885f6ff25967f18639075564e12737) на прод 06.09 22:56:47Z (nc-a1) / 22:56:54Z (nc-a1-b) без простоя (контроллер по одному бэкенду, edge ×8 = 200, paid enforce_ready на обоих). Артефакт me2-standalone-linux-arm64-46393080d-20260906T225025Z sha 44b32502…; RUN l113j-46393080; откат = l113i 18f13093. Состав (L113JPREP2 GO, 15 коммитов): BARGEINRENDERFIX 28467587 (WEB-463: рендерер знает LIVE_UPSTREAM_ENABLED → 8000 идёт в live-upstream; на шлюз ещё нужен sync-plan --apply + рестарт в окне), ROLES5BREBASE c010b7de (roles 5b: admission ≤2000 + repair карантина, ACC GO), DOCENGINECOMPLETENESSR2 e3558f48 (ACC GO), INVITE502R2 (ACC GO), controller adopt ed2b3bf2 (writer, dormant до бинаря на хосте; r2 1fc3f8a9 → l113k), единый regen activation manifest. Env по решениям владельца: APP_ALLOWED_HOSTS += 127.0.0.1:3012 (SEC-007 F1), EMAIL_TRANSPORT=resend через nc-fence (allowlist += api.resend.com:443; было: транспорт off с 25.08 — старые ключи SMTP_HOST vs новые EMAIL_*), LEGAL_DOC_MODE=real + реквизиты DMCA-1079963. Миграций новых нет (P19 189). hetzbk publish/env-pack — см. следующий комментарий. Далее: батарея ролей на l113j, dry-run репейра карантина (--in-process-repair, --conditions=react-server), SIP фаза 3.
2026-09-06T23:38:54.558Z · coordinator
[06.09 23:38Z координатор] КАНДИДАТ l113k СОБРАН (волна 2490 L113KPREP, A2 sol xhigh, 23:34Z): VERDICT=GO, commit d00b8f35f1699d9372616f6230c51f1e2b73c0d1 над ПРОД 46393080 (bundle L113KPREP.bundle sha 63b691a2…). Replay полных цепочек: ROLES5BREBASE (roles 5b + repair карантина), DOCENGINECOMPLETENESSR2, UPSTREAMCTRLADOPTR2 (1 конфликт в activePassiveLease.test.ts — сведён), INVITE502R2 (1 конфликт в ingest/types.ts — сведён), PODCASTRESOLVE (3 коммита; финальный конфликт в generated-файлах — снят регенерацией). Манифест миграций пересобран штатными примитивами collectMigrationSet/migrationSetSha256 (write-CLI в дереве нет): 190 миграций, last 20260906113000_web536_podcast_audio_binding_quarantine, set sha 74cecf5c…, check-migration-compatibility ok:true; отдельный коммит 8d7a7727; финальный regen activation manifest d00b8f35. Сборка l113k запущена на A2 (l113kchain.sh); посадка после PACK_OK/подписи/dry-run (миграция 190 через migrate-стадию). НЕ в l113k (ждут приёмок → l113l): overdraft cd4684cb (ACC GO, не успел в сборку), C07 ранние правки 31ea4dc3, landing e5391fea, голосовые r2, C4-RU-3 r2.
2026-09-06T23:52:21.596Z · astra-security
block22-relay9-adjudication-web-566 — 2026-09-06T23:52:21.595938+00:00 / IST=2026-09-07T05:22:21.595967+05:30

BLOCK22 RELAY-9: вердикты по доставленному пакету. l113j 46393080 source bundle проверен локально; runtime и live — по расписке. Численные тесты ниже выполнены авторами доставленных отчётов, родитель их не перезапускал.

ACCINVITE502R2-REPORT.md — повтор ранее полученных байтов, не новая приёмка.
Вердикт: Independent GO for invite/email R2 bundle; not deployed in l113j because L113JPREP2 later found an l113i semantic sourceId conflict and skipped the invite chain.
Commit/base: 57b05296fec4c89d73f610e7c3120a12a5064b1c / 83683d4818ecc9b91e151be9e27a9ef0d6015294; parent 98e0f55e07fb61b53d25d6822496ce9e23f0a884; current l113j base 46393080dd885f6ff25967f18639075564e12737
Доказательства: scoped tsc parent RED exit 2 then candidate GREEN exit 0; auth route provider=none: 9/9 pass; configured-provider backward contract: 7/7 pass; invite/share contract: 21/21 pass; invite code negatives: 9/9 pass; team/UI regressions: 11/11 pass; members route security: 7/7 pass; targeted ESLint and git diff --check exit 0
Anchors: src/app/api/auth/magic-login/request/route.ts; src/app/api/auth/resend-verification/route.ts; src/app/api/share/route.ts; src/app/api/team/share/route.ts; src/app/api/teams/[teamId]/members/route.ts; src/lib/ingest/types.ts
KNOWN ISSUES / ТРАБЛШУТИНГ: Acceptance is real, but integration onto l113i/l113j needs sourceId conflict handling; L113JPREP2 skipped both invite commits fail-closed.
Действие: Resolve during l113k replay; do not duplicate an invite acceptance brief.
Report: /Users/poolpooly/audit/evidence/block22-relay9/intake-originals/a2/ACCINVITE502R2-REPORT.md
SHA256: 034dc54771aba38c4ddf0071e52dcdac78617706146973968b125fd9552b9fad

КАРТА ДОКУМЕНТОВ: /Users/poolpooly/audit/reports/block22-relay9-update.md; /Users/poolpooly/audit/evidence/block22/ledger46.json; /Users/poolpooly/audit/evidence/block22-relay9/adjudications.json. Новые брифы 2497/2498 — ROUTING: A2; существующие coordinator waves не дублируются. Правила обогащения: WEB-449.
2026-09-07T00:43:47.339Z · coordinator
[07.09 00:43Z координатор] 🛬 ПОСАЖЕН l113k (d00b8f35f1699d9372616f6230c51f1e2b73c0d1) на прод 07.09 00:40:56Z (nc-a1) / 00:41:06Z (nc-a1-b) без простоя; edge ×8 = 200, paid enforce_ready на обоих; корень «/» на sixbyy.com/www/app = 307, /login /legal/dmca /api/health = 200. Артефакт me2-standalone-linux-arm64-d00b8f35f-20260907T003643Z sha 05b1cb1f…, RUN l113k-d00b8f35, attestation fable-a2-l113k (migrationSetSha256 74cecf5c…, 190 миграций — podcast web536 применена). Состав (46393080..d00b8f35, 19 коммитов, L113KPREP GO): ROLES5BREBASE (roles 5b + quarantine repair, --in-process-repair), DOCENGINECOMPLETENESSR2 e3558f48, UPSTREAMCTRLADOPTR2 (writer; хостовый бинарь контроллера — отдельное окно), INVITE502R2, PODCASTRESOLVE (3 коммита + миграция), regen migration-compatibility manifest 8d7a7727 + activation manifest d00b8f35. Откат = l113j 46393080. Ловушка сборки: чужой симлинк node_modules/node_modules в wt-l113d → prepare-standalone отказ → снят, chain-resume. Далее: prod quarantine dry-run/apply, батарея, l113l.
2026-09-08T19:30:25.650Z ·
Волна 2965, VERDICT=GO: единый runbook и один fail-closed код-путь для Stripe, Apple, Google и Telegram; для каждого из 15 ручных шагов есть машинная проверка, честно возвращающая НЕ-сделано на пустой конфигурации (ни одна проверка не зелёная по умолчанию). Фикс 60565b833. Ждёт посадки в l113x.
2026-09-08T19:30:32.181Z ·
Волна 2965, VERDICT=GO: единый runbook и один fail-closed код-путь для Stripe, Apple, Google и Telegram; для каждого из 15 ручных шагов есть машинная проверка, честно возвращающая НЕ-сделано на пустой конфигурации (ни одна проверка не зелёная по умолчанию). Фикс 60565b833. Ждёт посадки в l113x.
2026-09-10T18:55:03.801Z · coordinator
BOARD-WASH-20260910:WAVE-3340
По поручению владельца 18:43Z назначена исполнительская волна 3340 (external), Codex gpt-5.6-luna xhigh, M4. Полная история карточки и база l115c 1ad52e16b доставлены, brief-guard и проверка Git-базы пройдены. Задача: проверить существующую сдачу, устранить остатки, передать бандл и доказательства. Финальная приёмка и посадка остаются за координатором. Запуск группы подтверждён в журнале диспетчера.
КАРТА ДОКУМЕНТОВ: ноут /Users/annakorin/nc-ops-scripts/board-wash-20260910/3340-wash-external-brief.md; M4 /Users/milamarty/waves/inputs/board-wash-20260910/external-tickets.json; ожидаемый отчёт /Users/milamarty/waves/3340WASHEXTERNAL-REPORT.md. Правила обогащения: WEB-449.
2026-09-10T19:06:33.575Z · coordinator
WASH3340-RECEIVED:566
Получена и прочитана сдача 3340. GO относится только к объёму исполнителя. Бандл сохранён на ноуте и SHA256 проверен. Исправление d182e853a (два файла disclosure/тест) ещё НЕ принято координатором и НЕ посажено. Исторические внешние статусы ниже не перепроверены живьём.

owner cabinets: Stripe / Apple / Google / Telegram / DMCA follow-up

### Критерии

1. One fail-closed checker covers all 15 manual owner steps.
2. Empty or placeholder configuration is `not_done`, never green by default.
3. Provider API response or durable DB proof is required where the step needs it; secrets are not returned.
4. This source proof is separated from actual external cabinet completion and runtime deployment.

### Факты / коммит

Ticket created `2026-09-05T21:42:20.652Z`, status `review`. Its evolution records DMCA submission/payment, owner completion of Apple and Google dashboards, Stripe beta sandbox, OAuth POST/CSRF behavior, email transport findings and the invite 502 fix. The 08.09 wave 2965 record reports one fail-closed runbook/code path and 15 manual checks at historical fix `60565b833`, awaiting l113x.

Current BASE contains the equivalent source at `aa1e09155fefb4d7c45f957f3d4f8d67c884fbc2` (ancestor of this branch):

- `src/lib/ownerCabinets/readiness.ts` — provider/step definitions and fail-closed checker;
- `src/lib/ownerCabinets/__tests__/readiness.test.ts` — 4/4 focused tests;
- `src/app/api/admin/owner-cabinets/route.ts`;
- `scripts/check-owner-cabinets.ts`;
- `docs/operator/OWNER_CABINETS_WEB566.md`.

The tests prove empty config, invalid Stripe mode/placeholder, failed provider/DB proof and complete injected proof behavior. The Apple parse warning in the negative fixture is expected and does not make the suite fail. No external dashboard, secrets, production endpoint or live account was accessed.

### Остаток

Run the checker with coordinator-provided runtime configuration and provider/DB evidence, then owner performs the real cabinet/browser flows. Do not mark all 15 steps done from `aa1e09155` or the historical `60565b833` alone; ticket history itself says empty configuration must remain `not_done`.

### KNOWN ISSUES / ТРАБЛШУТИНГ

- Симптом: checker reports `not_done` despite source being present. Two-minute local check: `NODE_PATH=node_modules node --import tsx --test src/lib/ownerCabinets/__tests__/readiness.test.ts`; current result 4/4 pass and empty config remains fail-closed.
- Root: runtime provider credentials, provider API response and durable OAuth/DB proofs are external state. The checker’s root source is `src/lib/ownerCabinets/readiness.ts`; no source defect found in this wave.
- Treatment: coordinator supplies non-secret injected/runtime evidence and owner completes provider dashboards; preserve the checker’s fail-closed behavior. Do not hardcode or log credentials.

### ДЛЯ ТИКЕТА

Evolution: DMCA owner filing and payment on 05–06.09; Apple/Google cabinet updates; Stripe sandbox and email/provider findings; invite/share fail-closed fix `57b05296`; l113j/l113k deployment history; 08.09 wave 2965 historical delivery `60565b833` and review status. Source of record: ticket history and canon paths above. Current source paths: `src/lib/ownerCabinets/readiness.ts`, `src/lib/ownerCabinets/__tests__/readiness.test.ts`, `src/app/api/admin/owner-cabinets/route.ts`, `scripts/check-owner-cabinets.ts`, `docs/operator/OWNER_CABINETS_WEB566.md`. Historical external evidence/report paths are only those explicitly recorded in the ticket and are not treated as local runtime proof.
2026-09-12T22:17:55.099Z · coordinator
[12.09 22:17Z координатор] МОЙКА 12.09 (3566-wash-g1-infra): действия владельца почти готовы: DMCA-1079963 подано/оплачено, Apple и Google кабинеты сделаны, Stripe beta (sandbox) включён. Код-чекер кабинетов в дереве есть (ownerCabinets/readiness.ts). Остаток — решения владельца: Stripe live (KYC/IBAN/live-ключи) и email-провайдер/домен. Паркую до действий владельца.
Остаток: Stripe live: KYC/IBAN/юрлицо + live-ключи + live webhook secret (владелец).; Email-провайдер/домен отправителя (SPF/DKIM/DMARC) — решение владельца.; Прогнать чекер с runtime-конфигурацией и реальными доказательствами.
Отчёт: /Users/milamarty/waves/3566WASH*-REPORT.md (M4), копия nc-ops-scripts/shift-20260912-resume/wash-20260912/collected/. Проверка по исходнику прода l115g (9c8a9762).
Статус: in_progress → parked (по вердикту мойки PARK).
2026-09-13T08:53:35.454Z · coordinator
[13.09 08:53Z координатор] РАЗБОР 13.09 (волна 3637, DeepSeek): Здесь почти всё сделал сам хозяин: DMCA-агент оплачен, кабинеты Apple и Google заполнены, оплата в бета-режиме работает. Осталось два решения, которые может принять только хозяин: включить настоящий Stripe (нужен паспорт, банк и документы фирмы) и выбрать почту, чтобы письма доходили. Пока хозяин это не сделает, карточку можно отложить — поставить на парковку. Мелочи (досадить два файла и прогнать проверку) координатор сделает сам.
Остаток: (b) Stripe LIVE: KYC/IBAN/юрлицо в Dashboard + live-ключи + live webhook secret → файл на M1 (владелец).; (a) Переключение ключей Stripe sk_test→sk_live + контрольный прогон (координатор, после (б)).; (b) Email-провайдер/домен отправителя + SPF/DKIM/DMARC в Cloudflare DNS (владелец).; (b) Telegram BotFather domain (если login widget) — владелец.; (a) Посадить d182e853a (landing disclosure, ветка wash/3340-external) — координатор.; (a) Прогнать чекер кабинетов с runtime-конфигом и реальными доказательствами — координатор.
Предложение: Кабинеты владельца почти готовы: DMCA подано/оплачено, Apple и Google сделаны, Stripe beta (sandbox) включён, чекер в линии. Осталось: посадить d182e853a, прогнать чекер, а главное — решения владельца (Stripe live KYC + email-провайдер).
Материалы: shift-20260912-resume/colN/ (RESULT.md). Статус не меняю.
2026-09-13T11:01:35.861Z · coordinator
[13.09 11:01Z координатор] Мойка отложенных, волна 3668. Вердикт: ЖДЁТ-ВЛАДЕЛЬЦА. Кабинеты Apple/Google готовы, Stripe sandbox вкл; остался Stripe live KYC + email-домен.
2026-09-13T11:14:17.673Z · coordinator
[13.09 11:14Z координатор] Волна 3673. OWNER-ACTIONS: два пункта на единой странице владельца (3673-owner-actions-single-page-out/OWNER-ACTIONS.md) — общий с WEB-516 пункт №1 (Stripe Live) и дело №8 (доделать SPF-запись для sixbyy.com в Cloudflare Email Routing → Settings → Add missing records, иначе письма подтверждения продолжают теряться). DMCA-агент, кабинеты Apple/Google — уже закрыты, повторных действий не требуют.
2026-09-22T18:33:09.618Z · triage-m1
РЕШЕНИЕ=parked
ОСНОВАНИЕ=13.09.2026, волна 3668: «ЖДЁТ-ВЛАДЕЛЬЦА»; волна 2965 = GO для fail-closed checker, commit 60565b833, но live/runtime-доказательства и ticket-specific landing не подтверждены; текущий прод-якорь l115j/133fe00c не заменяет их.
ЧТО НУЖНО=Владелец решает Stripe LIVE KYC/IBAN/live-keys/webhook и email-провайдера/домена; координатор запускает checker с реальными доказательствами (и Telegram domain, если нужен); затем повторная приёмка.
triage-m1 4617
2026-09-22T19:13:06.628Z · coordinator
[22.09 19:13Z координатор] ## 4620 (A2, GO) — что осталось владельцу по кабинетам (по коду чекера, 15 проверок)

- Apple/Google/DMCA повторно нажимать не нужно (заявлены готовыми) — координатор проверит `apple-*`/`google-*` rows и DB proofs после посадки.
- Безусловные owner-actions сейчас = Stripe Live (4 шага, см. WEB-516, комментарий 4620) + email/DNS (SPF/DKIM/DMARC в Cloudflare).
- Условно (если в релизе Telegram login/messaging): BotFather token, webhook `/api/messenger/v1/telegram/webhook`, owner-chat link → `telegram-bot-identity`, `telegram-webhook`, `telegram-owner-link`.
- Итог: admin GET `/api/admin/owner-cabinets` → `ready=true` при 15/15 зелёных.
2026-09-23T12:50:52.172Z · triage-neo
РЕШЕНИЕ=parked
ОСНОВАНИЕ=2026-09-22, волна 4620 GO для owner-cabinets checker, но 15/15 runtime-доказательств не зелёные; текущая линия l115j/133fe00c не закрывает внешний остаток.
ЧТО НУЖНО=владелец: подтвердить Stripe LIVE и email-провайдера/домена; triage-neo 4713
2026-09-27T13:48:47.099Z · coordinator
[27.09 13:48Z координатор] ЗАКРЫТ по слову владельца 27.09 13:46Z («тикеты, которые упирались в личные кабинеты, можешь закрывать; Stripe и Amazon на закуску»).
Итог по пунктам: Apple и Google кабинеты — готовы (13.09); DMCA-1079963 — подан/оплачен; Telegram — вебхук на app.sixbyy.com; e-mail провайдер/домен — СДЕЛАНО 27.09: Resend, домен sixbyy.com Verified, EMAIL_FROM прода переведён с непроверенного wool2.online (Resend отвечал 403 «domain is not verified» — письма прода не уходили) на SIXBYY <notify@sixbyy.com>, бэкап .env.local.bak-sender-20260927T133908Z, контрольное письмо владельцу Delivered и получено.
Остаток Stripe Live (KYC/IBAN/live-ключи/вебхук) живёт в WEB-516 — отложено владельцем «на закуску». Amazon/Bedrock — WEB-214/WEB-187, тоже отложено.
Хвост без срочности: вебхук событий Resend не заведён — /api/email/webhook ждёт заголовок x-webhook-secret, Resend подписывает svix; нужна доработка кода, отдельной карточкой при необходимости.
Воркер
не проверен 3340-wash-external M4 движение в панели: неизвестно
Подключиться и смотреть/перехватить руками. Колесо мыши листает; клавишами — Ctrl-b затем [, выход из прокрутки q. Отсоединиться — Ctrl-b затем d:
Прочитать историю панели без подключения — листается и ищется (/ поиск, q выход), воркеру не помешает:
Обновлён
2026-09-27T13:48:48.362Z