WEB-611 · Задача · — · web
SEC-062 [Medium] Повтор sourceId меняет staged bytes при прежней Source/job identity
Закрыт
P2
ведёт: —
эпик: WEB-515
Суть
# SEC-062 — Повтор sourceId меняет staged bytes при прежней Source/job identity
## 1. Суть и условие дефекта
Повтор sourceId при прежней Source/job identity не должен менять staged bytes; foreign-повтор должен отказываться.
## 2. МЕХАНИКА
`src/lib/ingest/fileIngestor.ts:188-199`, `src/lib/ingest/sourceWriter.ts:127-146,180-191`. **Корень:** повторная догрузка с тем же sourceId меняла staged bytes. Фикс `cf64ed407` (repair 3352).
## 3. ЧТО СДЕЛАНО
1. **10.09** — триаж BACKLOG64 (база `49bc58dcc`): карточка заведена из отчёта R09; условие подтверждено, независимая приёмка 3313SEC062ACCEPTANCE-REPORT.md (a2) — NO-GO.
2. **10.09** — repair-волна 3352 написала фикс `cf64ed407`; независимая source-приёмка 3362 — 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** — закрыто харнессом (не живым гейтом на проде): QA-харнесс (класс A) на копии прода l115i
## 4. ЧЕМ ДОКАЗАНО ЖИВЬЁМ
QA-харнесс на копии прода l115i (13.09 07:1xZ, `--execute --allow-qa-mutations`, одноразовая фикстура на QA-учётке): mint → 201; конфликтующая догрузка с другим размером отвергнута `416 range_total_mismatch`; исходные bytes целы; readback по настоящему полю хэша совпал с исходным. Харнесс `scripts/security/qa-harness/SEC-062.mjs`.
## 5. КАРТА ДОКУМЕНТОВ
- Repair-волна: A2 `/home/ubuntu/waves/3352REPAIRINGEST-REPORT.md`
- Независимая source-приёмка: A1 `/home/wave/waves/3362INDEPENDENTINGEST-REPORT.md`
- Приёмка условия (триаж): `/Users/annakorin/nc-ops-scripts/run-l115b-luna/acceptance-results/a2/3313SEC062ACCEPTANCE-REPORT.md`
- Харнесс-отчёт: QA-харнесс (класс A) на копии прода l115i
- Харнесс-сьют: `scripts/security/qa-harness/` (класс A, runner).
- Живая матрица гейтов: `/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. ОСТАТОК
нет
## 7. КАК ПЕРЕПРОВЕРИТЬ
```
node scripts/security/qa-harness/SEC-062.mjs --execute --allow-qa-mutations # на копии прода
```
## История (триаж 10.09)
Правила обогащения: WEB-449. Parent WEB-515. BACKLOG64-TRIAGE-20260910. Дата UTC: 2026-09-10T17:07:52.835164+00:00.
## ДЛЯ ТИКЕТА — SEC-062
**Условие:** Повтор sourceId меняет staged bytes при прежней Source/job identity.
**Состояние:** подтверждено в изученных стендовых свидетельствах воркера на указанной базе; независимая приёмка на Нео ещё не выполнена. Это не объявление дефекта живого l115a. Исходный NO-GO относится к полному scope и может одновременно содержать незавершённые группы.
**Исследованные байты:** `30000baf9939f94d062b0e216f023a11faa4af3f`. Базовая ветка — указанная в исходном отчёте; рабочее дерево lead `/Users/poolpooly/audit/nc` не используется вместо этой версии. **Файл:строка:** src/lib/ingest/fileIngestor.ts:188-199; src/lib/ingest/sourceWriter.ts:127-146,180-191.
**Доказательство и controls:** Actual fileIngestor+sourceWriter: два разных hash при одном sourceId, оба pending; storedhash равен retryhash. Sourceidentity positivePASS, PGrollback10skipped не proof.
**CVSS 3.1:** 4.3 Medium — `CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N` (предварительно).
Предварительно: для caller собственного import id; чужая запись не показана. PG durable visibility/current endpoint mapping ещё проверить.
Числа пересчитаны по FIRST CVSS3.1, а не скопированы из заголовков: https://www.first.org/cvss/v3.1/specification-document#7-1-Base-Metrics-Equations . При неполных предпосылках оценка не становится окончательной. N/A/UNKNOWN не означает Low или нулевой риск.
**Предложение исправления:** Idempotency должен связывать sourceId+scope+contenthash; повтор другими bytes конфликтует до замены stage/job. Одинаковый retry возобновляется.
**Сданные изменения:** Не представлен в этом возврате.
**Связи/дедупликация:** WEB-522, WEB-537, WEB-587 Старые условия SEC-001…048 не регистрируются заново. Эта карточка описывает отдельное условие, а не повтор счёта того же отчёта.
## KNOWN ISSUES / ТРАБЛШУТИНГ
Симптом → Повтор sourceId меняет staged bytes при прежней Source/job identity.
Проверка → воспроизвести указанный actual-module/PG fixture с положительным разрешённым контролем; сверить SHA исходников и хеши артефактов. Мок транспорта допустим, мок самой проверяемой проверки — нет. Report file получен и хеширован лидом; исходные raw artifacts вне inbox ещё не объявляются независимо проверенными.
Причина → src/lib/ingest/fileIngestor.ts:188-199; src/lib/ingest/sourceWriter.ts:127-146,180-191.
Лечение/статус → Idempotency должен связывать sourceId+scope+contenthash; повтор другими bytes конфликтует до замены stage/job. Одинаковый retry возобновляется. Приёмка/актуальность 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.
## Карта документов
- R27: /Users/poolpooly/audit/inbox/3120-B34-01-REPORT.md — SHA256 `030c30fc60ebd6f8f94e03bb54f3fe812027f5d300acf8cb1bece71031afa6b1`
- Мастер-разбор: /Users/poolpooly/audit/outbox/BACKLOG64-TRIAGE-20260910.md
- Данные: /Users/poolpooly/audit/evidence/backlog64-20260910/findings28.json
A1-REBOOT-RESUME:20260910:3362
Снимок 2026-09-10 20:40Z. Приёмка 3362 была прервана перезагрузкой A1 без полного комплекта сдачи. Сохранены прежние QA worktrees, незакоммиченные тесты, журналы и бандлы; архив /home/wave/waves/recovery-20260910/before/. Продолжение с прежним UUID сессии через exec resume. Живая tmux-сессия wq-secaccept-ingest подтверждена; UUID сверялся по заголовку журнала. Одновременно до 3 волн, общий MemoryHigh=10G/MemoryMax=12G/SwapMax=1G, Node heap=2048 MB; тяжёлые проверки последовательно. Guards и входные SHA проверены перед возвратом. Это восстановление проверки, нового GO и посадки нет. A1 перезагрузилась: в 20:33:37Z uptime=66.75 s, оба backend paidReady=true/enforce_ready, SIP health=ok.
FILL-SLOTS-2046:3362-062
2026-09-10 20:50Z. Независимая 3362 NO-GO SEC-062: foreign same-source/same-hash запрос отклонён, но cleanup удаляет owner staged bytes. Реальный PG/caller: candidate 6/7, BASE 1/7; failing negative прочитан в raw. Доработка 3375 запущена A2, exact BASE c38baf2731d8dc8bf1cf6b753605d758cfc66524, QA inputs доставлены и SHA/ancestry проверены. Исправить оба direct/stream callers, не терять owner bytes и не оставлять orphan при обычном отказе. Затем независимая приёмка. Посадки нет.
DISPATCH-20260910-3392
На 2026-09-10T21:38:23.260126+00:00: active; A2, волна 3392 acc-ingest-owner-r2. Exact BASE cd1c93527ed2ce827aacbed360d35b32322e8134. Бриф прошёл brief-guard; входы SHA256 и наличие BASE проверены до постановки. Входы /home/ubuntu/waves/inputs/3392-acc-ingest-owner-r2. Отчёт ожидается /home/ubuntu/waves/3392ACCINGESTOWNERR2-REPORT.md. Живой процесс модели подтверждён; возраст журнала 22 с. Source/подготовка и независимая проверка — в объёме брифа; это не посадка, не live/capacity GO и не окончательное закрытие security.
REFILL-2221-RESULTS-WEB-611
Снимок 2026-09-10T22:27:17.204978+00:00
3392 NO-GO: ownership SELECT и удаление staging разнесены; новый ExtractionJob pointer успевает стать владельцем до удаления. Реальный PG/non-superuser test 9/10. Доработка3427.
Волна 3427 a1nc gpt-5.6-sol: active (дочерний процесс подтверждён, журнал 25 с); exact BASE 256a0441e39fcd46557dae0b95f245126dc0e5a5; inputs /home/wave/waves/inputs/3427-ingest-cleanup-atomic
Новой посадки этим тиком нет. Evidence: nc-ops-scripts/refill-20260910-2221/.
## HANDOFF-20260912T1721:WEB-611 — точка входа для нового агента
Правила обогащения: [[WEB-449]]. Наблюдение: 12.09.2026 18:21:36 Europe/Dublin / 17:21:36 UTC. Автор: координатор. История выше сохранена; эту запись читать как текущий handoff на указанное время.
**Задача.** SEC-062 [Medium] Повтор sourceId меняет staged bytes при прежней Source/job identity
**Что подтверждено и что остаётся.** 3521 дал bounded source/isolated-PG GO при общем NO-GO;3525 закрыл узкий SOURCE_PG_HANDOFF и CHARGE_COMPLETENESS, сохранив RELEASE_RUNTIME=OPEN. Итог на реальном релизе для этой карточки не подтверждён.
**Как устроено / почему остановилось.** Storage ownership: same sourceId не меняет staged bytes при чужой immutable identity; живой R2/local storage readback/hash, cleanup и concurrent ownership; полученный3521/3528 PG не подменяет живой storage gate.
**Следующая операция.** Общий переход релиза выполнять по [[WEB-515]]. Индивидуальный gate этой карточки: Storage ownership: same sourceId не меняет staged bytes при чужой immutable identity; живой R2/local storage readback/hash, cleanup и concurrent ownership; полученный3521/3528 PG не подменяет живой storage 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/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-611
ТЕКУЩИЙ СРЕЗ ПЕРЕД ОСТАНОВКОЙ — WEB-611 / SEC-062
Задача: SEC-062 [Medium] Повтор sourceId меняет staged bytes при прежней Source/job identity
Пакет 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: WEB-611 / SEC-062; source=GREEN; PG=GREEN executed. Evidence: `a4-web611-atomic`: 6/6; `a4-web611-r2`: 11/11 incl mutation; `a4-web611-3362`: 7/7; all exit 0, no skips. Оставшиеся gates при handoff: R, B, live storage.
ТОЧНЫЙ ОСТАТОК / СЛЕДУЮЩИЙ ИСПОЛНИТЕЛЬ
Живой upload/R2: same sourceId/identity не меняет staged bytes; owner/foreign/replay и readback по SHA. WEB-593 исторический repair остаётся отдельно.
Координатор собирает 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:3313SEC062ACCEPTANCE-REPORT.md:8a2800c231b72ee90306c0d72ea311784ff1db74f1e80f8c4b23b684ea41bf7b
/Users/annakorin/nc-ops-scripts/run-l115b-luna/acceptance-results/a2/3313SEC062ACCEPTANCE-REPORT.md
SHA256 8a2800c231b72ee90306c0d72ea311784ff1db74f1e80f8c4b23b684ea41bf7b
SEC-REPAIR-DISPATCH:3352:WEB-611
/home/ubuntu/waves/3352REPAIRINGEST-REPORT.md
A1-REBOOT-RESUME:20260910:3362
Снимок 2026-09-10 20:40Z. Приёмка 3362 была прервана перезагрузкой A1 без полного комплекта сдачи. Сохранены прежние QA worktrees, незакоммиченные тесты, журналы и бандлы; архив /home/wave/waves/recovery-20260910/before/. Продолжение с прежним UUID сессии через exec resume. Живая tmux-сессия wq-secaccept-ingest подтверждена; UUID сверялся по заголовку журнала. Одновременно до 3 волн, общий MemoryHigh=10G/MemoryMax=12G/SwapMax=1G, Node heap=2048 MB; тяжёлые проверки последовательно. Guards и входные SHA проверены перед возвратом. Это восстановление проверки, нового GO и посадки нет. A1 перезагрузилась: в 20:33:37Z uptime=66.75 s, оба backend paidReady=true/enforce_ready, SIP health=ok.
FILL-SLOTS-2046:3362-062
2026-09-10 20:50Z. Независимая 3362 NO-GO SEC-062: foreign same-source/same-hash запрос отклонён, но cleanup удаляет owner staged bytes. Реальный PG/caller: candidate 6/7, BASE 1/7; failing negative прочитан в raw. Доработка 3375 запущена A2, exact BASE c38baf2731d8dc8bf1cf6b753605d758cfc66524, QA inputs доставлены и SHA/ancestry проверены. Исправить оба direct/stream callers, не терять owner bytes и не оставлять orphan при обычном отказе. Затем независимая приёмка. Посадки нет.
DISPATCH-20260910-3392
На 2026-09-10T21:38:23.260126+00:00: active; A2, волна 3392 acc-ingest-owner-r2. Exact BASE cd1c93527ed2ce827aacbed360d35b32322e8134. Бриф прошёл brief-guard; входы SHA256 и наличие BASE проверены до постановки. Входы /home/ubuntu/waves/inputs/3392-acc-ingest-owner-r2. Отчёт ожидается /home/ubuntu/waves/3392ACCINGESTOWNERR2-REPORT.md. Живой процесс модели подтверждён; возраст журнала 22 с. Source/подготовка и независимая проверка — в объёме брифа; это не посадка, не live/capacity GO и не окончательное закрытие security.
REFILL-2221-RESULTS-WEB-611
Снимок 2026-09-10T22:27:17.204978+00:00
3392 NO-GO: ownership SELECT и удаление staging разнесены; новый ExtractionJob pointer успевает стать владельцем до удаления. Реальный PG/non-superuser test 9/10. Доработка3427.
Волна 3427 a1nc gpt-5.6-sol: active (дочерний процесс подтверждён, журнал 25 с); exact BASE 256a0441e39fcd46557dae0b95f245126dc0e5a5; inputs /home/wave/waves/inputs/3427-ingest-cleanup-atomic
Новой посадки этим тиком нет. Evidence: nc-ops-scripts/refill-20260910-2221/.
CHECKPOINT3488:WEB-611 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-611 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.
HANDOFF-20260912T1721:WEB-611 — автономный 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-611
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:54.214Z · astra-securityBACKLOG64-TRIAGE-20260910-SEC-062 — 2026-09-10T17:07:54.214383+00:00 / IST=2026-09-10T22:37:54.214392+05:30
Новая карточка по возвратам R27.
Actual fileIngestor+sourceWriter: два разных hash при одном sourceId, оба pending; storedhash равен retryhash. Sourceidentity positivePASS, PGrollback10skipped не proof.
База 30000baf9939f94d062b0e216f023a11faa4af3f; CVSS3.1 4.3 Medium — `CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N` (предварительно). Приёмка Нео и current mapping pending. Предложение: Idempotency должен связывать sourceId+scope+contenthash; повтор другими bytes конфликтует до замены stage/job. Одинаковый retry возобновляется.
Исходные отчёты:
- R27: /Users/poolpooly/audit/inbox/3120-B34-01-REPORT.md — SHA256 `030c30fc60ebd6f8f94e03bb54f3fe812027f5d300acf8cb1bece71031afa6b1`
2026-09-10T17:43:11.066Z · coordinator[2026-09-10T17:43:11.002Z] Маршрут изменён по прямому указанию владельца: 3313-sec062-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.474Z · coordinatorACCEPTANCE-3300-3327:3313SEC062ACCEPTANCE-REPORT.md:8a2800c231b72ee90306c0d72ea311784ff1db74f1e80f8c4b23b684ea41bf7b
Независимый отчёт получен координатором. Проверенная база l115a 8d598d69a663cfa8977816d96bb20303e9a9650c; это не повторная проверка l115c.
Исправление требует выполнения; положительной приёмки исправленного кода нет.
SEC-062 / WEB-611 evolution: R27 first recorded that two different hashes could be accepted under one `sourceId` with the same Source/job identity; R27 correctly marked PostgreSQL rollback/visibility and current applicability as unknown and did not claim a live l115a defect. BACKLOG64 triage on 2026-09-10 registered this as a new independent condition, provisional CVSS 4.3 Medium (`CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N`), related to but not a duplicate of WEB-522, WEB-537 and WEB-587. A2 now independently re-ran the reachable actual modules on both historical `30000baf…` and current `8d598d…`; the condition remains confirmed. WEB-587 actor/tenant binding is present, but it is not the SEC-062 fix. No product change was submitted, no release landing was asserted, and no repeated fix was made.
Ticket status after this return: `CONFIRMED_CONDITION`; acceptance `NO-GO`; durable PostgreSQL proof and current release applicability remain `UNKNOWN`; remediation is the hash-bound idempotency/conflict contract above.
References: `/home/ubuntu/waves/inputs/sec049-076/inbox/3120-B34-01-REPORT.md`, `/home/ubuntu/waves/inputs/sec049-076/outbox/BACKLOG64-TRIAGE-20260910.md`, `/home/ubuntu/waves/inputs/sec049-076/evidence/backlog64-20260910/findings28.json`, FIRST CVSS 3.1 equations: https://www.first.org/cvss/v3.1/specification-document#7-1-Base-Metrics-Equations .
2026-09-10T19:23:44.466Z · coordinatorSEC-REPAIR-DISPATCH:3352:WEB-611
Назначено исправление: волна 3352 repair-ingest, A2, Codex gpt-5.6-luna xhigh. Это разработка исправления; отдельная приёмка и посадка ещё впереди. База l115c 1ad52e16b. Входы доставлены и проверены по SHA256: /home/ubuntu/waves/inputs/security-repairs-20260910/ingest.
Бриф: /home/ubuntu/waves/queue/3352-repair-ingest-brief.md
Отчёт: /home/ubuntu/waves/3352REPAIRINGEST-REPORT.md
Предыдущие результаты сохранены; 5 отсутствующих исторических кандидатов ищет координатор. Исполнитель обязан сначала проверить доступный кандидат; при отсутствии исправлять воспроизводимый дефект текущей базы и явно назвать новую реализацию.
Состояние на проверке: active.
2026-09-10T19:54:37.202Z · coordinatorSEC-INDEPENDENT-DISPATCH:3362:WEB-611
2026-09-10T19:54:22.234861+00:00 — Получен исходный repair 3352, коммит c38baf2731d8dc8bf1cf6b753605d758cfc66524. Отчёт автора: a2nc:/home/ubuntu/waves/3352REPAIRINGEST-REPORT.md. Bundle SHA256: 123da4508137e147e42d9b27f77720d013a7f7f254a146fb0a5a77537d5b6713.
Отдельная независимая приёмка 3362 на A1, Codex gpt-5.6-luna xhigh; сессия подтверждена.
Проверка exact candidate с собственными RED/GREEN/negative tests; PostgreSQL там, где требуется durable/race proof. Входы проверены по SHA256, candidate objects импортированы и проверены.
Входы: /home/wave/waves/inputs/security-independent-20260910/3362
Бриф: /home/wave/waves/queue/3362-secaccept-ingest-brief.md
Ожидаемый отчёт: /home/wave/waves/3362INDEPENDENTINGEST-REPORT.md
Source repair GO автора не является независимым GO. Приёмка, интеграция, посадка и runtime proof ещё не получены. Итоговый статус после проверки; эта запись не закрывает находку.
2026-09-10T20:40:46.121Z · coordinatorA1-REBOOT-RESUME:20260910:3362
Снимок 2026-09-10 20:40Z. Приёмка 3362 была прервана перезагрузкой A1 без полного комплекта сдачи. Сохранены прежние QA worktrees, незакоммиченные тесты, журналы и бандлы; архив /home/wave/waves/recovery-20260910/before/. Продолжение с прежним UUID сессии через exec resume. Живая tmux-сессия wq-secaccept-ingest подтверждена; UUID сверялся по заголовку журнала. Одновременно до 3 волн, общий MemoryHigh=10G/MemoryMax=12G/SwapMax=1G, Node heap=2048 MB; тяжёлые проверки последовательно. Guards и входные SHA проверены перед возвратом. Это восстановление проверки, нового GO и посадки нет. A1 перезагрузилась: в 20:33:37Z uptime=66.75 s, оба backend paidReady=true/enforce_ready, SIP health=ok.
2026-09-10T20:50:49.003Z · coordinatorFILL-SLOTS-2046:3362-062
2026-09-10 20:50Z. Независимая 3362 NO-GO SEC-062: foreign same-source/same-hash запрос отклонён, но cleanup удаляет owner staged bytes. Реальный PG/caller: candidate 6/7, BASE 1/7; failing negative прочитан в raw. Доработка 3375 запущена A2, exact BASE c38baf2731d8dc8bf1cf6b753605d758cfc66524, QA inputs доставлены и SHA/ancestry проверены. Исправить оба direct/stream callers, не терять owner bytes и не оставлять orphan при обычном отказе. Затем независимая приёмка. Посадки нет.
2026-09-10T21:39:01.173Z · coordinatorDISPATCH-20260910-3392
На 2026-09-10T21:38:23.260126+00:00: active; A2, волна 3392 acc-ingest-owner-r2. Exact BASE cd1c93527ed2ce827aacbed360d35b32322e8134. Бриф прошёл brief-guard; входы SHA256 и наличие BASE проверены до постановки. Входы /home/ubuntu/waves/inputs/3392-acc-ingest-owner-r2. Отчёт ожидается /home/ubuntu/waves/3392ACCINGESTOWNERR2-REPORT.md. Живой процесс модели подтверждён; возраст журнала 22 с. Source/подготовка и независимая проверка — в объёме брифа; это не посадка, не live/capacity GO и не окончательное закрытие security.
2026-09-10T22:27:17.722Z · coordinatorREFILL-2221-RESULTS-WEB-611
Снимок 2026-09-10T22:27:17.204978+00:00
3392 NO-GO: ownership SELECT и удаление staging разнесены; новый ExtractionJob pointer успевает стать владельцем до удаления. Реальный PG/non-superuser test 9/10. Доработка3427.
Волна 3427 a1nc gpt-5.6-sol: active (дочерний процесс подтверждён, журнал 25 с); exact BASE 256a0441e39fcd46557dae0b95f245126dc0e5a5; inputs /home/wave/waves/inputs/3427-ingest-cleanup-atomic
Новой посадки этим тиком нет. Evidence: nc-ops-scripts/refill-20260910-2221/.
2026-09-11T00:15:52.214Z · coordinatorCHECKPOINT3488:WEB-611 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:55.759Z · coordinatorCHECKPOINT3492:WEB-611 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.295Z · coordinatorSECURITY26-3519-HANDOFF:WEB-611 2026-09-12T11:57:21.509340+00:00
3513 PG ownership barrier failures 5/6 and 9/10 remain original acceptance evidence. Author3519 reports actual SQL/lock/RLS/observer investigation and QA-only repair; final suites 6/6,11/11,7/7 with mutation negative. These are author results, not independent acceptance.
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.275Z · coordinatorTICK-3525-STALE-LIMIT-20260912:WEB-611
Старая отметка provider-limit снята: source/QA приёмка3521 и узкая3525 завершены. Неизменённые доказательства наследуются с точным SHA и указанными skips/границами; это не новые live тесты этой карточки. Посадка, соответствующие runtime/browser/provider gates остаются OPEN. Матрица26 и GATES.md привязаны к WEB-515; done не выставляется.
2026-09-12T18:22:02.182Z · coordinatorSHIFT-STOP-20260912:R2:WEB-611
ТЕКУЩИЙ СРЕЗ ПЕРЕД ОСТАНОВКОЙ — WEB-611 / SEC-062
Задача: SEC-062 [Medium] Повтор sourceId меняет staged bytes при прежней Source/job identity
Пакет 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: WEB-611 / SEC-062; source=GREEN; PG=GREEN executed. Evidence: `a4-web611-atomic`: 6/6; `a4-web611-r2`: 11/11 incl mutation; `a4-web611-3362`: 7/7; all exit 0, no skips. Оставшиеся gates при handoff: R, B, live storage.
ТОЧНЫЙ ОСТАТОК / СЛЕДУЮЩИЙ ИСПОЛНИТЕЛЬ
Живой upload/R2: same sourceId/identity не меняет staged bytes; owner/foreign/replay и readback по SHA. WEB-593 исторический repair остаётся отдельно.
Координатор собирает 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.490Z · coordinator[12.09 22:25Z координатор] ОБОГАЩЕНИЕ 12.09 (3573-enrich-web515-a): SEC-062 — Повтор sourceId меняет staged bytes
Сделано: условие подтверждено на базе (независимая приёмка), исправление прошло независимую source-приёмку и интегрировано (3473→3488).
На проде: да — линия l115g, HEAD 9c8a97629 (BASE), фикс-коммит cf64ed407 в истории; not_live_testable (план QA-харнесса 3557).
Доказано: /home/ubuntu/waves/3352REPAIRINGEST-REPORT.md; /home/ubuntu/waves/3427 (source PG 23/23); /home/wave/waves/3362INDEPENDENTINGEST-REPORT.md; SHIFT-STOP R2 (SOURCE=92f7ae807, ARTIFACT_SHA256=1353e969b); гейты scripts/security/live-gates/run.mjs.
Осталось: Live-гейт невозможен (not_live_testable): закрыть через QA-харнесс 3557.; Точный fix→release mapping принят координатором (SOURCE=92f7ae80 → l115g), но независимой строкой на карточке ещё не зафиксирован.; Полная browser/security приёмка (SHIFT-STOP R2 помечен как неполная)..
Кто следующий: координатор — дождаться гейта, закрыть BILLING_PARITY=NO-GO; статус не меняется (keep).
Ссылки: /home/ubuntu/waves/3352REPAIRINGEST-REPORT.md; /home/ubuntu/waves/3427 (source PG 23/23); /home/wave/waves/3362INDEPENDENTINGEST-REPORT.md; ARTIFACT_SHA256 1353e969b2a7a1a31ac702be361913c41cb53c104db49938a02f5fcd07766668; BASE l115a 8d598d69a663cfa8977816d96bb20303e9a9650c; R27 3120-B34-01-REPORT.md (SHA 030c30fc60ebd6f8f94e03bb54f3fe812027f5d300acf8cb1bece71031afa6b1); SOURCE 92f7ae807869bbaa8ae7ef6ca2ea622675e31af9; candidate c38baf2731d8dc8bf1cf6b753605d758cfc66524; fix cf64ed4074c8349c12ed10a3725797ec2c65ff75; https://bugs.wool2.online/web; integration 3473 HEAD f9c514014fcedccdecc2cf9e7c39a79421b4655b; integration 3488 HEAD d95fd864292c2763e8125de62a08e8fd8c181cde; prod l115g HEAD 9c8a97629b3f7fd8c79faff162eed482670f499d
Отчёт волны: /Users/milamarty/waves/3573ENRICH*-REPORT.md (M4), копия nc-ops-scripts/shift-20260912-resume/wash-20260912/enrich-collected/.
2026-09-13T07:06:01.229Z · coordinator[13.09 07:06Z координатор] ЖИВОЕ ДОКАЗАТЕЛЬСТВО ЕСТЬ → done. SEC-062 подтверждён QA-харнессом на копии прода l115i (13.09 07:1xZ, --execute --allow-qa-mutations, одноразовая фикстура на QA-учётке): mint 201; конфликтующая догрузка с другим размером отвергнута 416 range_total_mismatch; исходные байты целы; readback по настоящему полю хэша совпал с исходным. Харнесс scripts/security/qa-harness/SEC-062.mjs (волны 3597 → 3609 → 3614, refs/waves/3614 = fc1837d8), отчёт /home/ubuntu/qa-harness-3614/out/SEC-062.json. Первая из 12 карточек класса «нельзя проверить живьём», закрытая настоящим прогоном.
2026-09-13T09:05:32.689Z · coordinator[13.09 09:05Z координатор] ОБОГАЩЕНИЕ ПОД НУЛЕВОГО АГЕНТА (канон WEB-449, волна 3639): тело карточки переписано — суть, МЕХАНИКА (файлы/функции/где гейт/корень), хронология с волнами и коммитами, чем доказано живьём с путями к evidence, карта документов по машинам, остаток, и одна команда для перепроверки. Прежний текст триажа 10.09 сохранён в конце тела как «История», плюс бэкап /tmp/secbody-backup-WEB-611.md на M1.
Воркер
не проверен
STOPPED; l115f-r2 installed; finding live gate OPEN
coordinator
движение в панели: неизвестно
Подключиться и смотреть/перехватить руками. Колесо мыши листает; клавишами — Ctrl-b затем [, выход из прокрутки q. Отсоединиться — Ctrl-b затем d:
Прочитать историю панели без подключения — листается и ищется (/ поиск, q выход), воркеру не помешает:
Обновлён
2026-09-13T09:05:32.688Z