docs: перевод документации на канон av-dev
- Раскладка docs/ приведена к канону 2: заведены passport/architecture/ database/security/review и research; docs/specs, drafts, backlog, review/ и BRIEF.md разобраны и удалены, беклог переехал в docs/tasks (34 задачи, 6 целей, слаги на английский). - Нарративы specs удалены как дубли openspec-спек после поимённой сверки; остаток заведён задачами (редактор маппинга ревью, крайние случаи именования), отказ от сущности title промоутнут в ADR. - Проектные копии агентов и скиллов ревью/пайплайна удалены в пользу плагинов av-dev-pm и av-dev-pipeline; в task gate добавлен шаг canon вместо er-schema.
This commit is contained in:
+34
-7
@@ -26,6 +26,17 @@ from pathlib import Path
|
||||
|
||||
OUT_DIR = Path("tmp/gate")
|
||||
|
||||
# docs.py скилла av-dev-pm:canon — проверка раскладки docs/ против канона.
|
||||
# Путь берётся из каталога маркетплейса (он без хеша версии, в отличие от
|
||||
# cache/), переопределяется переменной DOCS_PY: переустановка плагина не должна
|
||||
# требовать правки гейта. Если скрипта нет — шаг краснеет, а не пропускается:
|
||||
# молча пропущенная проверка даёт ложное ощущение проверенности.
|
||||
DOCS_PY_DEFAULT = (
|
||||
Path.home()
|
||||
/ ".claude/plugins/marketplaces/av-dev-skills"
|
||||
/ "av-dev-pm/skills/canon/scripts/docs.py"
|
||||
)
|
||||
|
||||
OK, FAIL, WARN, SKIP = "OK", "FAIL", "WARN", "SKIP"
|
||||
|
||||
summary: list[tuple[str, str, str]] = []
|
||||
@@ -170,14 +181,30 @@ def main() -> int:
|
||||
else:
|
||||
record(SKIP, "migrations", "миграции и код не менялись")
|
||||
|
||||
# --- ER-схема синхронна с миграциями ---
|
||||
# docs/conventions/database.md: меняем структуру — обновляем ER-схему в том
|
||||
# же change. Проверка по диффу, поэтому живёт здесь, а не в archrules.
|
||||
if migrations_changed:
|
||||
if "docs/specs/database.md" in changed:
|
||||
record(OK, "er-schema")
|
||||
# --- Канон документации ---
|
||||
# Раскладка docs/ против канона av-dev, битые ссылки, версия канона,
|
||||
# нетронутые плейсхолдеры и две сверки с кодом — включая «миграция изменена,
|
||||
# а database.md нет» (отдельного шага er-schema поэтому больше нет).
|
||||
# База диффа обязательна: без неё сверка миграций со схемой не гоняется.
|
||||
docs_py = Path(os.environ.get("DOCS_PY") or DOCS_PY_DEFAULT)
|
||||
if not docs_py.is_file():
|
||||
record(FAIL, "canon", f"docs.py не найден: {docs_py} — переустанови плагин"
|
||||
" av-dev-pm или задай путь переменной DOCS_PY")
|
||||
else:
|
||||
log = OUT_DIR / "canon.log"
|
||||
proc = subprocess.run(
|
||||
["python3", str(docs_py), "check", "--dir", ".", "--base", base],
|
||||
capture_output=True, text=True,
|
||||
)
|
||||
log.write_text(proc.stdout + proc.stderr, encoding="utf-8")
|
||||
if proc.returncode == 0:
|
||||
record(OK, "canon")
|
||||
elif proc.returncode == 1:
|
||||
record(FAIL, "canon", f"раскладка docs/ разошлась с каноном → {log}")
|
||||
else:
|
||||
record(FAIL, "er-schema", "миграция изменена, а docs/specs/database.md — нет")
|
||||
# 2 — ошибка употребления, 3 — окружение, 4 — внутренний сбой.
|
||||
# Это не дрейф документации, и чинится оно не правкой docs/.
|
||||
record(FAIL, "canon", f"docs.py не отработал (код {proc.returncode}) → {log}")
|
||||
|
||||
# --- Секреты ---
|
||||
# Гоняем всегда: секрет утекает из любого файла, не только из кода.
|
||||
|
||||
Reference in New Issue
Block a user