WEB-625 · Задача · — · web
SEC-076 [CVSS N/A or UNKNOWN] Повтор OAuth callback дважды вызывает обмен одноразового code
Закрыт
P2
ведёт: —
эпик: WEB-515
Суть
# SEC-076 — Повтор OAuth callback дважды вызывает обмен одноразового code
## 1. Суть и условие дефекта
OAuth callback должен обменять одноразовый code ровно один раз; replay/foreign/expired — без второго обмена.
## 2. МЕХАНИКА
Четыре роута: `src/app/api/integrations/google/auth/route.ts:154-190`, `notion/auth/route.ts:136-184`, `dropbox/auth/route.ts:133-182`, `onedrive/auth/route.ts:132-180`. **Корень:** одноразовый code мог обмениваться дважды. Фикс `030161941` (repair 3351) — уникальный `OAuthExchangeAttempt`-мьютекс.
## 3. ЧТО СДЕЛАНО
1. **10.09** — триаж BACKLOG64 (база `49bc58dcc`): карточка заведена из отчёта R09; условие подтверждено, независимая приёмка 3327SEC076ACCEPTANCE-REPORT.md (a2) — NO-GO.
2. **10.09** — repair-волна 3351 написала фикс `030161941`; независимая source-приёмка 3371 — GO.
3. **10–11.09** — интеграция 3473 → 3488 (все 26 кандидатов, HEAD `d95fd864`, 201/201 миграций, P19 negative blocksStartup).
4. **12.09** — посадки на прод: l115f-r2 (18:02Z, source `92f7ae807`, artifact `1353e969b`) → l115g (`9c8a9762`) → l115h (`f0777c4d`, 23:47Z).
5. **13.09** — l115i (`6aac3421`, 06:37Z); получено живое доказательство (см. ниже) → карточка переведена в done. Эпик WEB-515 закрыт.
6. **13.09** — закрыто харнессом (не живым гейтом на проде): волна 3626 — изолированный стенд с артефактом прода l115i + одноразовые фикстуры (без реального OAuth-провайдера)
## 4. ЧЕМ ДОКАЗАНО ЖИВЬЁМ
Волна 3626 (13.09): `tests/security/sec076-actual-routes.test.ts` гоняет все 4 настоящих OAuth-callback роута против настоящей одноразовой PG (fetch/getToken — единственные фальшивки): два конкурентных identical-code callback — ровно один 200, второй 409, ноль двойных provider-обменов; provider-failure (400) всё равно оставляет code one-time-claimed (retry → 409). Найден и починен drift тестовой фикстуры (фальшивый Google token без granted Drive scope → 403 до обмена). Evidence: `/home/ubuntu/waves/3626SECURITYLASTSIX-evidence/SEC-076.log`.
## 5. КАРТА ДОКУМЕНТОВ
- Repair-волна: A2 `/home/ubuntu/waves/3351REPAIRTOKENS-REPORT.md`
- Независимая source-приёмка: `/Users/limamarty/waves/3371INDEPENDENTTOKENS-REPORT.md`
- Приёмка условия (триаж): `/Users/annakorin/nc-ops-scripts/run-l115b-luna/acceptance-results/a2/3327SEC076ACCEPTANCE-REPORT.md`
- Харнесс-отчёт: волна 3626 — изолированный стенд с артефактом прода l115i + одноразовые фикстуры (без реального OAuth-провайдера)
- Отчёт 3626: `/home/ubuntu/waves/3626SECURITYLASTSIX-REPORT.md` (A2) = `/Users/milamarty/waves/inputs/3639/3626SECURITYLASTSIX-REPORT.md` (M4).
- Evidence 3626: `/home/ubuntu/waves/3626SECURITYLASTSIX-evidence/` (SHA256SUMS).
- Живая матрица гейтов: `/home/ubuntu/sec-checks-3592/out/matrix.txt` (A2) = `/Users/milamarty/waves/inputs/3639/matrix-l115i.txt` (M4).
- Карта закрытия эпика: `WEB515-CLOSING-MAP.md` — `/Users/milamarty/waves/inputs/3639/WEB515-CLOSING-MAP.md` (M4) и `nc-ops-scripts/shift-20260912-resume/3604/collected/out/WEB515-CLOSING-MAP.md` (Intel).
- Канон: `/Users/milamarty/waves/inputs/3639/canon449.json` (WEB-449).
- Исходник R09 (мастер-разбор): `/Users/poolpooly/audit/inbox/2813-BLOCK24-PROVIDER-SPEND-WIRING-REPORT.md` (SHA `26816992…`).
- Все 28 карточек: `/Users/milamarty/waves/inputs/3639/sec28.json`.
## 6. ОСТАТОК
нет (найденный drift был тестовым, не прод-кодом)
## 7. КАК ПЕРЕПРОВЕРИТЬ
```
NODE_PATH=node_modules node --experimental-test-module-mocks --import tsx --test \
tests/security/sec076-actual-routes.test.ts # реальный PG, фальшивый OAuth env
```
## История (триаж 10.09)
Правила обогащения: WEB-449. Parent WEB-515. BACKLOG64-TRIAGE-20260910. Дата UTC: 2026-09-10T17:07:52.835164+00:00.
## ДЛЯ ТИКЕТА — SEC-076
**Условие:** Повтор OAuth callback дважды вызывает обмен одноразового code.
**Состояние:** подтверждено в изученных стендовых свидетельствах воркера на указанной базе; независимая приёмка на Нео ещё не выполнена. Это не объявление дефекта живого l115a. Исходный NO-GO относится к полному scope и может одновременно содержать незавершённые группы.
**Исследованные байты:** `5701c436097e10240a2b8cdd5d87a786b1014def`. Базовая ветка — указанная в исходном отчёте; рабочее дерево lead `/Users/poolpooly/audit/nc` не используется вместо этой версии. **Файл:строка:** src/app/api/integrations/google/auth/route.ts:154-190; src/app/api/integrations/notion/auth/route.ts:136-184; src/app/api/integrations/dropbox/auth/route.ts:133-182; src/app/api/integrations/onedrive/auth/route.ts:132-180.
**Доказательство и controls:** Actualfourroutes с sameflowcookie,до responsecookieapply: exchangeAttempts2 вместо 1 каждый. Resultclaim/generation/PGCAS и ChromiumbridgepositivePASS.
**CVSS 3.1:** UNKNOWN — числовой вектор не установлен.
CVSS3.1 UNKNOWN: duplicateproviderexchange иполомканормальногоподключениядоказаны; CIA/actorcapability/reachability для severity нерасширятьдомыслами.
Числа пересчитаны по FIRST CVSS3.1, а не скопированы из заголовков: https://www.first.org/cvss/v3.1/specification-document#7-1-Base-Metrics-Equations . При неполных предпосылках оценка не становится окончательной. N/A/UNKNOWN не означает Low или нулевой риск.
**Предложение исправления:** Serverowneddurableone-timeexchangeattempt до provider; repeated/inflightcallback безповторного exchange,ownedgenerationpersist сохранить.
**Сданные изменения:** Не представлен в этом возврате.
**Связи/дедупликация:** WEB-542, WEB-573 Старые условия SEC-001…048 не регистрируются заново. Эта карточка описывает отдельное условие, а не повтор счёта того же отчёта.
## KNOWN ISSUES / ТРАБЛШУТИНГ
Симптом → Повтор OAuth callback дважды вызывает обмен одноразового code.
Проверка → воспроизвести указанный actual-module/PG fixture с положительным разрешённым контролем; сверить SHA исходников и хеши артефактов. Мок транспорта допустим, мок самой проверяемой проверки — нет. Report file получен и хеширован лидом; исходные raw artifacts вне inbox ещё не объявляются независимо проверенными.
Причина → src/app/api/integrations/google/auth/route.ts:154-190; src/app/api/integrations/notion/auth/route.ts:136-184; src/app/api/integrations/dropbox/auth/route.ts:133-182; src/app/api/integrations/onedrive/auth/route.ts:132-180.
Лечение/статус → Serverowneddurableone-timeexchangeattempt до provider; repeated/inflightcallback безповторного exchange,ownedgenerationpersist сохранить. Приёмка/актуальность l115a пока pending. Если условие уже устранено позднейшим коммитом, зафиксировать точный fix→release mapping и принять существующий результат; повторный фикс не нужен.
## Три группы приёмки на Нео
1. **Байты и достижимость:** сравнить исследованную базу с переданным current candidate, проверить реальный entrypoint/инициализацию/feature flag и не подменять его вызовом недостижимого helper. Отдельно актуализировать policy/grants там, где это предпосылка.
2. **Поведение:** тот же безвредный red fixture на базе; нормальный positive control; после исправления — требуемый отказ/результат до side effect, повтор/конкурентный/отложенный вариант, точные счётчики. Для durable эффектов — одноразовый PostgreSQL, не только in-memory adapter.
3. **Независимость и сдача:** reviewer на Нео, не OpenAI; сверка diff/тестов/изменённых путей, bundle+SHA256, report с GO/NO-GO и отдельными UNKNOWN. Live/prod/host действия — только отдельная работа координатора. Не заявлять landing по наличию commit.
## Карта документов
- R64: /Users/poolpooly/audit/inbox/b40-05-B40-05-REPORT.md — SHA256 `17a4c2ec560481a14c5eb939d93f81f0282b78c13f1aebe6f784c15efa44ff80`
- Мастер-разбор: /Users/poolpooly/audit/outbox/BACKLOG64-TRIAGE-20260910.md
- Данные: /Users/poolpooly/audit/evidence/backlog64-20260910/findings28.json
SEC-INDEPENDENT-DISPATCH:3371
2026-09-10: Repair 3351 получен: 030161941d7584b00fd9b8a38fc628ce84d4cf70. Report/bundle сохранены, SHA256 5b98ecb3c046a2c1acecd0abd5e346742dc8acd841e7a74d07303db82523fc03 совпал. Независимая 3371 на NEO передана с проверенными inputs и exact candidate; живая сессия подтверждена 20:25Z. Требуются реальные PG races actual handlers, cross-process legacy persistence, OAuth binding, непустая старая схема и P19 manifest. Авторский scoped tsc не завершён: UNKNOWN. Миграция 20260910100000_web3351_repair_one_time_tokens на проде не применена. Ожидаемый отчёт /Users/limamarty/waves/3371INDEPENDENTTOKENS-REPORT.md. Приёмки и посадки пока нет.
DISPATCH-20260910-3391
На 2026-09-10T21:38:23.260126+00:00: active; A2, волна 3391 tokens-manifest-rework. Exact BASE 0cd045dcaf80c6f29afb1aa596dac3994d6aa8f6. Бриф прошёл brief-guard; входы SHA256 и наличие BASE проверены до постановки. Входы /home/ubuntu/waves/inputs/3391-tokens-manifest-rework. Отчёт ожидается /home/ubuntu/waves/3391TOKENSMANIFESTREWORK-REPORT.md. Живой процесс модели подтверждён; возраст журнала 3 с. Source/подготовка и независимая проверка — в объёме брифа; это не посадка, не live/capacity GO и не окончательное закрытие security.
CODEX-RESUMED-M4-20260910-3426
2026-09-10T22:01:27.591835+00:00: M4, волна 3426, Codex gpt-5.6-terra, active. Дочерний процесс модели подтверждён; журнал обновлялся 2 с назад. Exact BASE 52fed6bd21b2d3960ced7d48a75ef49e52f6857c; входы /Users/milamarty/waves/inputs/3426-acc-token-manifest; guard, SHA256 и bundle проверены до постановки. Нового verdict или посадки этим запуском нет.
REFILL-2221-RESULTS-WEB-625
Снимок 2026-09-10T22:27:17.204978+00:00
3426: GO только для P19 manifest repair и provenance; OAuth proof raw3371 применим по равенству Git blobs. Article28 закрыт; route typecheck UNKNOWN; release/live pending.
Новой посадки этим тиком нет. Evidence: nc-ops-scripts/refill-20260910-2221/.
REFILL3472:WEB-625
2026-09-10T23:16:44.018057+00:00
Волна 3465 a2nc active; token-typegraph-repair; BASE 52fed6bd21b2d3960ced7d48a75ef49e52f6857c
Эволюция: предыдущая партия сдана; обнаруженные отказы CAP12/CAP07/CAP11 и route typecheck переданы в исправление3462–3465. Новые transport/auth/stop/node-plan части переданы на независимую проверку3466–3469. WEB593 и QA-изменения Drive проверяются3470/3471. M1 сверяет локальную топологию3472. Брифы и входные SHA проверены. Source GO не означает посадку.
Документы: /Users/annakorin/nc-ops-scripts/SHIFT-GOAL-20260911-8H.md; /Users/annakorin/nc-ops-scripts/enterprise2-20260910/ENTERPRISE-2.md. Доказательства: /Users/annakorin/nc-ops-scripts/refill-20260911-0015/live.json и каталоги a2nc/m4/neo с receipt и полными входами. Ссылки: https://bugs.wool2.online/web
CHECKPOINT3478:WEB-625 2026-09-10T23:30:08.650195+00:00
3465 завершена: report/bundle SHA проверены; авторский HEAD 530b384173536226ff6c01ce2888aa429ba4d911, дерево чистое, bundle verify PASS. Faithful 8-root graph по raw report: 933 project files, 0 diagnostics при 4096MiB; final exit=0 прочитан. При 2048MiB OOM134. Raw focused tests: 28/28, 0 failed/skipped; 7 изменённых файлов. Независимая проверка и security/release остаются впереди; 3479 доставлена на A2 с guard, SHA256 входов и exact BASE; запуск wq-acc-typegraph-repair-final подтверждён.
Полные отчёты и проверки SHA: /Users/annakorin/nc-ops-scripts/checkpoint-3478/snapshot.json; задания и SHA inputs: refill-20260911-0015,0025,0028,0030. Спецификация: /Users/annakorin/nc-ops-scripts/enterprise2-20260910/ENTERPRISE-2.md; цель: SHIFT-GOAL-20260911-8H.md.
## HANDOFF-20260912T1721:WEB-625 — точка входа для нового агента
Правила обогащения: [[WEB-449]]. Наблюдение: 12.09.2026 18:21:36 Europe/Dublin / 17:21:36 UTC. Автор: координатор. История выше сохранена; эту запись читать как текущий handoff на указанное время.
**Задача.** SEC-076 [CVSS N/A or UNKNOWN] Повтор OAuth callback дважды вызывает обмен одноразового code
**Что подтверждено и что остаётся.** 3521 дал bounded source/isolated-PG GO при общем NO-GO;3525 закрыл узкий SOURCE_PG_HANDOFF и CHARGE_COMPLETENESS, сохранив RELEASE_RUNTIME=OPEN. Итог на реальном релизе для этой карточки не подтверждён. 3530 отдельно проверила merged OAuth fixture11/11+2/2, skips0.
**Как устроено / почему остановилось.** OAuth callback: четыре synthetic providers и реальный callback wiring выполняют code exchange однократно; foreign/expired/stale/replay/crash отказы. Мerged fixture3530 прошла11/11+2/2, но live callback/provider gate ещё нужен.
**Следующая операция.** Общий переход релиза выполнять по [[WEB-515]]. Индивидуальный gate этой карточки: OAuth callback: четыре synthetic providers и реальный callback wiring выполняют code exchange однократно; foreign/expired/stale/replay/crash отказы. Мerged fixture3530 прошла11/11+2/2, но live callback/provider gate ещё нужен. Зафиксировать exact deployed artifact, positive/negative, raw commands, exits и skips. Непройденный runtime gate не заменять повтором прежнего source suite.
**Исполнитель и приёмка.** Координатор даёт установленный artifact и исполняет хостовые операции; независимый security-приёмщик проверяет gate. Назначение не считать запущенным процессом.
**Условие закрытия.** Доказанный результат именно этой finding на установленной версии и соответствующий независимый вердикт; review остаётся до этого.
**КАРТА ДОКУМЕНТОВ**
- Intel: /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/3521/3521ACCSECURITY26REPAIRED-REPORT.md
- Intel: /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/3525/3525SECURITYHANDOFFGATES-REPORT.md
- Intel: /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/3525/3525SECURITYHANDOFFGATES-evidence/GATES.md
- Intel: /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/3530/3530ACCSECURITYGOOGLEFIXTURE-REPORT.md
- Intel: /Users/annakorin/nc-ops-scripts/release-l115f/r2/l115f-artifact.json
- Intel: /Users/annakorin/nc-ops-scripts/release-l115f/handoff-tickets/live-observation.json
**Релизная зависимость:** [[WEB-515]] — r2 staged/signed, compat BUILDING; prod l115e на времени наблюдения. Не путать SEC registry с количеством сегментов аудита.
SHIFT-STOP-20260912:R2:WEB-625
ТЕКУЩИЙ СРЕЗ ПЕРЕД ОСТАНОВКОЙ — WEB-625 / SEC-076
Задача: SEC-076 [CVSS N/A or UNKNOWN] Повтор OAuth callback дважды вызывает обмен одноразового code
Пакет l115f-r2 установлен на прод 2026-09-12T18:02:33.922654Z.
SOURCE=92f7ae807869bbaa8ae7ef6ca2ea622675e31af9
ARTIFACT_SHA256=1353e969b2a7a1a31ac702be361913c41cb53c104db49938a02f5fcd07766668
Runtime 18:15:34 UTC: оба backend ready=true, paidReady=true/enforce_ready; web A/B, indexing и extraction указывают на новый release; старых процессов 0. Таймеры indexing/extraction active.
Сборка, подпись с tamper-negative, совместимый rollback, dryrun и flip выполнены. Редактор: приложение HTTP200, список 58 документов, один документ открыт, новых ошибок после клика 0; при загрузке были две прерванные prefetch-загрузки и admin/agents403. Это не полная browser/security приёмка.
Один платный synthetic chat: HTTP200; operation terminal/succeeded, event APPLIED, 5/5 обязательных receipts нового identity. BILLING_PARITY=NO-GO: в ответе $0.000637, в LedgerEntry списано $0.039476, разница $0.038839, SETTLED_MAX/usage_untrusted. HTTP200 и paidReady не доказывают корректность суммы или ответа.
Владелец 18:13:55 UTC поручил сохранить готовое, обогатить тикеты, написать хендофф и остановить смену. Новые волны, сборки, paid requests, load/soak и security-вердикты не запускаются. Эпик остаётся открыт.
Откат после появления candidate receipts — только arm64-l115e-compat-20260912T172738Z, SHA ef4b7c2a6e8bcda45fc361f979076f43d37f4caf1256bcbbccf2188b2e2d092d. Plain l115e несовместим с новой identity; исторические receipts не переписывать.
ПРИЁМКА ЭТОЙ НАХОДКИ
ALL26 criterion: SEC-076; WEB-625; source=GREEN; PG=GREEN executed. Evidence: Same 10/10: all four synthetic providers claim once, foreign/expired/stale/replay/crash controls. Оставшиеся gates при handoff: P, F, live provider. 3530 устранила только QA-fixture mismatch3528: product/config/schema byte parity с92f7ae807; fresh PG201, cross-process11/11, shortcut2/2, skips0, scope/foreign/replay/crash negatives. Исторический NO-GO3528 не стёрт.
ТОЧНЫЙ ОСТАТОК / СЛЕДУЮЩИЙ ИСПОЛНИТЕЛЬ
Проверить live OAuth callback/replay/foreign/expired и provider exchange count. QA scope-negative/one-exchange уже проверены в 3530, новые product changes не нужны.
Координатор собирает runtime receipts; независимый security-приёмщик не на OpenAI выдаёт scoped verdict. Сейчас никто не назначается на новую волну. Review сохраняется: факт установки не превращает OPEN в PASS.
КАРТА ДОКУМЕНТОВ
Intel: /Users/annakorin/nc-ops-scripts/release-l115f/r2/{l115f-artifact.json,signature-receipt.json,runtime-stop-verified.log,editor-postqa-rerun.log,paid-probe-accounting-receipt.json,paid-probe-failure-detail.json}.
Source/QA: /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/3521/3521ACCSECURITY26REPAIRED-REPORT.md; 3525/3525SECURITYHANDOFFGATES-evidence/GATES.md; 3530/3530ACCSECURITYGOOGLEFIXTURE-REPORT.md.
Merge: /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/3526/3526INTEGRATESECURITYRELEASE-evidence/merge-manifest.json.
Transition: /Users/annakorin/nc-ops-scripts/release-l115f/{3534-collected,3536-collected,compat}.
Billing finding: [[WEB-650]].
Доказательства
ACCEPTANCE-3300-3327:3327SEC076ACCEPTANCE-REPORT.md:6105ecb5c25dd8b69976cccd421c91aeced32cdd2d16250c4cc89004f43717ea
/Users/annakorin/nc-ops-scripts/run-l115b-luna/acceptance-results/a2/3327SEC076ACCEPTANCE-REPORT.md
SHA256 6105ecb5c25dd8b69976cccd421c91aeced32cdd2d16250c4cc89004f43717ea
SEC-REPAIR-DISPATCH:3351:WEB-625
/home/ubuntu/waves/3351REPAIRTOKENS-REPORT.md
SEC-INDEPENDENT-DISPATCH:3371
2026-09-10: Repair 3351 получен: 030161941d7584b00fd9b8a38fc628ce84d4cf70. Report/bundle сохранены, SHA256 5b98ecb3c046a2c1acecd0abd5e346742dc8acd841e7a74d07303db82523fc03 совпал. Независимая 3371 на NEO передана с проверенными inputs и exact candidate; живая сессия подтверждена 20:25Z. Требуются реальные PG races actual handlers, cross-process legacy persistence, OAuth binding, непустая старая схема и P19 manifest. Авторский scoped tsc не завершён: UNKNOWN. Миграция 20260910100000_web3351_repair_one_time_tokens на проде не применена. Ожидаемый отчёт /Users/limamarty/waves/3371INDEPENDENTTOKENS-REPORT.md. Приёмки и посадки пока нет.
DISPATCH-20260910-3391
На 2026-09-10T21:38:23.260126+00:00: active; A2, волна 3391 tokens-manifest-rework. Exact BASE 0cd045dcaf80c6f29afb1aa596dac3994d6aa8f6. Бриф прошёл brief-guard; входы SHA256 и наличие BASE проверены до постановки. Входы /home/ubuntu/waves/inputs/3391-tokens-manifest-rework. Отчёт ожидается /home/ubuntu/waves/3391TOKENSMANIFESTREWORK-REPORT.md. Живой процесс модели подтверждён; возраст журнала 3 с. Source/подготовка и независимая проверка — в объёме брифа; это не посадка, не live/capacity GO и не окончательное закрытие security.
CODEX-RESUMED-M4-20260910-3426
2026-09-10T22:01:27.591835+00:00: M4, волна 3426, Codex gpt-5.6-terra, active. Дочерний процесс модели подтверждён; журнал обновлялся 2 с назад. Exact BASE 52fed6bd21b2d3960ced7d48a75ef49e52f6857c; входы /Users/milamarty/waves/inputs/3426-acc-token-manifest; guard, SHA256 и bundle проверены до постановки. Нового verdict или посадки этим запуском нет.
REFILL-2221-RESULTS-WEB-625
Снимок 2026-09-10T22:27:17.204978+00:00
3426: GO только для P19 manifest repair и provenance; OAuth proof raw3371 применим по равенству Git blobs. Article28 закрыт; route typecheck UNKNOWN; release/live pending.
Новой посадки этим тиком нет. Evidence: nc-ops-scripts/refill-20260910-2221/.
THREAD-STATUS-2240 3426 manifest/provenance GO; общий незакрытый route typecheck проверяет3460 на A2. SEC076/WEB625 вне исходных26.
REFILL3472:WEB-625
2026-09-10T23:16:44.018057+00:00
Волна 3465 a2nc active; token-typegraph-repair; BASE 52fed6bd21b2d3960ced7d48a75ef49e52f6857c
Эволюция: предыдущая партия сдана; обнаруженные отказы CAP12/CAP07/CAP11 и route typecheck переданы в исправление3462–3465. Новые transport/auth/stop/node-plan части переданы на независимую проверку3466–3469. WEB593 и QA-изменения Drive проверяются3470/3471. M1 сверяет локальную топологию3472. Брифы и входные SHA проверены. Source GO не означает посадку.
Документы: /Users/annakorin/nc-ops-scripts/SHIFT-GOAL-20260911-8H.md; /Users/annakorin/nc-ops-scripts/enterprise2-20260910/ENTERPRISE-2.md. Доказательства: /Users/annakorin/nc-ops-scripts/refill-20260911-0015/live.json и каталоги a2nc/m4/neo с receipt и полными входами. Ссылки: https://bugs.wool2.online/web
CHECKPOINT3478:WEB-625 2026-09-10T23:30:08.650195+00:00
3465 завершена: report/bundle SHA проверены; авторский HEAD 530b384173536226ff6c01ce2888aa429ba4d911, дерево чистое, bundle verify PASS. Faithful 8-root graph по raw report: 933 project files, 0 diagnostics при 4096MiB; final exit=0 прочитан. При 2048MiB OOM134. Raw focused tests: 28/28, 0 failed/skipped; 7 изменённых файлов. Независимая проверка и security/release остаются впереди; 3479 доставлена на A2 с guard, SHA256 входов и exact BASE; запуск wq-acc-typegraph-repair-final подтверждён.
Полные отчёты и проверки SHA: /Users/annakorin/nc-ops-scripts/checkpoint-3478/snapshot.json; задания и SHA inputs: refill-20260911-0015,0025,0028,0030. Спецификация: /Users/annakorin/nc-ops-scripts/enterprise2-20260910/ENTERPRISE-2.md; цель: SHIFT-GOAL-20260911-8H.md.
CHECKPOINT3484LIMIT:WEB-625 2026-09-10T23:52:07.659549+00:00
3479 narrow independent source/config GO: HEAD 3e1554156bddc28e4e84be5715cac3117814ff40; bundle SHA f4cf38ae21d04474ae70ba2359e7d11d5f165ad4fad3926c6b71c4b77ff6530e verified. 28 inherited +4 own +11 component tests passed; faithful8-root graph928 files, zero diagnostics at4096MiB; scoped lint0 errors. Product unchanged by QA. Это не security/PG/live acceptance; включение в общий кандидат ещё pending. Evidence: checkpoint-3484/3479-receipt.json и полный REPORT.md.
CHECKPOINT3488:WEB-625 2026-09-11T00:15:51.647210+00:00
Пять новых сдач проверены координатором: bundle verify, SHA256 и exact HEAD. 3427 сдала ingest cf64ed4074c8349c12ed10a3725797ec2c65ff75; source PG 23/23, component 33+3+20; ESLint UNKNOWN timeout, финальная security/live приёмка не выполнена. 3488 реально запущена на A1: объединяет 3473 (22 критерия), 3479 (tokens/types), 3427 (ingest), охватывая входы всех исходных26. Итогового merge verdict ещё нет. Security acceptance3484 остаётся BLOCKED_PROVIDER_LIMIT до12.09 16:00UTC; кошелёк не менялся. Новых посадок нет. Evidence: checkpoint-3488/snapshot.json; security-integration-3488/{3488-receipt.json,inputs/manifest.json}; полный3427 report.
CHECKPOINT3492:WEB-625 2026-09-11T00:32:55.179360+00:00
3488 завершила source integration: d95fd864292c2763e8125de62a08e8fd8c181cde. Все 26 строк матрицы и исходные 14 веток сохранены; 201/201 миграций, P19 negative blocksStartup, 123 activation rows сохранены. SHA256 d3bd60ef387de0cb79342522be849d9023365f96e33d69c866b3ab2598aa8e7d, exact HEAD/clean/bundle проверены и скопированы. Это не независимая security/PG/runtime приёмка. 3484 BLOCKED_PROVIDER_LIMIT до 2026-09-12 16:00 UTC; новых посадок нет. Evidence: checkpoint-3491/snapshot.json, полный 3488 REPORT и бандл; A1 3488SECURITYINTEGRATIONFINAL-evidence.
TICK-3528-BF-20260912:WEB-625
Точечный merge gate3528: candidate Google correctly refuses synthetic grant without Drive scope (403 vs expected200). Patched QA positive now drive.file; added missing/profile-only/lookalike Drive scope negatives; исходный [200,409], providerAttempts1, replay/foreign/expiry/crash checks сохранены. Product src/app/api/integrations/google/auth/route.ts не изменён. Авторская новая проверка11/11+2/2, skips0, PG остановлена. Независимая3530 на A1 RUNNING; её вердикта ещё нет. Исходник продукта для сборки92f7ae8 не менялся.
RESULT-3530-R8C-20260912:WEB-625
3530 QA_FIXTURE_ACCEPTANCE=GO received: exact HEAD ea6e48a8d9294d4556c33e785570fd4ce5034cd7, 48 original files hashes verified. Raw cross-process11/11 + Google shortcut2/2, skips0, freshPG201, product parity and cleanup confirmed. No product-source changes. Original report checksum typo preserved (last digit2); actual bundle/sidecar last digit0, full SHA in3530-collection-review.json and COORDINATOR-CHECKSUM-ERRATUM.md. Historical3528 NO-GO preserved. This is collected independent fixture acceptance, not new coordinator security certification or runtime release closure.
HANDOFF-20260912T1721:WEB-625 — автономный handoff добавлен в body: причина, механизм, подтверждённое/OPEN, следующая операция, ответственный, критерий закрытия и карта документов. Срез фактов 2026-09-12T17:21:36.454887+00:00. Исторические отказы и статусы сохранены. Полный аудит записи: Intel /Users/annakorin/nc-ops-scripts/release-l115f/handoff-tickets/.
SHIFT-STOP-20260912:R2:WEB-625
Installed source92f7ae807 / artifact1353e969; runtime-stop-verified.log; billing parity NO-GO [[WEB-650]]; per-finding remaining gates in body.
Замечен в сборке
l115f-r2 / 92f7ae807
Лента
2026-09-10T17:07:55.365Z · astra-securityBACKLOG64-TRIAGE-20260910-SEC-076 — 2026-09-10T17:07:55.365182+00:00 / IST=2026-09-10T22:37:55.365192+05:30
Новая карточка по возвратам R64.
Actualfourroutes с sameflowcookie,до responsecookieapply: exchangeAttempts2 вместо 1 каждый. Resultclaim/generation/PGCAS и ChromiumbridgepositivePASS.
База 5701c436097e10240a2b8cdd5d87a786b1014def; CVSS3.1 UNKNOWN — числовой вектор не установлен. Приёмка Нео и current mapping pending. Предложение: Serverowneddurableone-timeexchangeattempt до provider; repeated/inflightcallback безповторного exchange,ownedgenerationpersist сохранить.
Исходные отчёты:
- R64: /Users/poolpooly/audit/inbox/b40-05-B40-05-REPORT.md — SHA256 `17a4c2ec560481a14c5eb939d93f81f0282b78c13f1aebe6f784c15efa44ff80`
2026-09-10T17:43:11.088Z · coordinator[2026-09-10T17:43:11.002Z] Маршрут изменён по прямому указанию владельца: 3327-sec076-acceptance-brief.md → Codex gpt-5.6-luna xhigh, A2. Предыдущий Claude-запуск завершился по weekly limit без отчёта; его бриф и лог сохранены. Повторно поставлен тот же номер волны. База current l115a и три исторических SHA проверены на хосте. Доставлены исходные отчёты с manifest SHA256; raw artifacts и effective host inputs не объявляются полностью полученными. Критерии независимости и доказательств сохранены. Постановка в очередь не является положительной приёмкой или посадкой.
2026-09-10T18:39:13.517Z · coordinatorACCEPTANCE-3300-3327:3327SEC076ACCEPTANCE-REPORT.md:6105ecb5c25dd8b69976cccd421c91aeced32cdd2d16250c4cc89004f43717ea
Независимый отчёт получен координатором. Проверенная база l115a 8d598d69a663cfa8977816d96bb20303e9a9650c; это не повторная проверка l115c.
GO/REFUTED относится только к недостижимости при проверенной закрытой политике. При разрешённом контроле двойной обмен воспроизведён. Карточка НЕ закрыта как исправленная; до открытия политики требуется исправление.
SEC-076 was originally reported from investigated bytes `5701c436097e10240a2b8cdd5d87a786b1014def`: a repeated OAuth callback could perform a second one-time-code exchange before response-cookie cleanup in Google, Notion, Dropbox, and OneDrive. Downstream durable generation/CAS and result isolation are separate controls; they do not claim the provider exchange.
On independent A2 review of current candidate `8d598d69a663cfa8977816d96bb20303e9a9650c`, the four relevant route files and helper files are unchanged from the investigated bytes. The actual route entrypoints were loaded with their real policy guard and the four connector toggles enabled. The current Article 28 register has no complete confirmation for these provider paths, so every actual callback is refused with HTTP 403 before provider contact. The current reachable condition is therefore `REFUTED`, and the acceptance verdict is `GO` for this candidate/policy state. This is not an announcement that l115a is live or fixed.
For transparency, an independent allowed-control using the actual route modules and inert synthetic transports reproduced the latent body behavior in both trees: same-flow concurrent callbacks produced exactly two exchange attempts per provider; a normal callback produced one; a stale generation produced zero and HTTP 409. This conditional result preserves the original remediation requirement: a server-owned durable one-time exchange attempt must be claimed before provider contact before any policy grant/opening. No product fix was made, no fix→release mapping exists, and no bundle is required.
WEB-542 and WEB-573 were used only as related control coverage; their findings were not re-counted. SEC-001…048 were not reopened. CVSS remains `UNKNOWN` under the supplied constraints. Current production/release applicability remains pending a separate coordinator-supplied snapshot and receipt.
2026-09-10T19:23:44.389Z · coordinatorSEC-REPAIR-DISPATCH:3351:WEB-625
Назначено исправление: волна 3351 repair-tokens, A2, Codex gpt-5.6-luna xhigh. Это разработка исправления; отдельная приёмка и посадка ещё впереди. База l115c 1ad52e16b. Входы доставлены и проверены по SHA256: /home/ubuntu/waves/inputs/security-repairs-20260910/tokens.
Бриф: /home/ubuntu/waves/queue/3351-repair-tokens-brief.md
Отчёт: /home/ubuntu/waves/3351REPAIRTOKENS-REPORT.md
Предыдущие результаты сохранены; 5 отсутствующих исторических кандидатов ищет координатор. Исполнитель обязан сначала проверить доступный кандидат; при отсутствии исправлять воспроизводимый дефект текущей базы и явно назвать новую реализацию.
Состояние на проверке: active.
2026-09-10T20:27:13.993Z · coordinatorSEC-INDEPENDENT-DISPATCH:3371
2026-09-10: Repair 3351 получен: 030161941d7584b00fd9b8a38fc628ce84d4cf70. Report/bundle сохранены, SHA256 5b98ecb3c046a2c1acecd0abd5e346742dc8acd841e7a74d07303db82523fc03 совпал. Независимая 3371 на NEO передана с проверенными inputs и exact candidate; живая сессия подтверждена 20:25Z. Требуются реальные PG races actual handlers, cross-process legacy persistence, OAuth binding, непустая старая схема и P19 manifest. Авторский scoped tsc не завершён: UNKNOWN. Миграция 20260910100000_web3351_repair_one_time_tokens на проде не применена. Ожидаемый отчёт /Users/limamarty/waves/3371INDEPENDENTTOKENS-REPORT.md. Приёмки и посадки пока нет.
2026-09-10T21:39:01.168Z · coordinatorDISPATCH-20260910-3391
На 2026-09-10T21:38:23.260126+00:00: active; A2, волна 3391 tokens-manifest-rework. Exact BASE 0cd045dcaf80c6f29afb1aa596dac3994d6aa8f6. Бриф прошёл brief-guard; входы SHA256 и наличие BASE проверены до постановки. Входы /home/ubuntu/waves/inputs/3391-tokens-manifest-rework. Отчёт ожидается /home/ubuntu/waves/3391TOKENSMANIFESTREWORK-REPORT.md. Живой процесс модели подтверждён; возраст журнала 3 с. Source/подготовка и независимая проверка — в объёме брифа; это не посадка, не live/capacity GO и не окончательное закрытие security.
2026-09-10T22:02:11.167Z · coordinatorCODEX-RESUMED-M4-20260910-3426
2026-09-10T22:01:27.591835+00:00: M4, волна 3426, Codex gpt-5.6-terra, active. Дочерний процесс модели подтверждён; журнал обновлялся 2 с назад. Exact BASE 52fed6bd21b2d3960ced7d48a75ef49e52f6857c; входы /Users/milamarty/waves/inputs/3426-acc-token-manifest; guard, SHA256 и bundle проверены до постановки. Нового verdict или посадки этим запуском нет.
2026-09-10T22:27:17.896Z · coordinatorREFILL-2221-RESULTS-WEB-625
Снимок 2026-09-10T22:27:17.204978+00:00
3426: GO только для P19 manifest repair и provenance; OAuth proof raw3371 применим по равенству Git blobs. Article28 закрыт; route typecheck UNKNOWN; release/live pending.
Новой посадки этим тиком нет. Evidence: nc-ops-scripts/refill-20260910-2221/.
2026-09-10T22:53:37.920Z · coordinatorTHREAD-STATUS-2240 3426 manifest/provenance GO; общий незакрытый route typecheck проверяет3460 на A2. SEC076/WEB625 вне исходных26.
2026-09-10T23:18:14.055Z · coordinatorREFILL3472:WEB-625
2026-09-10T23:16:44.018057+00:00
Волна 3465 a2nc active; token-typegraph-repair; BASE 52fed6bd21b2d3960ced7d48a75ef49e52f6857c
Эволюция: предыдущая партия сдана; обнаруженные отказы CAP12/CAP07/CAP11 и route typecheck переданы в исправление3462–3465. Новые transport/auth/stop/node-plan части переданы на независимую проверку3466–3469. WEB593 и QA-изменения Drive проверяются3470/3471. M1 сверяет локальную топологию3472. Брифы и входные SHA проверены. Source GO не означает посадку.
Документы: /Users/annakorin/nc-ops-scripts/SHIFT-GOAL-20260911-8H.md; /Users/annakorin/nc-ops-scripts/enterprise2-20260910/ENTERPRISE-2.md. Доказательства: /Users/annakorin/nc-ops-scripts/refill-20260911-0015/live.json и каталоги a2nc/m4/neo с receipt и полными входами. Ссылки: https://bugs.wool2.online/web
2026-09-10T23:33:43.969Z · coordinatorCHECKPOINT3478:WEB-625 2026-09-10T23:30:08.650195+00:00
3465 завершена: report/bundle SHA проверены; авторский HEAD 530b384173536226ff6c01ce2888aa429ba4d911, дерево чистое, bundle verify PASS. Faithful 8-root graph по raw report: 933 project files, 0 diagnostics при 4096MiB; final exit=0 прочитан. При 2048MiB OOM134. Raw focused tests: 28/28, 0 failed/skipped; 7 изменённых файлов. Независимая проверка и security/release остаются впереди; 3479 доставлена на A2 с guard, SHA256 входов и exact BASE; запуск wq-acc-typegraph-repair-final подтверждён.
Полные отчёты и проверки SHA: /Users/annakorin/nc-ops-scripts/checkpoint-3478/snapshot.json; задания и SHA inputs: refill-20260911-0015,0025,0028,0030. Спецификация: /Users/annakorin/nc-ops-scripts/enterprise2-20260910/ENTERPRISE-2.md; цель: SHIFT-GOAL-20260911-8H.md.
2026-09-10T23:52:08.459Z · coordinatorCHECKPOINT3484LIMIT:WEB-625 2026-09-10T23:52:07.659549+00:00
3479 narrow independent source/config GO: HEAD 3e1554156bddc28e4e84be5715cac3117814ff40; bundle SHA f4cf38ae21d04474ae70ba2359e7d11d5f165ad4fad3926c6b71c4b77ff6530e verified. 28 inherited +4 own +11 component tests passed; faithful8-root graph928 files, zero diagnostics at4096MiB; scoped lint0 errors. Product unchanged by QA. Это не security/PG/live acceptance; включение в общий кандидат ещё pending. Evidence: checkpoint-3484/3479-receipt.json и полный REPORT.md.
2026-09-11T00:15:52.466Z · coordinatorCHECKPOINT3488:WEB-625 2026-09-11T00:15:51.647210+00:00
Пять новых сдач проверены координатором: bundle verify, SHA256 и exact HEAD. 3427 сдала ingest cf64ed4074c8349c12ed10a3725797ec2c65ff75; source PG 23/23, component 33+3+20; ESLint UNKNOWN timeout, финальная security/live приёмка не выполнена. 3488 реально запущена на A1: объединяет 3473 (22 критерия), 3479 (tokens/types), 3427 (ingest), охватывая входы всех исходных26. Итогового merge verdict ещё нет. Security acceptance3484 остаётся BLOCKED_PROVIDER_LIMIT до12.09 16:00UTC; кошелёк не менялся. Новых посадок нет. Evidence: checkpoint-3488/snapshot.json; security-integration-3488/{3488-receipt.json,inputs/manifest.json}; полный3427 report. 2026-09-11T00:32:56.071Z · coordinatorCHECKPOINT3492:WEB-625 2026-09-11T00:32:55.179360+00:00
3488 завершила source integration: d95fd864292c2763e8125de62a08e8fd8c181cde. Все 26 строк матрицы и исходные 14 веток сохранены; 201/201 миграций, P19 negative blocksStartup, 123 activation rows сохранены. SHA256 d3bd60ef387de0cb79342522be849d9023365f96e33d69c866b3ab2598aa8e7d, exact HEAD/clean/bundle проверены и скопированы. Это не независимая security/PG/runtime приёмка. 3484 BLOCKED_PROVIDER_LIMIT до 2026-09-12 16:00 UTC; новых посадок нет. Evidence: checkpoint-3491/snapshot.json, полный 3488 REPORT и бандл; A1 3488SECURITYINTEGRATIONFINAL-evidence.
2026-09-12T11:57:22.315Z · coordinatorSECURITY26-3519-HANDOFF:WEB-625 2026-09-12T11:57:21.509340+00:00
3513 historical token/OAuth cross-process comparison remained nonzero. Author3519 reports final10/10 with duplicate/revocation and crash controls; historical node ENOENT not reproduced. No live provider test or independent acceptance claimed.
3519-repair-security26-bounded on A2, gpt-5.6-luna high: dispatcher start2026-09-12T10:51:42Z, done2026-09-12T11:29:11Z; observed HANDOFF_READY, no active model process. NO-GO3513 preserved; author GO is only readiness for NEW independent acceptance. Exact QA base cfacc6109e72cc7de9adb7674d0529120b625252; product d95fd864292c2763e8125de62a08e8fd8c181cde; delivered QA HEAD bd35336670692adf54af563e05388ec7aa49a425. Bundle hash819bb4f8ab036c99ee80dabef42aace943dfde3d2416d615b10d113577d5e643, bundle verify/base ancestry passed. Guard, duplicate/resource check and target inputs SHA verification recorded. Original first FAILs and negatives retained per report; no blanket stale-tests classification. Receipt /Users/annakorin/nc-ops-scripts/security26-3519/3519-receipt.json; report /home/ubuntu/waves/3519REPAIRSECURITY26BOUNDED-REPORT.md; raw evidence /home/ubuntu/waves/3519REPAIRSECURITY26BOUNDED-evidence/. No deployment or Security26 closure.
2026-09-12T14:52:13.361Z · coordinatorTICK-3525-STALE-LIMIT-20260912:WEB-625
Старая отметка provider-limit снята: source/QA приёмка3521 и узкая3525 завершены. Неизменённые доказательства наследуются с точным SHA и указанными skips/границами; это не новые live тесты этой карточки. Посадка, соответствующие runtime/browser/provider gates остаются OPEN. Матрица26 и GATES.md привязаны к WEB-515; done не выставляется.
2026-09-12T15:35:03.430Z · coordinatorTICK-3528-BF-20260912:WEB-625
Точечный merge gate3528: candidate Google correctly refuses synthetic grant without Drive scope (403 vs expected200). Patched QA positive now drive.file; added missing/profile-only/lookalike Drive scope negatives; исходный [200,409], providerAttempts1, replay/foreign/expiry/crash checks сохранены. Product src/app/api/integrations/google/auth/route.ts не изменён. Авторская новая проверка11/11+2/2, skips0, PG остановлена. Независимая3530 на A1 RUNNING; её вердикта ещё нет. Исходник продукта для сборки92f7ae8 не менялся.
2026-09-12T15:58:05.806Z · coordinatorRESULT-3530-R8C-20260912:WEB-625
3530 QA_FIXTURE_ACCEPTANCE=GO received: exact HEAD ea6e48a8d9294d4556c33e785570fd4ce5034cd7, 48 original files hashes verified. Raw cross-process11/11 + Google shortcut2/2, skips0, freshPG201, product parity and cleanup confirmed. No product-source changes. Original report checksum typo preserved (last digit2); actual bundle/sidecar last digit0, full SHA in3530-collection-review.json and COORDINATOR-CHECKSUM-ERRATUM.md. Historical3528 NO-GO preserved. This is collected independent fixture acceptance, not new coordinator security certification or runtime release closure.
2026-09-12T18:22:02.259Z · coordinatorSHIFT-STOP-20260912:R2:WEB-625
ТЕКУЩИЙ СРЕЗ ПЕРЕД ОСТАНОВКОЙ — WEB-625 / SEC-076
Задача: SEC-076 [CVSS N/A or UNKNOWN] Повтор OAuth callback дважды вызывает обмен одноразового code
Пакет l115f-r2 установлен на прод 2026-09-12T18:02:33.922654Z.
SOURCE=92f7ae807869bbaa8ae7ef6ca2ea622675e31af9
ARTIFACT_SHA256=1353e969b2a7a1a31ac702be361913c41cb53c104db49938a02f5fcd07766668
Runtime 18:15:34 UTC: оба backend ready=true, paidReady=true/enforce_ready; web A/B, indexing и extraction указывают на новый release; старых процессов 0. Таймеры indexing/extraction active.
Сборка, подпись с tamper-negative, совместимый rollback, dryrun и flip выполнены. Редактор: приложение HTTP200, список 58 документов, один документ открыт, новых ошибок после клика 0; при загрузке были две прерванные prefetch-загрузки и admin/agents403. Это не полная browser/security приёмка.
Один платный synthetic chat: HTTP200; operation terminal/succeeded, event APPLIED, 5/5 обязательных receipts нового identity. BILLING_PARITY=NO-GO: в ответе $0.000637, в LedgerEntry списано $0.039476, разница $0.038839, SETTLED_MAX/usage_untrusted. HTTP200 и paidReady не доказывают корректность суммы или ответа.
Владелец 18:13:55 UTC поручил сохранить готовое, обогатить тикеты, написать хендофф и остановить смену. Новые волны, сборки, paid requests, load/soak и security-вердикты не запускаются. Эпик остаётся открыт.
Откат после появления candidate receipts — только arm64-l115e-compat-20260912T172738Z, SHA ef4b7c2a6e8bcda45fc361f979076f43d37f4caf1256bcbbccf2188b2e2d092d. Plain l115e несовместим с новой identity; исторические receipts не переписывать.
ПРИЁМКА ЭТОЙ НАХОДКИ
ALL26 criterion: SEC-076; WEB-625; source=GREEN; PG=GREEN executed. Evidence: Same 10/10: all four synthetic providers claim once, foreign/expired/stale/replay/crash controls. Оставшиеся gates при handoff: P, F, live provider. 3530 устранила только QA-fixture mismatch3528: product/config/schema byte parity с92f7ae807; fresh PG201, cross-process11/11, shortcut2/2, skips0, scope/foreign/replay/crash negatives. Исторический NO-GO3528 не стёрт.
ТОЧНЫЙ ОСТАТОК / СЛЕДУЮЩИЙ ИСПОЛНИТЕЛЬ
Проверить live OAuth callback/replay/foreign/expired и provider exchange count. QA scope-negative/one-exchange уже проверены в 3530, новые product changes не нужны.
Координатор собирает runtime receipts; независимый security-приёмщик не на OpenAI выдаёт scoped verdict. Сейчас никто не назначается на новую волну. Review сохраняется: факт установки не превращает OPEN в PASS.
КАРТА ДОКУМЕНТОВ
Intel: /Users/annakorin/nc-ops-scripts/release-l115f/r2/{l115f-artifact.json,signature-receipt.json,runtime-stop-verified.log,editor-postqa-rerun.log,paid-probe-accounting-receipt.json,paid-probe-failure-detail.json}.
Source/QA: /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/3521/3521ACCSECURITY26REPAIRED-REPORT.md; 3525/3525SECURITYHANDOFFGATES-evidence/GATES.md; 3530/3530ACCSECURITYGOOGLEFIXTURE-REPORT.md.
Merge: /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/3526/3526INTEGRATESECURITYRELEASE-evidence/merge-manifest.json.
Transition: /Users/annakorin/nc-ops-scripts/release-l115f/{3534-collected,3536-collected,compat}.
Billing finding: [[WEB-650]]. 2026-09-12T22:25:57.508Z · coordinator[12.09 22:25Z координатор] ОБОГАЩЕНИЕ 12.09 (3574-enrich-web515-b):
Сделано: OAuth callback выполняет обмен одноразового code ровно один раз; foreign/expired/stale/replay/crash отказы (source/PG GREEN, 10/10).
На проде: частично. Код посажен (l115g), но живой provider-контур не проверяем (paid provider) — по плану QA-харнесса 3557.
Доказано: приёмка 3327, repair 3351 03016194, независимая 3371, fixture-fix 3530 (11/11).
Осталось: живой callback/replay/foreign/expired и счётчик exchange.
Кто следующий: QA-харнесс 3557. Статус keep (review).
Ссылки: /Users/annakorin/nc-ops-scripts/run-l115b-luna/acceptance-results/a2/3327SEC076ACCEPTANCE-REPORT.md (SHA 6105ecb5…); /home/ubuntu/waves/3351REPAIRTOKENS-REPORT.md; commit: 03016194; src/app/api/integrations/google/auth/route.ts:154-190; notion/auth/route.ts:136-184; dropbox/auth/route.ts:133-…; /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/3530/3530ACCSECURITYGOOGLEFIXTURE-REPORT.md; QA-HARNESS-PLAN-l115f.md (волна 3557); [[WEB-650]]
Отчёт волны: /Users/milamarty/waves/3574ENRICH*-REPORT.md (M4), копия nc-ops-scripts/shift-20260912-resume/wash-20260912/enrich-collected/.
2026-09-13T08:03:24.487Z · coordinator[13.09 08:03Z координатор] ЖИВОЕ ДОКАЗАТЕЛЬСТВО ЕСТЬ → done. SEC-076: существующий тест гоняет все четыре настоящих OAuth-callback роута против настоящей PostgreSQL: повтор не приводит ко второму обмену кода (волна 3626, 13.09, изолированный стенд с артефактом прода l115i и одноразовые фикстуры; вердикт определённый, не UNKNOWN). Evidence: /home/ubuntu/waves/3626SECURITYLASTSIX-evidence/ (A2), копия в shift-20260912-resume/3626/collected/.
2026-09-13T09:05:32.763Z · coordinator[13.09 09:05Z координатор] ОБОГАЩЕНИЕ ПОД НУЛЕВОГО АГЕНТА (канон WEB-449, волна 3639): тело карточки переписано — суть, МЕХАНИКА (файлы/функции/где гейт/корень), хронология с волнами и коммитами, чем доказано живьём с путями к evidence, карта документов по машинам, остаток, и одна команда для перепроверки. Прежний текст триажа 10.09 сохранён в конце тела как «История», плюс бэкап /tmp/secbody-backup-WEB-625.md на M1.
Воркер
не проверен
STOPPED; l115f-r2 installed; finding live gate OPEN
coordinator
движение в панели: неизвестно
Подключиться и смотреть/перехватить руками. Колесо мыши листает; клавишами — Ctrl-b затем [, выход из прокрутки q. Отсоединиться — Ctrl-b затем d:
Прочитать историю панели без подключения — листается и ищется (/ поиск, q выход), воркеру не помешает:
Обновлён
2026-09-13T09:05:32.761Z