WEB-027 · Задача · Инфраструктура · web
[Admin-Defaults Ф2b] GUI /admin/defaults: таблица+edit+diff-preview+audit/rollback (спека §5)
Закрыт
P1 · важно
ведёт: codex-f2b
эпик: WEB-025
Суть
Страница /admin/defaults по спеке §5 (визуал как /admin/spend): таблица сервис→дефолт+фолбэк-цепочка; edit/apply flow с валидацией по каталогу; diff-preview «что получит новый юзер» ДО apply-to-all; effective-value preview на namespace; audit-log view + откат в один клик; capability-фильтр (vision/JSON/search/TTS/realtime показывают только совместимые модели). Зависит от Ф2a (API). Ship-dark за ADMIN_DEFAULTS_ENABLED.
ТРЕЙЛ: спека M4:/Users/milamarty/work/ADMIN-DEFAULTS-EPIC-SPEC.md (виза координатора); родитель эпик WEB-025; опись WEB-024 (~/Downloads/WEB024-INVENTORY.md); Ф1 код 97ca0e8a + HOT-kill 71c03bd6 (ветка agent/admin-defaults-f1-20260812 в board-fix-w5). Ответы owner-а на 5 вопросов зафиксированы в WEB-025 (evidence). Правило: не начинать production-enable фазы до exit-gate предыдущей (спека §11).
## 2026-08-23 BOARDSWEEP: STALE-NOT-DEPLOYED
- Evidence: buildFixed is empty. Canonical GUI implementation is src/components/admin/defaults/AdminDefaultsWorkspace.tsx, but no deployed build/evidence pointer is present.
- buildFixed: <empty>; canonical: v4-081ff4fb5 / 081ff4fb5f6110f8001daec7ed910ccef2e395dc.
- Status preserved by sweep: review.
Доказательства
ТРЕЙЛ (кумулятивно). Спека: https://bugs.wool2.online/labs/admin-defaults/SPEC.md (§5 GUI). 13.08 01:40 волна m4-f2b (codex 5.5, f2a-tree от 8827fe23). 02:10 СДАНО+СПАСЕНО: коммит e74f7636. Скоуп: /admin/defaults — список неймспейсов (effective+источник+flagOff/wouldBe), правка с каталогом и 422 инлайн, CAS-409 UX, аудит+rollback, ship-dark 404 без ADMIN_DEFAULTS_ENABLED. RESULT: IMPLEMENTED_WITH_SCOPED_PROOF (scoped тесты+линт зелёные; браузер/визуал NOT RUN). F2B-REPORT.md (раздел «Что смотреть глазами») + f2b.patch в корне f2a-tree. Ждёт: посадка → owner-приёмка ГЛАЗАМИ. Поверх e74f7636 пишется Ф4 (m4-f4).
[2026-08-25 19:11Z] Независимая приёмка запущена: волна accadmdef на A1 (sol xhigh, приёмщик≠автор), worktree от прод-коммита a453b16; обязательны негативные тесты новых классов; для не-влитых тикетов волна установит факт NOT-LANDED. Бриф /home/ubuntu/waves/accadmdef-brief.md, отчёт будет в ACCADMDEF-REPORT.md.
[2026-08-25 19:33Z] Приёмка accadmdef: GO В ПРЕДЕЛАХ component/API contract (10/10 UI/client/access, commits bf9c207+51d87d7 ancestors), но BROWSER-PROOF ОТСУТСТВУЕТ — по дисциплине визуальной приёмки held в review до браузерного прогона (кандидат в следующую bqa-волну на M4). НЕ закрывать без глаз.
[2026-08-26 00:52Z] Автор web027 @b2b8bf1: GUI /admin/defaults на AdminShell+WEB-026 API — таблица (primary/fallback chain/effective preview/source/revision/статусы LIVE/DRAFT/INVALID/DISABLED), редактор (catalog-filtered model/provider, prompt/value, enable/disable, обязательная audit-причина), review modal (old->new diff, impact, source ladder, блок невалидных исторических targets), rollback CAS. -> review, ждёт компонентной/браузерной приёмки (browser-proof отдельно).
[2026-08-26 02:03Z] bqa4 NOT-RUNNABLE: ветки web027 нет на M4 (визуальная приёмка невозможна). Код на A1 (wt-web027, коммит b2b8bf1). Нужна приёмка НА A1 (компонентные+доступность роутов) или синк ветки на M4 для браузерного прогона.
[2026-08-26 02:20Z] acc027 NO-GO: UI требует audit-причину, но API PUT /api/admin/defaults/:namespace ПРИНИМАЕТ мутацию БЕЗ reason (создаёт revision + audit row reason:null) — обход через прямой вызов API. Фикс web027fix: валидация на уровне API fail-closed 400.
[2026-08-26 03:10Z] acc027b NO-GO (собственный негатив приёмщика): прежний блокер закрыт (пустая/отсутствующая reason→400), НО причина из ОДНИХ пробелов/спецсимволов принимается и создаёт revision+audit. Фикс web027fix2: содержательная валидация (>=8 значащих символов после trim, невидимые unicode отклоняются).
[2026-08-26 03:18Z] ФИКС web027fix2: содержательная валидация audit-причины (значащие символы после trim; пробелы/пунктуация/невидимые unicode -> 400 fail-closed). -> review на re-accept.
[2026-08-26 03:33Z] ПРИНЯТ acc027c (третья приёмка, независимо): GO — audit-причина обязательна и содержательна на уровне API (пробелы/пунктуация/эмодзи/zero-width/NBSP/RTL -> 400, revision не создан; обход другим методом закрыт; осмысленная -> audit точный). GUI /admin/defaults готов. -> done.
Починено в
a453b16
Воркер
не привязан — привязать:
curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \
-d '{"issueId":"WEB-027","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-08-26T03:33:52.123Z