Files
shater/SPECS/001-FORK_BOOTSTRAP/SPEC.md
T
Leadaxe 09944c0103 docs(specs): drop type/status from folder names — header + Roadmap only
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).
2026-06-22 11:36:37 +03:00

3.2 KiB
Raw Blame History

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), как у upstream include/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).