Стройплощадка — Phase 0 / Эпик F2
Сборка публичного сайта-Стройплощадки на Astro: контент-движок, страницы, безопасная фильтрация. Выполнено Claude Code под надзором Романа.
Что сделано
- Подняты зависимости
transparency/(Astro 4, npm 379 пакетов), сгенерированpackage-lock.jsonдля воспроизводимогоnpm ciв Dockerfile. infra/scripts/extract-client-questions.mjs— whitelist-извлечение изOPEN_QUESTIONS.mdтолько клиентского раздела и истории закрытых вопросов.build-transparency.shсделан fail-closed: при ошибке извлечения билд останавливается, а не публикует сыройOPEN_QUESTIONS.md.src/lib/content.js— чтение документов/work-logs/вопросов/финансов, парсинг frontmatter, рендер markdown.- Страницы: главная,
/docs(+ страница каждого документа),/worklogs(+ страница каждой сессии),/questions,/finance(SVG-график накопленных расходов, таблица записей, ставки с пометкой «−30% от рынка»). - Исправлен баг валидатора
expenses(ловилson:внутриperson:). - Сборка проверена: 12 страниц, контент рендерится, утечки внутреннего раздела «Для команды» нет (проверка на собранном HTML).
Решения
- Фильтрация — whitelist, не blacklist. Публикуются только явно разрешённые секции; при изменении структуры файла билд падает, а не «протекает». Защита клиентских данных приоритетнее устойчивости билда.
- Сгенерированный
src/content/*не хранится в git. Источник правды —/docs,/work-logs,/OPEN_QUESTIONS.md,/expenses.yaml; контент наполняет build-скрипт. - Деплой — локально на порт 3013, домен и Proxy Host в NPM — после решения открытого вопроса Q3 (домены).
Открытые вопросы
- Визуальная проверка скриншотами не выполнена: headless Chromium не стартует в этой среде (политика sandbox/AppArmor). Рендер проверен на уровне собранного HTML. Полный визуальный QA — когда будет доступен браузер.
- Домен Стройплощадки (Q3) — нужен для
SITE_URLи Proxy Host в NPM. - GitVerse — по-прежнему ждём SSH-ключ/токен (см. work-log F1, ADR 0002).
Что дальше
- Поднять контейнер
bablo-transparencyлокально (порт 3013), проверить. - После решения Q3 — Proxy Host в NPM, HTTP-авторизация, URL Руслану.
- F3 — финансовая прозрачность (страница
/financeуже сделана, остаётся связка work-log → expenses и проверка графика на реальных данных).
Расход часов
2 часа надзора Романа = 8 400 ₽ (ставка 4 200 ₽/час, на 30% ниже
среднерыночной 6 000 ₽/час). Запись в expenses.yaml — EXP-2026-05-19-003.