WEB-084 · Дефект · billing · web
Платная поверхность зависит от cwd-relative readFileSync(src/…) в рантайме: изменение файлов инвалидирует записанные квитанции проекций глобально после деплоя
Закрыт
P1 · важно
ведёт: backup-opus
Суть
## Найдено 21.08 ~00:45 волной fcchannels (побочная находка при работе над WEB-068/066)
В рантайме платной поверхности есть чтение исходников через cwd-relative readFileSync(process.cwd()+ src/…): любое изменение этих файлов инвалидирует ВСЕ ранее записанные квитанции проекций и роняет платную поверхность глобально сразу после деплоя. Точные файлы:строки — в ~/waves/FCCHANNELS-REPORT.md на A1 (раздел про WEB-066 характеризацию; там же 2 коммита ветки fcchannels: 62cf3d50 searxng, 6cb53f11 характеризационные тесты accounting_unhealthy).
Класс: «значение, вычисленное раньше финализации» + скрытая зависимость рантайма от байтов исходника. Фикс: пин контента через build-time генерацию/хеш в артефакте, не runtime-чтение src. Проверить связь с WEB-066 (не этот ли механизм пометил accounting unhealthy после посадки 28).
## 21.08 ~12:40 ЗАКРЫТ: коммит ddb9492e — последние два модуля платного пути перестали выводить runtime-идентичность из cwd.
Ветка archp0/fcsrc2/migfix от посадки-30 (23e0b944), worktree на A1. Отчёты: ~/waves/ARCHP0-REPORT.md, FCSRC2-REPORT.md, MIGFIX-REPORT.md.
## 23.08 — вошёл в посадку, ждёт живой приёмки [эпик WEB-314]
- Груз в проде: 504af77f (посадка 30, 21.08 03:53 UTC; предок serving 26116cff); артефакт a3c1c9d6…b595; paidReady=true.
- Метод приёмки: греп фикса readFileSync в serving-артефакте + boot-контракт зелёный (уже в review).
- Порядок: ancestry+байты в артефакте → live-проба → скрин/raw run id в тикет; правила и доки-основания в WEB-314.
## 23.08 09:10 UTC — ПРИНЯТ (байты+поведение, координатор, read-only на Pi)
- serving 26116cff: анти-паттерн cwd-relative `readFileSync('src/...` в .next/server ОТСУТСТВУЕТ (0 совпадений) — фикс упаковки в байтах прода.
- boot зелёный: /api/ready/paid paidReady=true, enforce_ready, failures=[] — платная поверхность поднимается без ENOENT.
- Критерий приёмки (байты в артефакте + boot green) выполнен. Закрыт.
Починено в
26116cff
Воркер
не привязан — привязать:
curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \
-d '{"issueId":"WEB-084","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-08-23T08:11:53.044Z