Folder names were NNN-T-S-NAME, so the status (S) letter forced a rename on
every status change — and refs to the full name went stale each time. One was
already broken in-tree (client.go pointed at 002-F-O-… while the folder was
002-F-C), and the submodule needed a cosmetic commit once already (010 O→C).
Make the number the only stable anchor:
- Rename all 12 folders NNN-T-S-NAME → NNN-NAME (git mv, history preserved).
- Type/status now live in a table header at the top of each SPEC.md (canon),
aggregated by the Roadmap in SPECS/README.md (added missing 010, 012).
- Fix every ref to the old full name: README(.ru), docs/lx-changelog,
docs/lx-config, intra-SPECS cross-links, PROBE.md git-apply path,
TASKS.md titles, and transport/v2rayxhttp/client.go:5 (also un-stales O).
- Rewrite the convention + Workflow in SPECS/README.md and the DoD ritual in
IMPLEMENTATION_PROMPT.md ("rename folder to …-C-…" → "set status in header
+ Roadmap").
- Bump submodule wireguard-go (0c0c10b): fix comments point at the new folder
name SPECS/010-WG_ENDPOINT_GRO_SPLIT_BRAIN. Comment-only, no behavior change.
Not touched: gro-probe.patch (historical diagnostic diff artifact; §010 closed,
no longer applied).
3.2 KiB
3.2 KiB
SPEC: 001 — FORK_BOOTSTRAP
| Поле | Значение |
|---|---|
| Тип | F (feature) |
| Статус | C (complete) |
Заложить скелет downstream'а sing-box-lx: remotes, рабочая ветка, build-теги, версия с -lx, конвенция маркеров // lx: и шаблон гейтинга. После задачи репозиторий — корректный «upstream + ноль фич», готовый принимать XHTTP (002) и AWG2 (003).
1. Проблема / контекст
Leadaxe/sing-box-lx — форк-зеркало upstream (родословная SagerNet/sing-box сохранена). Нужна повторяемая инфраструктура downstream'а, при которой каждое будущее изменение изолировано и ребейзопригодно (см. CONSTITUTION § 3).
2. Требования
2.1 Git
origin = Leadaxe/sing-box-lx,upstream = SagerNet/sing-box. (сделано)- Ветка
lxбазируется на стабильном тегеv1.13.13. (сделано) - Default branch на GitHub =
lx; шумные зеркальные ветки (dependabot/*,dev-*,copilot/*) — вне внимания (можно удалить с origin, не обязательно).
2.2 Build-теги
- Ввести
with_xhttpиwith_awgкак опознаваемые теги проекта (фактический код — в 002/003). Зафиксировать канонический набор тегов сборки lx в одном месте (см. PLAN), переиспользуемый в DoD и CI. - Инвариант: без
with_xhttp/with_awgбинарь ведёт себя как upstream.
2.3 Версия
sing-box versionдолжен печатать суффикс-lx.N(напр.1.13.13-lx.1).- Суффикс задаётся при сборке (ldflags), не хардкодом в исходниках upstream (минимальный дифф).
2.4 Конвенции
- Документировать и применять маркеры правок upstream-файлов:
// lx:begin <feat>…// lx:end <feat>. - Принять шаблон гейтинга
include/<feat>.go(+<feat>_stub.go), как у upstreaminclude/wireguard.go.
2.5 CI-скелет
- Минимальный workflow: сборка
lxс каноническим набором тегов под linux/amd64 +go vet+sing-box checkна sample-конфиге. (Полная матрица и авто-ребейз — в 004.)
3. Критерии приёмки
go build ./...(без тегов) — ок.go build -tags "<канон lx>" ./cmd/sing-box— ок (теги пока no-op).- Собранный бинарь:
./sing-box versionсодержит-lx.. - Имя выходного файла —
sing-box. - CI-скелет зелёный на push в
lx.
4. Вне скоупа
- Любой код XHTTP/AWG (это 002/003).
- Полная CI-матрица, релизы, авто-ребейз (это 004).