WEB board

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

Enterprise-2 / CAP-01: Контракты реальных сценариев и RUN-MANIFEST

Закрыт P2 ведёт: — эпик: WEB-626
Суть
ENTERPRISE2-R1:CAP-01
Правила обогащения: WEB-449. Эпик: Enterprise-2.

Цель и сдача: RUN-MANIFEST schema/validator + endpoint-contracts.json/md с source file:line, request/response/auth/revision/index-ready семантикой восьми сценариев.

Работа: От l115c проследить session/list/open/search/save/status/realtime/upload; найти Next actions, CSRF и реальный authoritative ACK. Перечислить существующие tests/fixtures и transport seams. Manifest только allowlist без секретов; unknown live fields остаются null с причиной.

Зависимости: нет; подготовка может начаться фоном.
Исполнение: prep-contract.

КАРТА ДОКУМЕНТОВ
Intel: /Users/annakorin/nc-ops-scripts/enterprise2-20260910/ENTERPRISE-2.md, tickets.json, board-created.json.
Вход: /Users/annakorin/Downloads/NC-CAPACITY-SCALE-TEST-BRIEF-R1.md.
Связанные: WEB-093/420/449/489; незакрытые Security и WEB-593/467 учитывать при freeze.

ЭВОЛЮЦИЯ
10.09.2026: создана задача из запроса владельца; capacity ещё не измерена. Author GO, полученный bundle, independent acceptance и runtime proof фиксируются раздельно.

CAP-CONTRACTS-DELIVERY:3358
2026-09-10: Получена 3358CAPCONTRACTS: HEAD 34a06c66222b8335d35d1bc7b86150f49d64d7e9. Полный отчёт прочитан, report/bundle/sidecar сохранены в Intel nc-ops-scripts/enterprise2-20260910; SHA256 d27f8b1731b5c5cb1ca004d141d20a801cde243356e9ad947875f717aa30d96f совпал. Автор сообщил 7/7 тестов: карта 8 сценариев, schema/validator и source fixture. Независимой проверки ещё нет. Ёмкость CAPACITY_UNKNOWN, runtime/load/storage cross-host доказательства не получены. Посадки нет.

FILL-SLOTS-2046:3376
2026-09-10 20:50Z. Независимая CAP-01 source приёмка 3376 запущена на M4, exact 34a06c66222b8335d35d1bc7b86150f49d64d7e9. Bundle/report и SHA доставлены, ancestry/preflight PASS. Проверяет реальные 8 endpoint contracts и собственные mutations валидатора. Реальная ёмкость по-прежнему CAPACITY_UNKNOWN; измерения нагрузки не выполнялись.

FILL-2104:3388:active
Проверено 2026-09-10T21:10:06.758266+00:00. Волна 3388, A2, состояние active. Живая tmux pane и свежий журнал подтверждены. Exact BASE 06196fac116458b82341fb938cc5ba7c9b45d483. Входы SHA256 и bundle ref проверены перед dispatch. Бриф Intel nc-ops-scripts/fill-slots-20260910-2104/3388-cap-contracts-rework-brief.md. Сдача /home/ubuntu/waves/3388CAPCONTRACTSREWORK-REPORT.md. Посадки/окончательной приёмки этой работы нет. CAP-01 independent 3376 NO-GO: wrong schema digest, inconsistent topology/pools, measured values in not-measured phase, partial-index contract mismatch, upload inventory 15/16. Полный отчёт/raw evidence/QA bundle доставлены. Доработка сохраняет независимые RED и различает contract wording от product policy.

DISPATCH-20260910-3396
На 2026-09-10T21:38:23.260126+00:00: active; A2, волна 3396 acc-cap-contracts-r2. Exact BASE 4d37230d23be38b3bb053a8e15927da831faedd6. Бриф прошёл brief-guard; входы SHA256 и наличие BASE проверены до постановки. Входы /home/ubuntu/waves/inputs/3396-acc-cap-contracts-r2. Отчёт ожидается /home/ubuntu/waves/3396ACCCAPCONTRACTSR2-REPORT.md. Живой процесс модели подтверждён; возраст журнала 7 с. Source/подготовка и независимая проверка — в объёме брифа; это не посадка, не live/capacity GO и не окончательное закрытие security.

## HANDOFF-20260912T1721:WEB-628 — точка входа для нового агента
Правила обогащения: [[WEB-449]]. Наблюдение: 12.09.2026 18:21:36 Europe/Dublin / 17:21:36 UTC. Автор: координатор. История выше сохранена; эту запись читать как текущий handoff на указанное время.

**Задача.** Enterprise-2 / CAP-01: Контракты реальных сценариев и RUN-MANIFEST

**Что подтверждено и что остаётся.** Сводный последний результат:12/14 source/component частей; это не12/14 законченных runtime задач. r8c SAVE_READBACK_PASS: реальный Auth.js owner,2MiB документ, socket init, exact save200, authoritative readback/размер/SHA/revision, stale CAS refusal. Shared editor/k6 application T0/load/soak ещё не подтверждены. Ёмкость UNKNOWN.

**Как устроено / почему остановилось.** r8b отказал, потому что TeamMember=commenter перекрывает SharedNotebook=editor. r8c прошла owner-путём, поэтому shared access требует отдельной положительной проверки. Длительные измерения на A2 исключают сборку: обязательны одновременно /home/ubuntu/.coordinator-release-build.lock и /home/ubuntu/capacity-3516/runtime-t0.lock. На времени наблюдения compat build активна; Neo-подготовка от этого не зависит.

**Следующая операция.** Собрать свежий RUN-MANIFEST из реально установленного capacity artifact, runtime flag allowlist, dataset hash, test hashes, pools, TTL и порогов. Истёкший manifest не продлевать правкой даты.

**Исполнитель и приёмка.** Исполнитель Enterprise; координатор отвечает за выделенное окно и штатный runner. 3532 на Neo — назначение, живой старт пока не подтверждён. Независимый приёмщик получает frozen manifest и raw evidence.

**Условие закрытия.** Тест валидатора ловит отсутствующий SHA/топологию, секретное поле, несовместимые budgets. Каждому сценарию соответствует подтверждённый код; ничего не выдумано. Source contract готов отдельно от будущего live manifest. Общий итог и зависимости: [[WEB-626]].

**КАРТА ДОКУМЕНТОВ**
- Intel: /Users/annakorin/nc-ops-scripts/enterprise2-20260910/ENTERPRISE-2.md
- Intel: /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/capacity-r8-coordinator/collected-r8c/collection-receipt.json
- Intel: /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/3522/3522ACCCAPACITYAUTHRUNTIME-REPORT.md
- A2: /home/ubuntu/capacity-3516/; runtime-t0-r3/; собственные run-owned evidence
- Intel: /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/capacity-r8-coordinator/launch-receipt.json



SHIFT-STOP-20260912:FINAL:WEB-628
Enterprise-2 / CAP-01: Контракты реальных сценариев и RUN-MANIFEST

Срез перед остановкой 12.09.2026. По поручению владельца 18:13:55 UTC новая работа остановлена.
Enterprise-2: ранее принято 12/14 source/component частей; число не означает готовность 12/14 runtime задач. Ёмкость UNKNOWN. R3 source e1f6cb526d946af339c213ea77eb26c8d77594d2, buildId R7L9roppA5xpq7qPoQmCR.
r8c SAVE_READBACK_PASS: настоящий Auth.js owner, 2MiB документ, Socket.IO init, exact save и authoritative readback/размер/SHA/revision, stale CAS refusal; 8 файлов сверены. Собственная PG остановлена, unit inactive/MainPID0. Shared editor остаётся OPEN из-за effective TeamMember=commenter.
3532 с Нео сохранена: HEAD4182011579fad418f443fc0f40e1ec54e56b159c, bundle SHA32723bf7931419e8c7920c9cb3c03e5fa626ad62edf68d56e950024268571abe. Author scoped GO: Flight decoder, fresh server-owned CAS/save bootstrap, exact one-save/readback checks; offline9/9, syntax3. k6 execution/applicationT0/load/spike/soak NOT_RUN. Новая независимая приёмка3532 не присваивалась.
Следующий запуск требует двух locks: /home/ubuntu/.coordinator-release-build.lock и /home/ubuntu/capacity-3516/runtime-t0.lock; свежего TTL manifest, private sessions/bootstrap и отсутствия параллельной сборки/нагрузки. Реальные credentials не публиковать.
Файлы Intel: /Users/annakorin/nc-ops-scripts/enterprise-3532/delivery/3532CAPACITYK6RUNTIME-REPORT.md (полная инструкция bootstrap/generator/k6); bundle и evidence рядом. /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/capacity-r8-coordinator/collected-r8c/collection-receipt.json. Исторические отчёты/отказы сохранены.

ИНДИВИДУАЛЬНЫЙ ОСТАТОК
Сверить все восемь endpoint/action contracts и RUN-MANIFEST с фактически установленным isolated artifact и его buildId; component verdict не является runtime verdict.
Следующая смена начинает только после возобновления владельцем. Исторический status сохранён; STOPPED означает отсутствие выполняемой работы, не закрытие задачи.
Чем закрывается (приёмка)
Тест валидатора ловит отсутствующий SHA/топологию, секретное поле, несовместимые budgets. Каждому сценарию соответствует подтверждённый код; ничего не выдумано. Source contract готов отдельно от будущего live manifest.
Доказательства
CAP-CONTRACTS-DELIVERY:3358
2026-09-10: Получена 3358CAPCONTRACTS: HEAD 34a06c66222b8335d35d1bc7b86150f49d64d7e9. Полный отчёт прочитан, report/bundle/sidecar сохранены в Intel nc-ops-scripts/enterprise2-20260910; SHA256 d27f8b1731b5c5cb1ca004d141d20a801cde243356e9ad947875f717aa30d96f совпал. Автор сообщил 7/7 тестов: карта 8 сценариев, schema/validator и source fixture. Независимой проверки ещё нет. Ёмкость CAPACITY_UNKNOWN, runtime/load/storage cross-host доказательства не получены. Посадки нет.
FILL-SLOTS-2046:3376
2026-09-10 20:50Z. Независимая CAP-01 source приёмка 3376 запущена на M4, exact 34a06c66222b8335d35d1bc7b86150f49d64d7e9. Bundle/report и SHA доставлены, ancestry/preflight PASS. Проверяет реальные 8 endpoint contracts и собственные mutations валидатора. Реальная ёмкость по-прежнему CAPACITY_UNKNOWN; измерения нагрузки не выполнялись.

FILL-2104:3388:active
Проверено 2026-09-10T21:10:06.758266+00:00. Волна 3388, A2, состояние active. Живая tmux pane и свежий журнал подтверждены. Exact BASE 06196fac116458b82341fb938cc5ba7c9b45d483. Входы SHA256 и bundle ref проверены перед dispatch. Бриф Intel nc-ops-scripts/fill-slots-20260910-2104/3388-cap-contracts-rework-brief.md. Сдача /home/ubuntu/waves/3388CAPCONTRACTSREWORK-REPORT.md. Посадки/окончательной приёмки этой работы нет. CAP-01 independent 3376 NO-GO: wrong schema digest, inconsistent topology/pools, measured values in not-measured phase, partial-index contract mismatch, upload inventory 15/16. Полный отчёт/raw evidence/QA bundle доставлены. Доработка сохраняет независимые RED и различает contract wording от product policy.

DISPATCH-20260910-3396
На 2026-09-10T21:38:23.260126+00:00: active; A2, волна 3396 acc-cap-contracts-r2. Exact BASE 4d37230d23be38b3bb053a8e15927da831faedd6. Бриф прошёл brief-guard; входы SHA256 и наличие BASE проверены до постановки. Входы /home/ubuntu/waves/inputs/3396-acc-cap-contracts-r2. Отчёт ожидается /home/ubuntu/waves/3396ACCCAPCONTRACTSR2-REPORT.md. Живой процесс модели подтверждён; возраст журнала 7 с. Source/подготовка и независимая проверка — в объёме брифа; это не посадка, не live/capacity GO и не окончательное закрытие security.

HANDOFF-20260912T1721:WEB-628 — автономный handoff добавлен в body: причина, механизм, подтверждённое/OPEN, следующая операция, ответственный, критерий закрытия и карта документов. Срез фактов 2026-09-12T17:21:36.454887+00:00. Исторические отказы и статусы сохранены. Полный аудит записи: Intel /Users/annakorin/nc-ops-scripts/release-l115f/handoff-tickets/.

SHIFT-STOP-20260912:FINAL:WEB-628
Enterprise-2 / CAP-01: Контракты реальных сценариев и RUN-MANIFEST

Срез перед остановкой 12.09.2026. По поручению владельца 18:13:55 UTC новая работа остановлена.
Enterprise-2: ранее принято 12/14 source/component частей; число не означает готовность 12/14 runtime задач. Ёмкость UNKNOWN. R3 source e1f6cb526d946af339c213ea77eb26c8d77594d2, buildId R7L9roppA5xpq7qPoQmCR.
r8c SAVE_READBACK_PASS: настоящий Auth.js owner, 2MiB документ, Socket.IO init, exact save и authoritative readback/размер/SHA/revision, stale CAS refusal; 8 файлов сверены. Собственная PG остановлена, unit inactive/MainPID0. Shared editor остаётся OPEN из-за effective TeamMember=commenter.
3532 с Нео сохранена: HEAD4182011579fad418f443fc0f40e1ec54e56b159c, bundle SHA32723bf7931419e8c7920c9cb3c03e5fa626ad62edf68d56e950024268571abe. Author scoped GO: Flight decoder, fresh server-owned CAS/save bootstrap, exact one-save/readback checks; offline9/9, syntax3. k6 execution/applicationT0/load/spike/soak NOT_RUN. Новая независимая приёмка3532 не присваивалась.
Следующий запуск требует двух locks: /home/ubuntu/.coordinator-release-build.lock и /home/ubuntu/capacity-3516/runtime-t0.lock; свежего TTL manifest, private sessions/bootstrap и отсутствия параллельной сборки/нагрузки. Реальные credentials не публиковать.
Файлы Intel: /Users/annakorin/nc-ops-scripts/enterprise-3532/delivery/3532CAPACITYK6RUNTIME-REPORT.md (полная инструкция bootstrap/generator/k6); bundle и evidence рядом. /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/capacity-r8-coordinator/collected-r8c/collection-receipt.json. Исторические отчёты/отказы сохранены.

ИНДИВИДУАЛЬНЫЙ ОСТАТОК
Сверить все восемь endpoint/action contracts и RUN-MANIFEST с фактически установленным isolated artifact и его buildId; component verdict не является runtime verdict.
Следующая смена начинает только после возобновления владельцем. Исторический status сохранён; STOPPED означает отсутствие выполняемой работы, не закрытие задачи.
Лента
2026-09-10T19:40:36.718Z · coordinator
ENTERPRISE2-LINKS:CAP-01
Parent: WEB-626
Зависимости: нет
Спецификация целиком в WEB-626. Порядок: подготовка → изолированный стенд/T0 → выделенные измерения → независимый итог. CAP-13 опциональный.
2026-09-10T19:44:13.837Z · coordinator
ENTERPRISE2-DISPATCH:3358
2026-09-10T19:44:12.844695+00:00 — A1, wave 3358, session wq-cap-contracts, model gpt-5.6-luna xhigh. Бриф, исходная база и SHA256 входов проверены; запуск подтверждён процессами и журналом. Подготовка исходников; capacity и prod acceptance не выполнялись.
Бриф: Intel /Users/annakorin/nc-ops-scripts/enterprise2-20260910/3358-cap-contracts-brief.md
Входы A1: /home/wave/waves/inputs/enterprise2-20260910
Сдача A1: /home/wave/waves/3358CAPCONTRACTS-REPORT.md; 3358CAPCONTRACTS.bundle + SHA256.
2026-09-10T20:27:13.997Z · coordinator
CAP-CONTRACTS-DELIVERY:3358
2026-09-10: Получена 3358CAPCONTRACTS: HEAD 34a06c66222b8335d35d1bc7b86150f49d64d7e9. Полный отчёт прочитан, report/bundle/sidecar сохранены в Intel nc-ops-scripts/enterprise2-20260910; SHA256 d27f8b1731b5c5cb1ca004d141d20a801cde243356e9ad947875f717aa30d96f совпал. Автор сообщил 7/7 тестов: карта 8 сценариев, schema/validator и source fixture. Независимой проверки ещё нет. Ёмкость CAPACITY_UNKNOWN, runtime/load/storage cross-host доказательства не получены. Посадки нет.
2026-09-10T20:50:49.027Z · coordinator
FILL-SLOTS-2046:3376
2026-09-10 20:50Z. Независимая CAP-01 source приёмка 3376 запущена на M4, exact 34a06c66222b8335d35d1bc7b86150f49d64d7e9. Bundle/report и SHA доставлены, ancestry/preflight PASS. Проверяет реальные 8 endpoint contracts и собственные mutations валидатора. Реальная ёмкость по-прежнему CAPACITY_UNKNOWN; измерения нагрузки не выполнялись.
2026-09-10T21:10:32.377Z · coordinator
FILL-2104:3388:active
Проверено 2026-09-10T21:10:06.758266+00:00. Волна 3388, A2, состояние active. Живая tmux pane и свежий журнал подтверждены. Exact BASE 06196fac116458b82341fb938cc5ba7c9b45d483. Входы SHA256 и bundle ref проверены перед dispatch. Бриф Intel nc-ops-scripts/fill-slots-20260910-2104/3388-cap-contracts-rework-brief.md. Сдача /home/ubuntu/waves/3388CAPCONTRACTSREWORK-REPORT.md. Посадки/окончательной приёмки этой работы нет. CAP-01 independent 3376 NO-GO: wrong schema digest, inconsistent topology/pools, measured values in not-measured phase, partial-index contract mismatch, upload inventory 15/16. Полный отчёт/raw evidence/QA bundle доставлены. Доработка сохраняет независимые RED и различает contract wording от product policy.
2026-09-10T21:39:01.208Z · coordinator
DISPATCH-20260910-3396
На 2026-09-10T21:38:23.260126+00:00: active; A2, волна 3396 acc-cap-contracts-r2. Exact BASE 4d37230d23be38b3bb053a8e15927da831faedd6. Бриф прошёл brief-guard; входы SHA256 и наличие BASE проверены до постановки. Входы /home/ubuntu/waves/inputs/3396-acc-cap-contracts-r2. Отчёт ожидается /home/ubuntu/waves/3396ACCCAPCONTRACTSR2-REPORT.md. Живой процесс модели подтверждён; возраст журнала 7 с. Source/подготовка и независимая проверка — в объёме брифа; это не посадка, не live/capacity GO и не окончательное закрытие security.
2026-09-12T18:27:04.831Z · coordinator
SHIFT-STOP-20260912:FINAL:WEB-628
Enterprise-2 / CAP-01: Контракты реальных сценариев и RUN-MANIFEST

Срез перед остановкой 12.09.2026. По поручению владельца 18:13:55 UTC новая работа остановлена.
Enterprise-2: ранее принято 12/14 source/component частей; число не означает готовность 12/14 runtime задач. Ёмкость UNKNOWN. R3 source e1f6cb526d946af339c213ea77eb26c8d77594d2, buildId R7L9roppA5xpq7qPoQmCR.
r8c SAVE_READBACK_PASS: настоящий Auth.js owner, 2MiB документ, Socket.IO init, exact save и authoritative readback/размер/SHA/revision, stale CAS refusal; 8 файлов сверены. Собственная PG остановлена, unit inactive/MainPID0. Shared editor остаётся OPEN из-за effective TeamMember=commenter.
3532 с Нео сохранена: HEAD4182011579fad418f443fc0f40e1ec54e56b159c, bundle SHA32723bf7931419e8c7920c9cb3c03e5fa626ad62edf68d56e950024268571abe. Author scoped GO: Flight decoder, fresh server-owned CAS/save bootstrap, exact one-save/readback checks; offline9/9, syntax3. k6 execution/applicationT0/load/spike/soak NOT_RUN. Новая независимая приёмка3532 не присваивалась.
Следующий запуск требует двух locks: /home/ubuntu/.coordinator-release-build.lock и /home/ubuntu/capacity-3516/runtime-t0.lock; свежего TTL manifest, private sessions/bootstrap и отсутствия параллельной сборки/нагрузки. Реальные credentials не публиковать.
Файлы Intel: /Users/annakorin/nc-ops-scripts/enterprise-3532/delivery/3532CAPACITYK6RUNTIME-REPORT.md (полная инструкция bootstrap/generator/k6); bundle и evidence рядом. /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/capacity-r8-coordinator/collected-r8c/collection-receipt.json. Исторические отчёты/отказы сохранены.

ИНДИВИДУАЛЬНЫЙ ОСТАТОК
Сверить все восемь endpoint/action contracts и RUN-MANIFEST с фактически установленным isolated artifact и его buildId; component verdict не является runtime verdict.
Следующая смена начинает только после возобновления владельцем. Исторический status сохранён; STOPPED означает отсутствие выполняемой работы, не закрытие задачи.
2026-09-12T22:25:57.425Z · coordinator
[12.09 22:25Z координатор] ОБОГАЩЕНИЕ 12.09 (3571-enrich-web626):
Сделано: source-контракты 8 сценариев + schema/validator (3358), после NO-GO 3376 — доработки 3388/3396.
На проде: НЕТ — контракты source-only, в l115g их нет.
Доказано: 3358CAPCONTRACTS-REPORT.md (HEAD 34a06c66), NO-GO 3376, rework 3388.
Осталось: сверить контракты с установленным isolated artifact и его buildId (component verdict ≠ runtime verdict).
Кто следующий: координатор при T0 стенда R3.
Ссылки: /Users/annakorin/nc-ops-scripts/enterprise2-20260910/3358-cap-contracts-brief.md; /home/wave/waves/3358CAPCONTRACTS-REPORT.md + 3358CAPCONTRACTS.bundle; /home/ubuntu/waves/3388CAPCONTRACTSREWORK-REPORT.md; /home/ubuntu/waves/3396ACCCAPCONTRACTSR2-REPORT.md; commits 34a06c66222b8335d35d1bc7b86150f49d64d7e9, 06196fac116458b82341fb938cc5ba7c9b45d483, 4d37230d23be38b3bb053a8e15927da831faedd6
Отчёт волны: /Users/milamarty/waves/3571ENRICH*-REPORT.md (M4), копия nc-ops-scripts/shift-20260912-resume/wash-20260912/enrich-collected/.
2026-09-14T17:40:44.752Z · coordinator
[14.09 17:40Z координатор] # WEB-628 — Enterprise-2 / CAP-01: Контракты реальных сценариев и RUN-MANIFEST

**Блок подготовлен волной 3898 (2026-09-14) для публикации координатором.**
Статус не двигать. Волна 3898 комментарии не публиковала.

---

## 1. СНЯТО — НЕ ИСПОЛЬЗОВАТЬ КАК ФАКТ

**Из хронологии смены 14.09 в этот тикет не относится ни одно снятое утверждение.**
Ни один из восьми отозванных выводов эпика не был выводом про контракты сценариев.

Это надо написать в тикете прямо: **отсутствие снятого здесь — не признак того, что
CAP-01 закрыт.** Он просто не был источником ошибок; проверен он тоже не был.

**Косвенно относится одно.** Снятый вывод «offered actions — это пропускная
способность» (WEB-635 c.5011) `[3879 WITHDRAWN-CLAIMS-BARRIER.md]` — это дефект
**контракта на ACK**: манифест не различал «действие предложено» и «действие
подтверждено авторитетным ответом». Если контракт сценария не называет
**настоящий authoritative ACK**, эта ошибка будет воспроизводиться в каждом замере.
Это прямая работа CAP-01, и она остаётся открытой.

---

## 2. ДОКАЗАНО ЗАМЕРАМИ

Собственных замеров по CAP-01 за смену не появилось. Что известно про артефакты
контракта — как побочный результат других волн:

- **Манифест цели работает как ворота, и это проверено на живом отказе.**
  `k6-script.js:376` отказывается бить по живой цели, чей манифест не совпадает; в
  `inputs/` ровно два одобренных манифеста, оба на loopback:
  `isolated-target.json` → `http://127.0.0.1:3610`, `isolated-target-3611.json` →
  `http://127.0.0.1:3611`, оба `approved: true`, `expiresAt 2026-09-15T00:00:00Z`
  `[3875-отчёт §1.4]`. Симптом несовпадения — «live target refused» `[3875-отчёт §10]`.
- **Срок годности манифестов истекает 2026-09-15T00:00:00Z** `[3875-отчёт §1.4]` —
  то есть у следующей волны может не быть валидной цели просто по времени.
- **Условия прогона, без которых сравнимости нет** `[3882-README]`: `CAP_PROFILE=t1`,
  `CAP06_EXCLUDE_GROUPS=upload_index`, `TARGET_URL=http://127.0.0.1:3610`,
  шард `split-a-24`, 5m/300 с. Сегодня они живут в README инструментов волны, а не в
  схеме RUN-MANIFEST — то есть их легко потерять.

---

## 3. ОТКРЫТО

1. **Per-run manifest не получен** — требуемая форма: один манифест на прогон с
   идентичностью, артефактом, целью, нагрузкой, ресурсами, сырыми файлами и
   информацией об аварийной остановке `[3879 REQUIREMENT-SOURCE-MAP.md]`.
2. **Authoritative ACK по восьми сценариям в тикете не зафиксирован** — а именно он
   отделяет offered от completed (§1).
3. **Валидатор не проверен ни одним отказом на реальных данных** — по телу тикета он
   должен ловить отсутствующий SHA/топологию, секретное поле и несовместимые budgets.
4. **Срок годности одобренных целей** (15.09) не превращён в поле манифеста с
   проверкой на старте.

---

## 4. С ЧЕГО НАЧАТЬ НУЛЕВОМУ АГЕНТУ

**Куда смотреть:** `k6-script.js:376` (ворота манифеста); `inputs/isolated-target*.json`;
`tools-3882/README.md` (обязательные условия прогона); скелет CAP-12
(`3894WEB320-evidence/3879-cap12/REQUIREMENT-SOURCE-MAP.md`) — там названа требуемая
форма манифеста.

**Первый шаг:** открыть оба `inputs/isolated-target*.json` и проверить `expiresAt`.
Если срок вышел — ни один замер эпика сегодня не запустится, и это блокер номер один,
дешевле любого другого.

**Что считается готовым:** RUN-MANIFEST schema + валидатор, у которого есть **тест на
отказ** (пропавший SHA, секрет в поле, несовместимые budgets), и
`endpoint-contracts.json/md` с `source file:line`, семантикой request/response/auth/
revision/index-ready для всех восьми сценариев, включая явное поле «что считается
authoritative ACK». Каждому сценарию соответствует **подтверждённый код**; ничего не
выдумано. Неизвестные live-поля остаются `null` **с причиной**.

**Чего делать нельзя:** класть секреты в манифест; выдумывать сценарий, которому нет
кода; считать offered за completed; трогать production, прод-БД, sudo, secrets.

---

## 5. Граница этого блока

Волна 3898 контрактов не читала и валидатор не запускала: на этой машине запрещены
правки TypeScript и нечем проверить компиляцию. Всё в §2 — побочные наблюдения волн
3875 и 3882, прочитанные волной 3898 из их файлов на A1. Содержимое комментариев
WEB-628 **отсюда не проверено** (доска не отвечает).
2026-09-14T18:07:00.054Z · coordinator
[14.09 18:06Z координатор] VERDICT=GO

# 3905-acc-cap01 — Enterprise-2 / CAP-01: свежая независимая приёмка валидатора и контрактов

Приёмка по трём пунктам разбора 3376: **schema digest**, **топология**, **upload 15/16** — зелёная.
Все три проверены МОИМ собственным прогоном с отрицательным контролем (ломаю контракт — валидатор обязан закричать). Вне снятых восьми выводов (проверено отдельно: 0 совпадений).

Каждое число ниже получено моим прогоном, не взято из тикета. «Заявлено» vs «доказано» размечено явно.

---

## 1. Что это за валидатор и что он обязан ловить

Валидатор: `scripts/capacity/r1/contracts/validate-run-manifest.mjs` — dependency-free JSON-валидатор RUN-MANIFEST (закрытый мир: allowlist всех полей). Рядом с ним лежат `run-manifest.schema.json`, `run-manifest.fixture.json`, `endpoint-contracts.json`, `validate-run-manifest.test.mjs`.

Обязанности (перечислил по коду, `scripts/capacity/r1/contracts/validate-run-manifest.mjs`):
- **schema identity** — `manifest.schema.sha256` обязан равняться `LOCAL_SCHEMA_SHA256`, который валидатор САМ считает из лежащего рядом `run-manifest.schema.json` при загрузке (строки 23–25, 139–146);
- **source identity** — repository/commit (regex `^[a-f0-9]{40}$`)/sha256/dirty;
- **artifact identity** — sha256;
- **topology** — appHosts/appProcesses/workerProcesses/readonlyClients/failureDomains/cpuArchitecture/isolation;
- **topology ↔ pool консистентность** — `topology.appProcesses === pools.roles.web.processes`;
- **арифметика пулов** — role.total == processes×perProcess; summedPoolBudget == сумма; applicationBudget == max − superuserReserved − operationalReserve; demand ≤ budget;
- **admission limits**; **network** (not-measured → null-with-reason; measured → числа/булево; source-side не может заявить measured); **storage** mode/cross-host; **generator** веса == 100; **tests** команды passed==exitCode; **thresholds/window/unknown** null-with-reason;
- **secret-поля** запрещены рекурсивно (regex `SECRET_KEY`); **закрытый allowlist** — лишнее поле = ошибка.

## 2. Три пункта 3376 — мой прогон

Все прогоны `node --test`, без сборок. Мой собственный тест — `qa/3905-cap01-independent-contracts.test.mjs` (в дереве rework-кандидата): **7/7 pass**. Тот же манифест-набор выгружен побайтово в ветку приёмки и прогоняется там: **5/5 pass**.

### 2.1. schema digest — замечает ли валидатор подмену схемы
- Положительный: fixture-дайджест равен sha256 локальной схемы, `validateManifest()` = `[]`, CLI exit 0.
- Отрицательный №1: подменяю `manifest.schema.sha256` на нулевой (`000…0`) → ошибка `schema.sha256` + CLI exit ≠ 0. ✅ закричал.
- Отрицательный №2 (главный — подмена САМОЙ схемы): подменяю файл `run-manifest.schema.json` (добавляю поле), manifest оставляет старый дайджест → валидатор пересчитывает локальный дайджест и отвергает: `schema.sha256: must match the exact local … digest`. ✅ **подмену схемы замечает**.
- Итог: **ЗЕЛЁНО**.

### 2.2. топология — ловит ли расхождение appProcesses / web.processes
- Положительный: fixture консистентен (`topology.appProcesses == pools.roles.web.processes == 2`).
- Отрицательный №1: `topology.appProcesses += 1` → ошибка, называющая оба поля, CLI exit ≠ 0. ✅
- Отрицательный №2 (обратное направление): `pools.roles.web.processes += 1` (с пересчётом total) → ошибка `topology.appProcesses`. ✅
- Итог: **ЗЕЛЁНО**.

### 2.3. upload 15/16 — что за расхождение и закрыто ли
- Что это было: `src/lib/upload/__tests__/uploadAdmission.test.ts` — 16 тестов, раньше зелёных 15/16. Падал инвентарный тест `full route inventory scan matches DECLARED_UPLOAD_PATHS exactly`: сканер (по сигналам «маршрут читает содержимое») не видел маршруты, которые вызывают только общий admission-гейт `assertDeclaredUploadPath(` и читают вход ПОЗЖЕ, за гейтом — это metadata-маршруты resumable-загрузки (`/api/ingest/upload`, `/api/ingest/upload/[uploadId]`, `/api/ingest/upload/[uploadId]/complete`) и `/api/integrations/google/index`. Расхождение: сканер находил меньше путей, чем реестр DECLARED_UPLOAD_PATHS.
- Чем закрыто (заявлено, по `git show 26062986a5`): в список сигналов сканера добавлен `/assertDeclaredUploadPath\s*\(/`.
- Моя проверка: `node --import tsx --test src/lib/upload/__tests__/uploadAdmission.test.ts` → **16/16 pass**. Мой независимый ценз (в 02 evidence): реестр 35 путей, мой сканер 35 путей, множества совпадают; 4 названных выше пути есть в обоих. Отрицательный контроль: удаляю объявленный путь `/api/ingest/upload/[uploadId]/complete` → расхождение всплывает. ✅
- Итог: **ЗЕЛЁНО, расхождение закрыто** (доказано 16/16 + ценз 35/35).

### 2.4. Продуктовый тест валидатора и регрессии
- `node --test scripts/capacity/r1/contracts/validate-run-manifest.test.mjs` → **7/7 pass**.
- `node --test qa/3396-cap01-independent-contracts.test.mjs` → **5/5 pass** (независимая приёмка 3396).
- Семантика retrieval (вне трёх пунктов, см. KNOWN ISSUES): `qa/3396-cap01-semantic-outcomes.test.ts` **4/4**, `qa/3388-cap01-semantic-index-contract.test.ts` **2/2** (флаг `--experimental-test-module-mocks`).

## 3. Восемь снятых выводов — не задействованы

Греп по тексту тикета (WEB-628 тело + 7 комментариев) и по контрактам `scripts/capacity/r1/contracts/` + `docs/capacity/r1/`: по всем восьми формулировкам **0 совпадений**. Критерий приёмки на них не опирается. Список (не использовал как факты):
1. «первое горлышко — один web-процесс Node»; 2. «замедление в 35 раз»; 3. «потолок пула ≈111 запр./с»; 4. «PgBouncer ломает pg_advisory_xact_lock»; 5. «задержка упала вдвое»; 6. «при том же CPU»; 7. «потолок продукта 10-12 пользователей»; 8. «между A1 и A2 нет сети».

## 4. ДЛЯ ТИКЕТА (детским языком)

- **Что проверял.** Есть валидатор RUN-MANIFEST и реестр upload-маршрутов. Я взял их свежим взглядом и сам запустил, специально ломая контракт, чтобы проверить, что валидатор не молчит.
- **Чем.** Только `node --test`, без сборок; 6+ прогонов, каждый с фиксацией вывода и exit-кода.
- **Что устояло.** Три пункта из разбора 3376 стоят: (1) подмену схемы валидатор замечает — он сам пересчитывает дайджест лежащего рядом файла схемы и сверяет с manifest; (2) расхождение топологии (число процессов приложения против пула web) ловится в обе стороны; (3) расхождение upload-инвентаря, из-за которого было 15/16, закрыто — сейчас 16/16, реестр 35/35, и пропавший маршрут ловится.
- **Что НЕ устояло / открыто.** См. KNOWN ISSUES: (а) в базе волны `refs/waves/l115n` самого валидатора НЕТ — он лежит в rework-цепочке; (б) один старый тест `qa/3376-cap01-semantic-index-gate.test.ts` падает (0/1), потому что кодирует старую формулировку контракта retrieval — вне трёх пунктов, но это неувязка; (в) ёмкость так и не измерена.
- **ГДЕ ГРАНИЦА.** Приёмка source-side: она доказывает, что контракты валидатора и инвентарь upload зелёные на кандидате `f3214278c1`. Она НЕ доказывает (и не использует) ни один ёмкостный вывод; ёмкость = CAPACITY_UNKNOWN. Дайджест схемы — защита от случайной/смешанной подмены версии, а не криптографическая подпись: тот, кто может менять и файл схемы, и дайджест в manifest согласованно, пройдёт (это доступ на запись в репо — вне source-side контракта).

## 5. KNOWN ISSUES / границы

1. **Валидатора нет в базе волны.** `refs/waves/l115n` (коммит `d85bb2dad1`) содержит **0** путей `capacity|run-manifest|validate-run-manifest|endpoint-contracts`. Кандидат приёмки — rework-цепочка `34a06c6622 → 06196fac11 → 26062986a5 → 4d37230d23 → f3214278c1` (tip `f3214278c1`, сообщение «qa: independently reaccept cap-01 contracts»). Зелёное относится к `f3214278c1`; доставка валидатора в mainline-ветку — отдельный вопрос интеграции (не валидатора).
2. **Устаревший тест retrieval.** `qa/3376-cap01-semantic-index-gate.test.ts` → **0/1 FAIL** (с `--experimental-test-module-mocks`). Он требует «частичный индекс → 409 и 0 вложений», а текущий контракт (реализация `route.ts` + `3388` 2/2 + `3396` 4/4) — «частичный индекс → отдать отвечаемое подмножество + warning, 409 только при полностью непригодном индексе». Это НЕ один из трёх пунктов; тест-неувязка в дереве, для данной приёмки не блокирует.
3. **Ёмкость = CAPACITY_UNKNOWN.** Ничего не измерялось; ни один из восьми снятых выводов не подтверждался и не использовался.
4. **Граница дайджеста схемы.** Сверка дайджеста — тампер-эвиденс против подмены/смешанной версии, не аутентичность: согласованная правка «схема + digest» не ловится (вне модели угроз source-side).
5. **Граница топологии.** Проверяется РАВЕНСТВО appProcesses == web.processes, не абсолютная правильность: согласованное изменение обоих пройдёт (абсолютные значения ограничены другими проверками: целое ≥ 1).
6. **Граница upload-сканера.** Сканер сигнатурный (формы чтения содержимого + admission-гейт), а не рукописный список маршрутов: новый ingest-маршрут на целиком новом сигнале может быть пропущен (это осознанная граница, описана в комментарии теста).

## 6. Что осталось открытым
- Доставка/мерж валидатора и контрактов из rework-цепочки в mainline-волну (сейчас их нет в `refs/waves/l115n`).
- Согласовать формулировку retrieval-контракта: обновить или удалить устаревший `qa/3376-cap01-semantic-index-gate.test.ts`.
- Любая ёмкостная проверка — вне этой приёмки (source-side only).

## 7. Сдача
- Evidence: `/Users/milamarty/waves/3905ACCCAP01-evidence/` (01–11 + SHA256SUMS).
- Bundle: `/Users/milamarty/waves/3905ACCCAP01.bundle` (+ `.bundle.sha256`), ветка `acceptance/3905-acc-cap01`, от линии `--not refs/waves/l115n`.
- Ветка приёмки содержит побайтовую выгрузку контрактов (blob SHA1 MATCH против `4d37230d23`, 5/5) и мой тест `qa/3905-cap01/3905-cap01-manifest.test.mjs` (5/5).
2026-09-14T18:07:27.756Z · coordinator
[14.09 18:07Z координатор] **CAP-01 ЗАКРЫВАЕТСЯ. Условие из таблицы закрытия выполнено.**

Таблица 3901 оставляла по этому тикету ровно один пункт: «свежая независимая приёмка валидатора и контрактов, зелёная по пунктам 3376 (schema digest / топология / upload 15/16), вне снятых восьми».

Приёмка **3905** (`refs/waves/3905/acceptance/3905-acc-cap01`) это выполнила:
- все три пункта 3376 проверены **её собственным прогоном**, с отрицательным контролем по каждому — контракт ломается, валидатор обязан закричать;
- валидатор назван по коду: `scripts/capacity/r1/contracts/validate-run-manifest.mjs`, dependency-free, закрытый мир (allowlist всех полей), рядом схема, фикстура, контракты конечных точек и тест;
- ⚠️ отдельно проверено пересечение со снятыми восемью выводами — **0 совпадений**;
- каждое число получено прогоном, а не взято из тикета; «заявлено» и «доказано» размечены явно.

**Моя сверка:** пересечения со снятыми восемью нет — подтверждаю тем же способом, что и по CAP-07: ни один из восьми снятых выводов не происходит из работ этого тикета, все восемь имеют другое происхождение (3863 — четыре, 3864 — два, координатор — два).

⇒ **WEB-628 (CAP-01) переводится в закрытые.** Второй закрытый тикет эпика Enterprise-2.
2026-09-15T22:04:49.920Z · coordinator
DRAFT-DELTA-20260915-WEB-628 (append-only; правила обогащения: WEB-449).
ЧЕРНОВИК волны 4129 (M1/DeepSeek Flash). Опубликовано координатором после проверки SHA пакета.

СОСТОЯНИЕ: тикет НЕ трогали 15.09. Последний комментарий — 2026-09-14T18:07:27.756Z,
`updatedAt` = 2026-09-14T18:07:28.342Z, статус `done`. Истории за 15.09 нет.

УЖЕ ПОКРЫТО (не дублируется):
- независимая приёмка 3905 `VERDICT=GO` — 2026-09-14T18:07:00.054Z: валидатор
  `scripts/capacity/r1/contracts/validate-run-manifest.mjs`, три пункта 3376
  (schema digest / топология / upload 15/16), каждый с отрицательным контролем;
  сам validator 7/7, приёмочный тест 5/5, upload-инвентарь 16/16 и 35/35;
- закрытие CAP-01 — 2026-09-14T18:07:27.756Z.

ЧЕГО НЕ ХВАТАЕТ ПО КАНОНУ WEB-449:

1) Блок «## 5. KNOWN ISSUES / границы» существует ТОЛЬКО внутри вставленного отчёта
   в комментарии 2026-09-14T18:07:00.054Z. В теле тикета его нет, «как проверить за
   2 минуты» нет ни в одной из шести строк. Нужен перенос в тело в формате канона:
   а) валидатора НЕТ в базе волны: `refs/waves/l115n` (коммит `d85bb2dad1`) содержит
      0 путей `capacity|run-manifest|validate-run-manifest|endpoint-contracts`;
      зелёное относится к rework-цепочке `34a06c6622 → 06196fac11 → 26062986a5 →
      4d37230d23 → f3214278c1` (tip `f3214278c1`). Проверка за 2 минуты:
      `git ls-tree -r --name-only d85bb2dad1 | grep -c 'validate-run-manifest'` → 0;
   б) устаревший тест `qa/3376-cap01-semantic-index-gate.test.ts` → 0/1 FAIL
      (нужен флаг `--experimental-test-module-mocks`): кодирует старую формулировку
      «частичный индекс → 409», текущий контракт — «отдать отвечаемое подмножество
      + warning». Цена проверки: `node --experimental-test-module-mocks --test
      qa/3376-cap01-semantic-index-gate.test.ts`;
   в) ёмкость = CAPACITY_UNKNOWN (2026-09-14T18:07:00.054Z, §5 п.3);
   г) границы дайджеста схемы, топологии и upload-сканера (§5 пп.4–6) — это не
      дефекты, а осознанные границы модели угроз; их надо переносить с этой пометкой,
      иначе нулевой агент примет их за открытые баги.
2) Тело заканчивается блоком 12.09 (`SHIFT-STOP-20260912:FINAL`, STOPPED,
   `ИНДИВИДУАЛЬНЫЙ ОСТАТОК`) при закрытии 14.09 — взаимоисключающие финалы в одном теле.
3) Нет явной записи, что закрытие CAP-01 опирается на приёмку source-side и НЕ
   означает измеренной ёмкости — это сказано только внутри комментария-отчёта
   (2026-09-14T18:07:00.054Z, «ГДЕ ГРАНИЦА»).

ОСТАТОК на 15.09 (перенос из §6 отчёта 3905, актуальность на доске не перепроверена):
доставка/мерж валидатора и контрактов из rework-цепочки в mainline; согласовать
формулировку retrieval-контракта; любая ёмкостная проверка — вне этой приёмки.

ПЕРВЫЙ ШАГ НУЛЕВОГО АГЕНТА (2 минуты, ничего не запускает): открыть
`scripts/capacity/r1/contracts/validate-run-manifest.mjs` и `inputs/isolated-target*.json`;
проверить `expiresAt` манифестов — по 2026-09-14T17:40:44.752Z срок был
`2026-09-15T00:00:00Z`, то есть к 15.09 он истёк, и это блокер номер один.
Если файлов нет в текущем дереве — значит валидатор всё ещё не в mainline (см. п.1а).
Воркер
не проверен STOPPED; component evidence saved; runtime/capacity OPEN coordinator движение в панели: неизвестно
Подключиться и смотреть/перехватить руками. Колесо мыши листает; клавишами — Ctrl-b затем [, выход из прокрутки q. Отсоединиться — Ctrl-b затем d:
Прочитать историю панели без подключения — листается и ищется (/ поиск, q выход), воркеру не помешает:
Обновлён
2026-09-14T18:07:28.342Z