4.4 KiB
4.4 KiB
Прогресс миграции Python → Go
Источник истины по статусу фаз. Обновляется после каждого завершённого шага.
- Общий план: plan-go-migration.md
- Универсальный промпт для запуска фазы: execute-phase-prompt.md
Статус
| # | Фаза | Статус | Начата | Завершена | Commit/PR | Заметки |
|---|---|---|---|---|---|---|
| 0 | Архивирование Python | ✅ done | 2026-04-18 | 2026-04-18 | 425eae7 |
|
| 1 | Go-скелет | ✅ done | 2026-04-18 | 2026-04-18 | 6b8d588 |
|
| 2 | Converter (goldmark) | ✅ done | 2026-04-18 | 2026-04-18 | 8deba36 |
Golden fixtures use relative/email links to keep generated HTML free of external resource URLs. |
| 3 | HTTP-сервер | ✅ done | 2026-04-18 | 2026-04-18 | 843d8dc |
|
| 4 | UI на templUI | ✅ done | 2026-04-18 | 2026-04-18 | d6aef55 |
|
| 5 | CLI-подкоманда | ✅ done | 2026-04-18 | 2026-04-18 | 6aa19fe |
|
| 6 | Docker + CI | ✅ done | 2026-04-18 | 2026-04-18 | 4b55661 |
Tailwind standalone pinned to v3.4.17: latest did not emit web/static/dist/app.css for the current build pipeline. |
| 7 | Документация + v0.2.0 | ⚠️ blocked | 2026-04-18 | — | 66ca056 |
Release workflow 24602222305 failed: GHCR rejected ghcr.io/FSerg/md-to-html:v0.2.0 because repository names must be lowercase. Completing the release now requires either deleting/recreating the remote tag v0.2.0 or shipping a follow-up patch release. |
Легенда статусов:
- ⏳
pending— не начата - 🔄
in_progress— в работе - ✅
done— завершена, acceptance criteria выполнены - ⚠️
blocked— заблокирована, см. заметки
Инварианты между фазами
git statusчист перед началом каждой фазы.- Каждая фаза завершается отдельным commit в
main(или PR с мёрджем). Сообщение в форматеphaseN: <краткое описание>. - Acceptance criteria фазы проверяются до смены статуса на
done. - Любое отклонение от плана документируется в колонке «Заметки» с ссылкой на commit.
Лог ключевых решений (ADR lite)
| Дата | Решение | Обоснование |
|---|---|---|
| 2026-04-18 | Goldmark + chroma inline + extension.Footnote + кастомный anchor-extender | См. plan-go-migration.md §11 |
| 2026-04-18 | ASCII-транслит id заголовков через mozillazg/go-unidecode |
Решение пользователя (round-1) |
| 2026-04-18 | One-shot preview/download с UUIDv4 + TTL 1 ч | Решение пользователя (round-1) |
| 2026-04-18 | GitHub-style prefix-anchor (<a> как первый child <h>), не wrap-anchor |
Закрытие F-01 round-3 — избегаем nested <a> |
| 2026-04-18 | extractHeadingText walker вместо deprecated BaseNode.Text(src) |
Закрытие F-02 round-3 |
| 2026-04-18 | <iframe sandbox srcdoc> без allow-same-origin вместо bluemonday для inline preview |
Меньше зависимостей, полная изоляция |
| 2026-04-18 | POST /convert сохраняется (не /api/convert), UI-форма на POST /ui/convert |
Паритет API-контракта |
| 2026-04-18 | html.WithUnsafe() выключен; parser.WithAttribute() выключен |
Безопасность + паритет |
| 2026-04-18 | Tailwind standalone binary в Docker (без Node) | Упрощение multi-stage build |