WEB board

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

SEC-040 [P2] Social callbacks строят недопустимые относительные redirect URL

Закрыт P2 ведёт: — эпик: WEB-515
Суть
Все callback outcomes используют относительный URL в NextResponse.redirect (src/app/api/social/linkedin/callback/route.ts:26,30,35,42,50,53). В закреплённой package.json Next 16.2.6 redirect вызывает validateURL, который строит new URL без base и отклоняет такой путь. Поэтому в обычной ветке успеха provider/DB effect может завершиться до исключения при построении ответа, а catch снова пытается построить такой же недопустимый redirect. Это подтверждено source + exact-version framework source, без выполненного callback. CVSS 3.1 не назначен: установлено нарушение результата операции, не воздействие на чужие данные.

ДЛЯ ТИКЕТА: todo; общий небольшой fix-бриф 2049 linkedin-callback-completion-fix, Codex luna.

KNOWN ISSUES / ТРАБЛШУТИНГ: current source 6930, reported l112 отдельно; provider не вызывался. Отсутствие PKCE или app TTL само по себе не признано отдельной находкой.

Exact-version references: https://raw.githubusercontent.com/vercel/next.js/v16.2.6/packages/next/src/server/web/spec-extension/response.ts (108–122); https://raw.githubusercontent.com/vercel/next.js/v16.2.6/packages/next/src/server/web/utils.ts (131–141).

SEC-040 уточнение объёма: graph/search_code + source census выявили 16 relative NextResponse.redirect calls в трёх social callback routes: LinkedIn (6), Facebook (6), Twitter (4). Framework-контракт Next16.2.6 одинаков для них. LinkedIn исправляется брифом 2049; Facebook/Twitter — 2050, без пересечения файлов. Это одно response-construction условие; новых копий SEC-040 не создаётся. Facebook admission defect отдельно SEC-041.

## ДЛЯ НУЛЕВОГО АГЕНТА (обновлено 2026-09-05 UTC)
- **Суть одной строкой:** SEC-040 [P2] Social callbacks строят недопустимые относительные redirect URL
- **Текущее состояние:** статус: todo; Все callback outcomes используют относительный URL в NextResponse.redirect (src/app/api/social/linkedin/callback/route.ts:26,30,35,42,50,53). В закреплённой package.json Next 16.2.6 redirect вызывает validateURL, который строит new URL без base и отклоняет такой путь. Поэтому в обычной ветке успе… | KNOWN ISSUES / ТРАБЛШУТИНГ: current source 6930, reported l112 отдельно; provider не вызывался. Отсутствие PKCE или app TTL само по себе не признано отдельной находкой. | SEC-040 уточнение объёма: graph/searchcode + source census выявили 16 relative NextResponse.redirect calls в трёх social callback routes: LinkedIn (6), Facebook (6), Twitter (4). Framework-контракт Next16.2.6 одинаков для них. LinkedIn исправляется брифом 2049; Facebook/Twitter — 2050, без пересе… | KNOWN ISSUES / ТРАБЛШУТИНГ: только фикс построения Response, не приёмка всех provider flows. Реальные NextResponse tests обязательны; permissive stub скрывает текущую ошибку.
- **Кто работал:**
- 2026-09-05T20:47:44.244Z — astra-security — cont12-sec040-scope — 2026-09-05T20:47:44.244188+00:00 / IST=2026-09-06T02:17:44.244197+05:30 SEC-040 уточнение объёма: graph/searchcode + source census выявили 16 relative NextResponse.redirect calls в трёх social callb
- **Ветки/бандлы/отчёты:** нет данных в тикете
- **KNOWN ISSUES / ТРАБЛШУТИНГ:**
- ДЛЯ ТИКЕТА: todo; общий небольшой fix-бриф 2049 linkedin-callback-completion-fix, Codex luna.
- KNOWN ISSUES / ТРАБЛШУТИНГ: current source 6930, reported l112 отдельно; provider не вызывался. Отсутствие PKCE или app TTL само по себе не признано отдельной находкой.
- KNOWN ISSUES / ТРАБЛШУТИНГ: только фикс построения Response, не приёмка всех provider flows. Реальные NextResponse tests обязательны; permissive stub скрывает текущую ошибку.
- **Эволюция:**
- 2026-09-05 → cont12-sec040-scope — 2026-09-05T20:47:44.244188+00:00 / IST=2026-09-06T02:17:44.244197+05:30 SEC-040 уточнение объёма: graph/searchcode + source census выявили 16 relative NextResponse.redirect calls в трёх social callback routes: LinkedIn (6), Facebook (6),
- **Следующий шаг:** нет данных в тикете
Связи
Лента
2026-09-05T20:47:44.244Z · astra-security
cont12-sec040-scope — 2026-09-05T20:47:44.244188+00:00 / IST=2026-09-06T02:17:44.244197+05:30

SEC-040 уточнение объёма: graph/search_code + source census выявили 16 relative NextResponse.redirect calls в трёх social callback routes: LinkedIn (6), Facebook (6), Twitter (4). Framework-контракт Next16.2.6 одинаков для них. LinkedIn исправляется брифом 2049; Facebook/Twitter — 2050, без пересечения файлов. Это одно response-construction условие; новых копий SEC-040 не создаётся. Facebook admission defect отдельно SEC-041.

KNOWN ISSUES / ТРАБЛШУТИНГ: только фикс построения Response, не приёмка всех provider flows. Реальные NextResponse tests обязательны; permissive stub скрывает текущую ошибку.
2026-09-06T00:20:44.919Z · astra-security
cont16-wave-2069-web-557 — 2026-09-06T00:20:44.918320+00:00 / IST=2026-09-06T05:50:44.918325+05:30

CONT16 fan-out: 2069 FIX, gpt-5.6-luna, priority NORMAL; задачи WEB-556, WEB-557.

Complete LinkedIn-only slice of2049. callback route:18–55 validates session/state, performs provider work:45–47 then deletes key only:48; six relative redirects at26,30,35,42,50,53. Existing identity/state rejection already blocks the broad cross-user claim. Atomically compare-and-delete exact current key/value before provider work, require one affected row and remove post-effect key-only cleanup. Convert each fixed internal destination to absolute URL via existing trusted request/canonical-origin convention using actual pinned NextResponse. Preserve per-user nonce producer, encrypted integration upsert and provider contract. Do not edit Twitter/Facebook scopes owned by2070/2071.

Бриф: /Users/poolpooly/audit/outbox/2069-linkedin-attempt-and-response-completion-brief.md
SHA256 029452b2ae72632c431b663b664b67cad9ffe2b51444b38df86756246b9c08b6
Статус: выдан в relay; запуск/результат не подтверждены. Full assigned l113/l113b SHA и prior-output dedupe обязательны. Координатор принимает пересекающиеся изменения и посадку.
2026-09-06T00:20:44.927Z · astra-security
cont16-wave-2071-web-557 — 2026-09-06T00:20:44.926890+00:00 / IST=2026-09-06T05:50:44.926895+05:30

CONT16 fan-out: 2071 FIX, gpt-5.6-luna, priority NORMAL; задачи WEB-557, WEB-558.

Complete2050 Facebook attempt and Facebook/Twitter route response slices. Facebook callback:27–33 permits a missing stored attempt before provider/optionalInstagram effects35–45; producer providers/facebook.ts:148–158. Require nonempty supplied state plus exact existing attempt, atomically compare-and-delete key/value before work, no post-effect cleanup. Convert six Facebook and four Twitter fixed destination redirects to absolute URLs through existing trusted base convention; use actual pinned NextResponse. Preserve Twitter provider validation (2070 owns its internals), auth identity, optional Instagram partial-failure behavior and current result codes.

Бриф: /Users/poolpooly/audit/outbox/2071-facebook-attempt-and-social-response-completion-brief.md
SHA256 2ad908f98f6ee6b372e76848738e5d62e8341a938e6340ef493cc1f230270751
Статус: выдан в relay; запуск/результат не подтверждены. Full assigned l113/l113b SHA и prior-output dedupe обязательны. Координатор принимает пересекающиеся изменения и посадку.
2026-09-06T02:53:13.562Z · coordinator
[06.09 02:53Z координатор] [2026-09-06T02:53Z координатор] Волна 2069c (A2, luna xhigh, повтор блока 16 с базой 02812b90): VERDICT=GO, commit=e406e94c. Независимая приёмка 2161-accweb557linkedin поставлена (sol high). Отчёт: A2 /home/ubuntu/waves/LINKEDIN-ATTEMPT-AND-RESPONSE-COMPLETION-REPORT.md.
2026-09-06T02:56:45.610Z · coordinator
[06.09 02:56Z координатор] [2026-09-06T02:56Z координатор] Волна 2071c (A1, luna xhigh, повтор блока 16 с базой 02812b90): VERDICT=GO, commit=8ac58bad. Независимая приёмка 2162-accweb558facebook поставлена на A1 (sol high). Отчёт: A1 /home/ubuntu/waves/FACEBOOK-ATTEMPT-AND-SOCIAL-RESPONSE-COMPLETION-R2-REPORT.md.
2026-09-06T03:31:38.531Z · coordinator
[06.09 03:31Z координатор] [2026-09-06T03:31Z координатор] ПРИЁМКА 2161-accweb557linkedin (A2, sol high): WEB-556 (LinkedIn-срез) ПРИНЯТ — callback атомарно удаляет только точную попытку, старая не трогает новую, повтор идемпотентен. WEB-557 НЕ принят: абсолютный Location строится из req.url — при чужом Host редирект уходит на foreign.example. → Волна 2168-linkedinredirectorigin (A2, luna xhigh): origin из конфигурации (единый хелпер с origin-lock), чужой Host → 4xx; проверить Twitter/Facebook на ту же дыру. Отчёт: A2 /home/ubuntu/waves/ACCWEB557LINKEDIN-REPORT.md.
2026-09-06T03:50:24.653Z · coordinator
[06.09 03:50Z координатор] [2026-09-06T03:50Z координатор] Волна 2168-linkedinredirectorigin (A2, luna xhigh, 15 мин): VERDICT=GO, commit=490194c7 (потомок e406e94c): общий helper, redirect от configured origin, чужой Host → 403 без Location. Независимая приёмка 2169-accweb557redirect поставлена (sol high). Отчёт: A2 /home/ubuntu/waves/LINKEDINREDIRECTORIGIN-REPORT.md.
2026-09-06T03:52:07.555Z · coordinator
[06.09 03:52Z координатор] [2026-09-06T03:52Z координатор] ПРИЁМКА 2162-accweb558facebook (A1, sol high): VERDICT=GO на 8ac58bad. Кандидат l113d (l113c уже в сборке).
2026-09-06T04:06:13.008Z · coordinator
[06.09 04:06Z координатор] [2026-09-06T04:06Z координатор] ПРИЁМКА 2169-accweb557redirect (A2, sol high): NO-GO. LinkedIn (6/6 веток) и Twitter (4/4) — ПРИНЯТЫ: helper от canonical origin WEB-075, чужой Host → 403 без Location до auth. Facebook — guard внутри auth() HOC: NextAuth выполняет session/jwt-работу до отказа (order-probe). → Волна 2172-facebookguardorder (A2, luna high) поверх 490194c7.
2026-09-06T04:24:53.471Z · coordinator
[06.09 04:24Z координатор] [2026-09-06T04:24Z координатор] GO от авторов, приёмки поставлены: перimeter stream-safe 39af4922 (2167) → 2175 (sol xhigh); Facebook guard-order c926d0f8 (2172) → 2176; мобильный холодный вход 8e2d3671 (2152b GREEN) → 2177; телефония-пакет 5a750755 (2151b) → 2178. NO-GO приёмок: WEB-554 f6a40c8b (2163: отзыв не обновляет открытый клиент, DELETE не идемпотентен, нет адресного события, tsc rc=2) → волна 2180-web554revoke; SIP-лаунчер 929dcf4a (2174: happy path ок, два дефекта — дубликат transport в template не отвергается + второй, см. отчёт) → волна 2179.
2026-09-06T08:32:06.352Z · coordinator
[06.09 08:32Z координатор] [2026-09-06T08:31Z координатор] Ревью Astra на текущей базе (M4 sol): WEB-534 GO и WEB-537 GO — дефекты на текущей линии не подтверждены → done; WEB-536 NO-GO → фикс-волна 2221. Блок 17 приёмки: WEB-559 b856b658 GO, WEB-567 877a7160 GO → l113d; WEB-538 df0399da NO-GO (item claim/settlement без fence) → 2223; WEB-541 ebecd7f2 NO-GO (2 нарушения контракта) → 2224. Фиксы по NO-GO ревью GO у авторов → приёмки: WEB-545 c4373797 (2216), WEB-550 819da84e (2217), WEB-552 9d47fdf4 (2218), WEB-553 ba3acc4b (2219), WEB-555 d7e486e9 (2220). A2: WEB-542 доработка 7318e002 GO → приёмка 2215; revive-бюджет v3 1fff536a PASS → приёмка 2222; большой PDF 66e56137 ПРИНЯТ (2202 GO) → l113d; Facebook guard c926d0f8 ПРИНЯТ (2176b GO), конфликтует с линией social в l113d → merge-волна 2225.
2026-09-06T08:50:40.363Z · coordinator
[06.09 08:50Z координатор] [2026-09-06T08:50Z координатор] ПРИЁМКА 2214-accroleschains3 (A2, sol xhigh): VERDICT=GO на 475f2872 — multi-hop с остановкой без нового evidence, relevance gate, детерминированная расписка (оба порядка, budget-exhausted). Кандидат l113e (роли: C1-6/C3-1/C3-2). Слияние social callbacks 11148078 (2225 GO) → приёмка 2227. WEB-538 fence 5895c8d0 (2223 GO) → приёмка 2228 (M4).
2026-09-06T08:58:16.359Z · coordinator
[06.09 08:58Z координатор] [2026-09-06T08:58Z координатор] ПРИЁМКА 2227-accsocialmerge (A2, sol high): VERDICT=GO на 11148078 (слияние social callbacks поверх l113d-candidate 4c73d845) — на всех трёх callbacks: foreign Host → 403 без Location до auth, allowed → абсолютный 307, атомарный claim попытки. Кандидат l113e (l113d уже в сборке без guard-before-auth для Facebook).
2026-09-06T10:07:51.571Z · astra-security
cont18-wave-2094-web-557 — 2026-09-06T10:07:51.570800+00:00 / IST=2026-09-06T15:37:51.570805+05:30

CONT18 fan-out: 2094 FIX, gpt-5.6-luna, priority URGENT / High; задачи WEB-556, WEB-557.

BLOCK18 High verification mismatch: WEB556 done covers LinkedIn+Twitter, but4c73 only has Twitter exact claim034b8568 and Facebook/social6d37705a. src/app/api/social/linkedin/callback/route.ts:38–48 still findUnique/read/compare then provider callback then delete(key-only);:26–53 still relative redirects. Existing accepted A2-ACCWEB557LINKEDIN report e406e94c and redirect490194c7 are not mapped into this exact callback source. WEB557 itself remains review, do not report all providers closed.
This is a focused REPLAY/FIX reconciliation job, not authorization to duplicate an accepted candidate blindly. Obtain accepted LinkedIn attempt/redirect deltas and expected hashes/prerequisites from coordinator if available; compare actual current target. If already assigned for l113e/f landing, report exact candidate/mapping and supply current-base verification instead of competing implementation. Otherwise produce minimal clean replay on4c73 preserving current Twitter/Facebook, source authority and provider adapter. Reused attempt must be claimed exactly by key+value before provider effects; stale result cannot delete replacement; use accepted trusted absolute redirect helper, not request-host-derived destination. No real OAuth/provider operations.

Бриф: /Users/poolpooly/audit/outbox/2094-linkedin-attempt-current-line-replay-fix-brief.md
SHA256 09d4f5600d00d9b211e63b705427f05fa48f88646a94cbe72084cdb19630f0da
Статус: выдан в relay; запуск/результат не подтверждены. Назначенная база 4c73d8451a295af84603b1d20f66f88d5aa82a2e; l113d-line. Проверка текущего кода и prior-output dedupe обязательны. Координатор принимает пересекающиеся изменения и посадку.
2026-09-06T11:10:43.702Z · astra-security
cont18-relay12-verdict-web-557 — 2026-09-06T11:10:43.701934+00:00 / IST=2026-09-06T16:40:43.701938+05:30

Правила обогащения: WEB-449. ДЛЯ ТИКЕТА / CONT18 intake209x.

Состояние: NO-GO / INPUT; superseded by accepted candidate.
Причина/доказательство: Старая попытка не имела4c73 и не делала replay. WEB-556:1948 / WEB-557:1949 сообщает2227 GO11148078; WEB-515:2088 сообщает посадку3391848c+11148078 в65ff9060.
Что осталось: Не возобновлять stale2094. Получить ACCSOCIALMERGE-REPORT.md и exact l113e packet/fullSHA; текущая посадка reported, M1 object/file mapping ещё не проверен.

KNOWN ISSUES / ТРАБЛШУТИНГ
Симптом: headerGO/NO-GO или boarddone не задаёт scope приёмки. Проверка: раздел Provenance/Exactly three groups/KNOWN ISSUES исходного отчёта и adjudications.json; source-hash-reconciliation.json содержит локальный byte bridge на4c73. Report-only результаты не объявлены исполненными родителем. Prod65ff9060 сообщён WEB-515:2088, object на M1 отсутствует; authoritative current mapping pending. Лечение/статус: Не возобновлять stale2094. Получить ACCSOCIALMERGE-REPORT.md и exact l113e packet/fullSHA; текущая посадка reported, M1 object/file mapping ещё не проверен.

КАРТА ДОКУМЕНТОВ: M1 /Users/poolpooly/audit/evidence/block18-relay/intake-originals/CONT18-RELAY-1/LINKEDIN-ATTEMPT-CURRENT-LINE-REPLAY-FIX-REPORT.md
SHA256 99cac3408fa516b9fffbd6f2d18b9a6fec955bf4ce2d9c708c58c93d5248941c
M1 /Users/poolpooly/audit/reports/block18-relay-1-2-checkpoint.md
M1 /Users/poolpooly/audit/evidence/block18-relay/adjudications.json
M1 /Users/poolpooly/audit/outbox/CONT18-RELAY-1-2-URGENT-COORDINATOR-HANDOFF.md

Board status/чужие поля не менялись. High здесь приоритет closure verification, CVSS не повышен.
2026-09-06T14:18:20.800Z · astra-security
block19-linkedin-attempt-current-line-replay-fix-web-557 — 2026-09-06T14:18:20.800226+00:00 / IST=2026-09-06T19:48:20.800230+05:30

Правила обогащения: WEB-449. ДЛЯ ТИКЕТА / BLOCK19.

Вердикт: INPUT-NO-GO superseded / mapped source GO.
Причина и текущая дельта: 2227 GO11148078 уже inherited вg как c61289e2+1626daa0; callback outerguard/exactclaim/absoluteoriginredirect присутствуют. Не повторять2094; liveprovider/PostQA не заявлены.
База независимой source-сверки M1: 4c322c4606a1695fc896ecd6313842d55679b472; root /private/tmp/nc-block19-parent. Исходный header VERDICT=NO-GO сохранён без изменения scope.

KNOWN ISSUES / ТРАБЛШУТИНГ: reportGO ограничен исполненными группами; INPUT-NO-GO не доказывает product failure; current source/hash bridge не заменяет runtime/DB/provider/host acceptance. Проверка: раздел provenance/raw counts исходного отчёта, source-hash-reconciliation.json и актуальный fanout-jobs.json. Лечение/следующий шаг: 2227 GO11148078 уже inherited вg как c61289e2+1626daa0; callback outerguard/exactclaim/absoluteoriginredirect присутствуют. Не повторять2094; liveprovider/PostQA не заявлены.

КАРТА ДОКУМЕНТОВ: M1 /Users/poolpooly/audit/evidence/block19/intake-originals/CONT18-RELAY-1/LINKEDIN-ATTEMPT-CURRENT-LINE-REPLAY-FIX-REPORT.md
SHA256 99cac3408fa516b9fffbd6f2d18b9a6fec955bf4ce2d9c708c58c93d5248941c
M1 /Users/poolpooly/audit/evidence/block19/source-hash-reconciliation.json
M1 /Users/poolpooly/audit/reports/block19-checkpoint.md
M1 /Users/poolpooly/audit/evidence/block19/fanout-jobs.json

Board workflow/чужие поля не менялись. High — срочность сверки закрытия; новая числоваяCVSS не назначалась. Parent/reviewer тестов не запускали; результаты worker report-attested.
2026-09-06T21:37:37.367Z · astra-security
block22-wave-2184-web-557 — 2026-09-06T21:37:37.365883+00:00 / IST=2026-09-07T03:07:37.365916+05:30

ДЛЯ ТИКЕТА / BLOCK22 release closure. OpenreviewWEB557 is absolute validated callbackredirect, not emailissuer567. Sourceaccepted2227 inherited; workflowreconciliationstillopen.

Бриф /Users/poolpooly/audit/outbox/2184-social-redirect-origin-post-l113j-closure-brief.md; SHA256 b9c1b61936db2a67301205fe5fcbca5393b1f8969bd4db770111c47b3576c43e. MODEL=gpt-5.6-sol, A2 cap11, M4 cap3 без автоматического переноса. WAITING_RELEASE_l113j: не запускать до полного deployed-SHA/artifact/backend receipt. Сейчас reportedprod i18f130938b8d2a8f4376811651ad21beb4e28838; M1 source checkout толькоh.

Три группы: exactrelease/source mapping; live: One empty callback or invalid ordinary Host refusal through controlled edgecheck; ensure Location if emitted is intended absolute app origin without sensitivequery. No providerrequest or redirectfollow beyond approvedorigin.; companion: Local success/error/catch branches absolute URL and exact origin with inertauth/provider. Coordinator reconcilesreview using existingacceptance plus live receipt, no duplicatecallbackfix.

KNOWN ISSUES: sent≠running, code/authorGO≠liveclosure. При отсутствующем fix в j — NOT_DEPLOYED. Никаких paid/provider effects, реальных удалений/отказов сервиса. Existing2455/2450/2460/2462/2458 и старые работы не дублируются. Историческиеanchors src/app/api/social/linkedin/callback/route.ts:38–48; acceptedc61289e2+1626daa0. Fullreport future /home/ubuntu/waves/BLOCK22-SOCIAL-REDIRECT-ORIGIN-POST-L113J-CLOSURE-REPORT.md. Evidence M1 /Users/poolpooly/audit/evidence/block22/fanout-jobs.json; checkpoint /Users/poolpooly/audit/reports/block22-checkpoint.md. Статус тикета не менялся.
2026-09-07T07:38:24.525Z · astra-security
BLOCK22-RELAY13-WEB-557 — 2026-09-07T07:38:24.525087+00:00 / IST=2026-09-07T13:08:24.525103+05:30

SEC-040 / WEB-557: GO_SCOPED_REPORT_ATTESTED. Workflow review сохранён. Текущий m 8f4ba1d92cc15a8b64144674e35cce71fdfba43a подтверждён распиской; родитель не выполнял live.

GO принят только в scope: social redirect origin only; release l113j, report time 2026-09-07T00:28:37Z. SHA256 отчёта b68678e8ed9a7889077daee809c6e47d51a0d2373c022c587dc7de81dda6f82e. Это не автоматическая live-приёмка всех путей на m.

KNOWN ISSUES / ТРАБЛШУТИНГ
- no independent compiled-chunk byte hash; not blocking explicit scope
- historical 2227 artifact unavailable

ДЛЯ ТИКЕТА
Record scoped GO; no automatic repeat for m. Distinct unverified scopes remain explicit.
No additional release candidate asserted by this delta.
Полный ledger и parent adjudication: ~/audit/evidence/block22-relay13/ledger46.json; ~/audit/reports/block22-relay13-r3-plan.md.
Reports:
/Users/poolpooly/audit/evidence/block22-relay13/intake-originals/CONT19-RELAY-12/a1/BLOCK22-SOCIAL-REDIRECT-ORIGIN-POST-L113J-CLOSURE-REPORT.md
2026-09-07T08:53:35.628Z · coordinator
[07.09 08:53Z координатор] ЗАКРЫТО (координатор, 08:55Z 07.09) — полный трейл: ПОСАДКА — replay 1626daa0 «fix(social): restore callback origin validator on candidate base» (оригинал 11148078, ACCSOCIALMERGE GO) = предок ПРОД l113n 44d8af68 (merge-base --is-ancestor); ПРИЁМКА — ACCSOCIALMERGE GO; closure — BLOCK22-SOCIAL-REDIRECT-ORIGIN-POST-L113J (Astra, A1) VERDICT=GO на l113j (source_commit 1626daa0), унаследовано l113k→l113n; block22 relay-13: GO_SCOPED_REPORT_ATTESTED. Scope: social callback redirect origin (абсолютный валидированный redirect). KNOWN ISSUES: симптом «callback LinkedIn/Twitter/Facebook падает при построении redirect» → проверка: relative URL в NextResponse.redirect → причина: Next validateURL без base → лечение: 1626daa0 (посажено). Не в скоупе: PKCE/app TTL (отдельно не признано находкой).
2026-09-07T11:40:36.785Z ·
ЭВОЛЮЦИЯ ЗА 12 Ч (гигиена 2609, 11:25Z 07.09)

ХРОНОЛОГИЯ КРУГОВ
- волна 2184 → `46393080dd885f6ff25967f18639075564e12737`, `1626daa0ccbe2dd610528723f2c60b593a106b78`, `c61289e2edd3a9b7967facffc90d03e8de87768d` → VERDICT=GO — **SEC-040 / WEB-557: GO для явно ограниченного post-l113j closure.** Причина: exact j receipt/bundle/две backend-ready метки проверены; `c61289e2… + 1626daa0…` унаследованы и byte-unchanged; live empty callback вернул 307 с абсолютным `app.sixbyy.com` Location без чувствительных параметров и без follow; exact-release inert companion прошёл 8/8 для Host refusal и всех success/error/catch outcomes. Источник: `A1 waves/BLOCK22-SOCIAL-REDIRECT-ORIGIN-POST-L113J-CLOSURE-REPORT.md`.
- Линии посадки: l113j 22:56Z → l113k 00:41Z → l113l 05:30Z → l113m 06:33Z → l113n 07:48Z → l113o 09:35Z → l113p 10:21:43Z. Текущий PROD: l113p `1c850d92876757812eab9ffa7f381bcea95aad86`; общий verify — green по release receipt.

ДЛЯ НУЛЕВОГО АГЕНТА
- Board done; текущая линия l113p `1c850d92876757812eab9ffa7f381bcea95aad86`. Проверенные SHA: `46393080dd885f6ff25967f18639075564e12737`=предок; `1626daa0ccbe2dd610528723f2c60b593a106b78`=предок; `c61289e2edd3a9b7967facffc90d03e8de87768d`=предок. Новые отчёты не требуют переоткрытия при сохранении указанной scope-диспозиции.
- Следующий шаг / владелец: Нового product шага из выбранных отчётов нет; остаточные evidence/registry действия ведутся родительским эпиком.

KNOWN ISSUES / ТРАБЛШУТИНГ
- Дельта без домысла: **SEC-040 / WEB-557: GO для явно ограниченного post-l113j closure.** Причина: exact j receipt/bundle/две backend-ready метки проверены; `c61289e2… + 1626daa0…` унаследованы и byte-unchanged; live empty callback вернул 307 с абсолютным `app.sixbyy.com` Location без чувствительных параметров и без follow; exact-release inert companion прошёл 8/8 для Host refusal и всех success/error/catch outcomes. Проверка/причина привязаны к отчётам выше; anchors: `src/app/api/social/linkedin/callback/route.ts:23-64`, `src/lib/social/callbackRedirect.ts:9-54`, `src/lib/auth/verifyOrigin.ts:500-600`, `src/app/api/social/linkedin/callback/route.ts:38-40`. Лечение — только указанное в report disposition; отсутствующий live/receipt не объявляется продуктовой регрессией.

СВЯЗИ / ИСТОЧНИКИ
- Release: `M4 waves/L113P-RELEASE-RECEIPT.md`; координаторский срез: `M4 waves/OPS-STATUS-HEAD-1120.md`; точные отчёты перечислены в хронологии/KNOWN ISSUES.
- Если сегодняшняя карточка уже содержит более ранний coordinator-комментарий с тем же фактом, эта запись является только дельтой 2609 и не отменяет тот trail.
Воркер
не привязан — привязать: curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \ -d '{"issueId":"WEB-557","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-09-07T08:53:36.260Z