WEB board

всеканоны и докиворкеры↗ iOS↗ Легаси
WEB-654 · Задача · Инфраструктура · web

P2 [bus factor]: проверить шаги F5/F6/F8 на ЧИСТОМ операторском сеансе (печать имён переменных ничего не доказывает)

Закрыт P2 ведёт: — эпик: WEB-641
Суть
Правила обогащения: WEB-449. Parent WEB-641. Заведено 13.09 (подзадача BF-FIX-6).

## Суть
Шаги F5/F6/F8 считаются рабочими на основании того, что команда печатает имена переменных и <redacted> вместо значений. Это не доказывает, что значения существуют, доступны новому оператору и работают. Запуск через sudo -u сам по себе не подгружает окружение оператора.

## Что сделать
Прогнать F5/F6/F8 в чистом сеансе (новый пользователь/окружение, без унаследованных переменных), зафиксировать, что именно требуется подгрузить, и переписать шаги так, чтобы они работали у человека, который только что получил доступ. Значения секретов в отчёт не попадают.

## Приёмка
Протокол чистого сеанса: команда → результат → чего не хватило → исправленный шаг.
Лента
2026-09-13T09:55:56.681Z · coordinator
[13.09 09:55Z координатор] Взято в работу 13.09: волна 3644 (Codex Luna, A1) — шаги F5/F6/F8 проверяются в чистом операторском сеансе; в отчёте будет сказано, что именно надо подгрузить новому оператору. Значения секретов не печатаются.
2026-09-13T10:21:10.686Z · coordinator
[13.09 10:21Z координатор] Закрыто волной 3644 (refs/waves/3644 = 2c8deeade): шаги F5/F6/F8 проверены в чистом операторском сеансе и переписаны так, чтобы работали у человека, который только что получил доступ. В отчёте перечислено, что именно надо подгрузить; значения секретов не печатаются. Раньше эти шаги «доказывались» печатью имён переменных и слова redacted — это не доказывало ничего.
2026-09-15T11:42:43.353Z · coordinator
[15.09 11:42Z координатор] [15.09 11:45Z координатор] Post-QA 3987: VERDICT=REOPEN. Report и 23/23 evidence SHA256 проверены; commit 3644 действительно входит в l115o, но старое доказательство пропустило ложный PASS.

На текущей l115o F6 возвращает exit 0 при пустом `STANDBY_HOST` и при нечитаемом `STANDBY_PASSWORD_FILE`. Ранние проверки разделены `;` и не останавливают выполнение, а последующий успешный synthetic standby probe перекрывает их ошибку.

Это кодовая дыра, а не отсутствие live-секретов. Точный следующий шаг: сделать F6 fail-fast/short-circuit, добавить отрицательные тесты для пустого host и нечитаемого password file и повторить всю synthetic matrix. Починка 3992 уже поставлена на A1/Luna; после авторского GO нужна независимая приёмка.
2026-09-15T11:58:38.162Z · coordinator
[15.09 11:58Z координатор] [15.09 11:56Z координатор] Авторская починка 3992: VERDICT=GO, пакет проверен полностью.

Candidate `87a09531c4f8d8c9d94ba95644ee52ba2fd569af`, prerequisite ровно l115o `68e25d8df`. Bundle/sidecar и evidence 11/11 SHA256 прошли; ref закреплён в A1 mirror как `refs/waves/3992/fix/3992-web654-f6-failfast`.

На baseline пустой `STANDBY_HOST` и нечитаемый password-file ложно давали exit 0. На candidate пустой host, нечитаемый/пустой password-file отказывают до вызова `psql`; неверный ответ `not-t` тоже отвергается. Валидный synthetic standby проходит. F6 6/6, Section-F 2/2, BF-06 17/17; diff только строка F6 runbook и узкий regression test.

Статус остаётся `in_progress`: это авторский GO, не независимая машина; candidate ещё не посажен и post-QA не выполнен. Следующий шаг — независимая приёмка 3992 на другой машине, затем включение в следующую линию и post-QA.
2026-09-15T12:20:21.451Z · coordinator
[15.09 12:20Z координатор] Независимая приёмка 4000: VERDICT=GO.

Candidate `87a09531c4f8d8c9d94ba95644ee52ba2fd569af` проверен на exact l115o. На базе воспроизведены оба ложных успеха F6: пустой `STANDBY_HOST` и нечитаемый password-file давали rc=0 и доходили до psql-double. На candidate пустой host и отсутствующий/нечитаемый/пустой password-file отказывают nonzero ДО probe; валидный ответ `t` проходит, `not-t` отказывается.

Focused: WEB-654 6/6, Section-F 2/2, BF-06 17/17. Evidence 9/9 SHA256. F5/F8 byte-identical. Full factory остаётся 153 PASS / 2 известных unrelated FAIL / 3 opt-in SKIP.

Тикет переводится в review: candidate независимо принят для следующей линии, но закрывать только после интеграции, посадки и post-QA исполняемой F6.
2026-09-15T22:16:59.027Z · coordinator
ENRICH-4135-WEB-654

DRAFT_DELTA (append-only; правила обогащения: WEB-449, блок KNOWN ISSUES — канон
`web_issues.body id=WEB-449`, дамп `_extract/WEB-449.canon.txt` строки 85–86).
Волна 4135, M1/DeepSeek Flash 4.1, read-only аудит.
Источник: `/Users/poolpooly/waves-ds/4130/4130ENRICHBUSFACTOR-REPORT.md` + `_extract/`.

## 1. UTC / КТО / ВЕРДИКТ и точный статус

Тело датировано 13.09 (`updated=2026-09-15T12:20:22.443Z`) и вердикта не несёт. Живая
цепочка вердиктов лежит только в комментариях:

| UTC | Что |
|---|---|
| `2026-09-15T11:42:43.353Z` | post-QA 3987: **`VERDICT=REOPEN`** |
| `2026-09-15T11:58:38.162Z` | авторский GO 3992, кандидат `87a09531c4f8d8c9d94ba95644ee52ba2fd569af`, предусловие — ровно l115o `68e25d8df` |
| `2026-09-15T12:20:21.451Z` | независимая приёмка 4000: **`VERDICT=GO`**, статус → `review` |

Точный статус в живой доске: **`review`** (5 комментариев, последний —
`2026-09-15T12:20:21.451Z`). Формулировка закрытия дословна: «закрывать только после
интеграции, посадки и post-QA исполняемой F6».

## 2. МЕХАНИЗМ / КОРЕНЬ

Корень (тело, «Суть»): шаги F5/F6/F8 считаются рабочими на основании того, что команда
печатает **имена переменных и `<redacted>`** вместо значений. Это не доказывает, что
значения существуют, доступны новому оператору и работают. «Запуск через `sudo -u` сам
по себе не подгружает окружение оператора».

**Устройство дефекта**, добытое 15.09 (не в теле): на текущей l115o **F6 возвращает exit 0
при пустом `STANDBY_HOST` и при нечитаемом `STANDBY_PASSWORD_FILE`. Ранние проверки
разделены `;` и не останавливают выполнение, а последующий успешный synthetic standby probe
перекрывает их ошибку** (`2026-09-15T11:42:43.353Z`). Ключевая формулировка: «Это **кодовая
дыра**, а не отсутствие live-секретов».

**Устройство исправления** (кандидат `87a09531c4f8d8c9d94ba95644ee52ba2fd569af`,
`2026-09-15T11:58:38.162Z`): F6 сделан fail-fast/short-circuit — пустой host,
нечитаемый/пустой password-file отказывают **до вызова `psql`**; неверный ответ `not-t`
тоже отвергается; валидный synthetic standby проходит. Diff — только строка F6 ранбука
и узкий regression test. F5/F8 остались **byte-identical** (`2026-09-15T12:20:21.451Z`).

Правило одной папки: `2026-09-14T20:49:32.326Z` — «мне нужна одна единственная папка,
а не куча мест».

## 3. КАРТА ДОКУМЕНТОВ (точные пути)

Тело карты не содержит вовсе (только «Правила обогащения: WEB-449. Parent WEB-641.»).
Действующие пути:

- Заведение: 13.09, подзадача **BF-FIX-6**, волна **3644** (`refs/waves/3644` = `2c8deeade`)
  — `2026-09-13T09:55:56.681Z`, `2026-09-13T10:21:10.686Z`
- Post-QA, вскрывший дефект: **3987** (`2026-09-15T11:42:43.353Z`)
- Кандидат-починка: **3992**, `87a09531c4f8d8c9d94ba95644ee52ba2fd569af`, ref закреплён
  в A1 mirror как `refs/waves/3992/fix/3992-web654-f6-failfast`
  (`2026-09-15T11:58:38.162Z`)
- Независимая приёмка: **4000** (`2026-09-15T12:20:21.451Z`)
- Отчёт этой волны: `/Users/poolpooly/waves-ds/4135/4135ENRICHBUSFACTORCOMMENTS-REPORT.md`

## 4. ЭВОЛЮЦИЯ и отозванные утверждения

1. **Закрытие 13.09 отозвано post-QA.** `2026-09-13T10:21:10.686Z`: «Закрыто волной 3644…
   шаги F5/F6/F8 проверены в чистом операторском сеансе и переписаны так, чтобы работали
   у человека, который только что получил доступ… Раньше эти шаги «доказывались» печатью
   имён переменных и слова redacted — это не доказывало ничего».
   `2026-09-15T11:42:43.353Z` — **`VERDICT=REOPEN`**: «commit 3644 действительно входит
   в l115o, но **старое доказательство пропустило ложный PASS**».
2. **Точная граница отзыва:** «Это кодовая дыра, а не отсутствие live-секретов» (там же).
   То есть возврат к «просто не было боевых секретов» неверен — дефект воспроизводится
   на коде.
3. **Починка и её граница.** `2026-09-15T11:58:38.162Z`: «Статус остаётся `in_progress`:
   это **авторский GO, не независимая машина**; candidate ещё не посажен и post-QA не выполнен».
4. **Независимое подтверждение дефекта и починки** (`2026-09-15T12:20:21.451Z`): «На базе
   воспроизведены **оба** ложных успеха F6: пустой `STANDBY_HOST` и нечитаемый password-file
   давали **rc=0 и доходили до psql-double**. На candidate пустой host и
   отсутствующий/нечитаемый/пустой password-file отказывают **nonzero ДО probe**».
5. **Готовность пакета ≠ исполнение B/C.** `HANDOFF-LIVE.md` строка 27 (тик 15.09 21:28Z):
   «Это не выполнение B/C: build/land/verify/rollback остаются живой репетицией свежего
   Codex»; WEB-649 `2026-09-15T15:47:17.420Z` — «Это READY подготовки, не прохождение B/C».
   Отдельно в WEB-649 `2026-09-15T01:33:57.704Z` этот тикет назван среди того, что
   «действительно осталось по эпику»: «шаги F5/F6/F8 на чистом операторском сеансе: печать
   имён переменных и `<redacted>` не доказывает, что значения существуют и работают
   у нового оператора».

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

Блока в теле нет (`knownissues=0`); сам дефект F6 описан **комментарием как вердикт**,
а не как KNOWN ISSUES с проверкой.

**KI-1. F6 пропускает ложный успех при пустом окружении.**
- Симптом: команда возвращает **exit 0** при пустом `STANDBY_HOST` и при нечитаемом
  `STANDBY_PASSWORD_FILE`; ранние проверки разделены `;` и не останавливают выполнение,
  а последующий успешный synthetic standby probe перекрывает их ошибку
  (`2026-09-15T11:42:43.353Z`).
- **Проверка за 2 минуты (read-only):** запустить F6 в чистом сеансе с **пустым**
  `STANDBY_HOST` и посмотреть код возврата. Ожидание на исправленном кандидате: **nonzero
  ДО probe** (`2026-09-15T12:20:21.451Z`). `rc=0` ⇒ проверка декоративная; тот же опыт
  повторить с отсутствующим/нечитаемым/пустым password-file и с ответом `not-t`.
- Причина: `2026-09-15T11:42:43.353Z` — «кодовая дыра»; конкретные строки — в diff
  кандидата 3992 (строка F6 ранбука).
- Лечение/статус: кандидат `87a09531…` независимо принят (4000 GO), **в линию не включён**.
- Ссылки: `4130ENRICHBUSFACTOR-REPORT.md` §4 WEB-654.

**KI-2. Проверка через печать имён переменных и `<redacted>` ничего не доказывает.**
- Симптом: шаги F5/F6/F8 «доказывались» печатью имён переменных вместо значений
  (`2026-09-13T10:21:10.686Z`); при этом запуск через `sudo -u` сам по себе не подгружает
  окружение оператора (тело, «Суть»).
- **Проверка за 2 минуты (read-only):** прогнать шаги в **чистом сеансе** (новый
  пользователь/окружение без унаследованных переменных) и зафиксировать, чего не хватило
  (`2026-09-15T11:42:43.353Z` — «Это кодовая дыра, а не отсутствие live-секретов» — то есть
  отсутствие значений у нового оператора тоже обязано приводить к отказу, а не к зелёному).
- Причина: печать имён принималась за доказательство существования значений (тело).
- Лечение/статус: закрыто fail-fast F6; значения секретов в отчёт не попадают.
- Ссылки: `4130ENRICHBUSFACTOR-REPORT.md` §4 WEB-654.

## 6. ТОЧНЫЙ ОСТАТОК (граница владелец / исполнитель)

Тело остатка не содержит; остаток лежит только комментарием `2026-09-15T12:20:21.451Z`,
дословно: «закрывать только после интеграции, посадки и post-QA исполняемой F6».

- **Включить кандидата `87a09531c4f8d8c9d94ba95644ee52ba2fd569af` в следующую линию** —
  **исполнитель** (WEB-641 `2026-09-15T13:05:49.045Z` пункт 3).
- **Post-QA исполняемой F6 после посадки** — **исполнитель** (там же, пункт 4).
- **Живой прогон разделов B и C** на `safe_to_break`-мишени `127.0.0.1:55445`
  (учение `drill-target-3945`) — **исполнитель**, в рамках **WEB-655**
  (WEB-649 `2026-09-15T01:33:57.704Z`).
- Регрессия-база для сверки после посадки: WEB-654 6/6, Section-F 2/2, BF-06 17/17;
  evidence 9/9 SHA256; F5/F8 byte-identical; полный factory — 153 PASS / 2 известных
  unrelated FAIL / 3 opt-in SKIP (`2026-09-15T12:20:21.451Z`).

## 7. ПЕРВЫЙ ШАГ НУЛЕВОГО АГЕНТА (без агентов)

Прочитать `2026-09-15T11:42:43.353Z` (REOPEN с точным механизмом ложного PASS) и
`2026-09-15T12:20:21.451Z` (вердикт) — тело не несёт ни того, ни другого. Затем выполнить
проверку KI-1 (один запуск F6 с пустым `STANDBY_HOST`). **Не включать кандидата в линию
самостоятельно и не закрывать:** `review`, посадка и post-QA не выполнены.
2026-09-15T23:42:38.000Z · coordinator
L115Q-LANDING-20260915-WEB-654
[15.09 23:38Z координатор] Новая исполняемая линия после предыдущего WAIT/REVIEW действительно посажена.

- Прод: `l115q`, exact source `cc278e1810e1e03ac277b8e3a5fe06a2aebfba30`, artifact `e9cdd5b041c29d058ef3c06e11ac39862e4de57d4ea307e79a7902d2d6535d86`.
- Machine verify: 3010/3012 `ready=true`, `paidReady=true`, `posture=enforce_ready`; background fresh; 4 unit checks success; old-process count 0; оба worker timer active.
- Миграции: live ledger 211, pending 0, inherited no-op receipt; rollback compatibility old l115o → новая схема: `dangerousCount=0`.
- Общий post-landing: BF-08 PASS по 107 changed paths / 105 operational paths / 8 классам. Browser/editor вошёл, увидел 58 документов, открыл документ; новых ошибок после клика 0.
- Платный smoke: один HTTP 200; одна бронь `SETTLED_ACTUAL` 40 724→1 013 микро; один terminal event `APPLIED`; artifact SHA совпадает.
- Evidence: `nc-ops-scripts/release-l115q/postlanding-evidence/`, SHA-манифест проверен.

Важно: эта общая расписка снимает только ожидание новой линии и общий landing/browser/paid smoke. Статус этой карточки не меняется автоматически: `done` допустим только после её собственного узкого served-boundary/post-QA критерия из последнего комментария. Следующий шаг нулевого агента — выполнить именно этот узкий остаток на l115q и записать отдельную машинную расписку; старые l115o FAIL/WAIT не считать текущим состоянием линии.
2026-09-16T03:11:52.851Z · coordinator
COORD-POSTQA-20260916-WEB654-0307Z

Авторская 4163 подтвердила F6 Tasks A/B на exact-l115q source archive, но независимая 4168 дала REWORK и не разрешила review→done. Причина: Task C/receipt заявляют hostile ambient vars, которых harness фактически не задаёт; env -i делает исход tautological. Свойство отдельно истинно, но доказательная формулировка ложна. Требуется реальный ambient control + decisive без-env-i control и harness-generated checker-half. Rework: 4170 DeepSeek Flash. Evidence: /Users/poolpooly/waves-ds/4168/{REPORT.md,evidence,SHA256SUMS,DONE}.
2026-09-16T05:31:23.031Z · coordinator
POSTQA-L115Q-4163-WEB654-PASS

Независимый DeepSeek Flash post-QA 4163 на exact `l115q` дал PASS.

- source `cc278e1810e1e03ac277b8e3a5fe06a2aebfba30`; candidate `87a09531c4f8d8c9d94ba95644ee52ba2fd569af` подтверждён ancestry receipt;
- пустой `STANDBY_HOST` и нечитаемый password-file оба fail-closed с rc=1 до psql; true-positive проходит;
- mutation control воспроизвёл старый дефект, поэтому проверка различающая, а не blanket refusal;
- F5/F8 clean-session guarantees держатся при подмешанных ambient values;
- `SHA256SUMS` SHA-256 `c001d67403084acb2a629730a65831eabe86229d71d53ed6a8984697d0d8b6a9`, readback PASS;
- report SHA-256 `ca01ab423d743718e3726e2029314578ec6b9d388852b0c841df5ae5ffefe785`.

Граница: полный factory suite без зависимостей не перезапускался; ранее известные 2 fail/3 skip не переобъявляются. Заявленный served-boundary post-QA WEB-654 закрыт; карточка переводится `review → done`. Прод, посадка и секреты не трогались.
Воркер
не проверен 4163:l115q-served-boundary-PASS M1 движение в панели: неизвестно
Подключиться и смотреть/перехватить руками. Колесо мыши листает; клавишами — Ctrl-b затем [, выход из прокрутки q. Отсоединиться — Ctrl-b затем d:
ssh -t poolpooly@192.168.1.74 "/opt/homebrew/bin/tmux attach -t 4163:l115q-served-boundary-PASS"
Прочитать историю панели без подключения — листается и ищется (/ поиск, q выход), воркеру не помешает:
ssh poolpooly@192.168.1.74 "/opt/homebrew/bin/tmux capture-pane -p -S -5000 -t 4163:l115q-served-boundary-PASS" | less -R
Обновлён
2026-09-16T05:31:23.032Z