каталог задач уехал из docs/ в корень репозитория
Версия 8 отпустила задачи из канона — перестала требовать каталог и перестала в него смотреть, — но место он занимал всё то же, docs/tasks/. Полдела: каталог, принадлежащий одному плагину, лежал внутри дерева, которым владеет другой. Проекту, поставившему учёт работ без канона документов, приходилось заводить docs/ ради одной вложенной папки. Дом задач теперь tasks/ в корне. tasks.py ищет его там первым, docs/tasks и doc/tasks остались в списке поиска для непереехавших проектов, init заводит только в корне, --target у adopt тоже. Настройки лежат рядом, tasks/.tasks.json — после версии 8 они уже были в своём файле, теперь и файл вне чужого дерева. docs.py продолжает терпеть docs/tasks/ в списке нечитаемого: непереехавший проект не должен получать выдуманную ошибку «файл вне канона» вдобавок к записи журнала, которая и так велит ему переехать. Адреса упразднённых слотов (plan.md, backlog/) теперь ведут в tasks/ и называют плагин. Тридцать три живых упоминания пути разведены по смыслу, а не заменой строки: в раскладке канона tasks/ вышел из-под docs/ и стоит на своём уровне; у doc-consistency каталог перестал быть исключением внутри docs/** и стал чужой территорией, названной в обеих формах; у review-scope и review-pipeline процессный список поехал вместе с путём. В журнале версий тринадцать упоминаний оставлены как есть — они описывают прошлое состояние. Канон повышен до версии 11. В записи названа тихая часть переезда: файл tasks/items/x.md стал на уровень ближе к корню, и ../../passport.md в теле записи теперь ../docs/passport.md. Битую относительную ссылку внутри записи tasks.py check не ловит вовсе — её видит только docs.py и только у документов канона, так что этот шаг делается руками и тем же коммитом, что git mv. Фикстура переехала, поиск вверх по дереву находит новый путь, гейт зелёный. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -25,7 +25,7 @@ from dataclasses import dataclass, field
|
||||
from pathlib import Path
|
||||
from typing import NoReturn
|
||||
|
||||
CANON_VERSION = 10
|
||||
CANON_VERSION = 11
|
||||
|
||||
OK, DRIFT, USAGE, ENV, INTERNAL = 0, 1, 2, 3, 4
|
||||
|
||||
@@ -76,12 +76,15 @@ DOC_EXTRA = {
|
||||
"adr": {"template.md": "шаблон записи ADR"},
|
||||
}
|
||||
|
||||
# Служебное в docs/ и каталог задач. Формы у них скрипт не проверяет, и по разным
|
||||
# причинам: `.pm.json` не markdown, а `tasks/` **принадлежит другому плагину** —
|
||||
# `av-dev-tasks`, со своим скриптом, своим конфигом и своей версией формата.
|
||||
# Канон резервирует за ним место в `docs/`, но наличия не требует и внутрь не
|
||||
# смотрит: проект, поставивший только этот плагин, задач не ведёт вовсе, и
|
||||
# отказом это быть не может.
|
||||
# Служебное в docs/ и каталог задач, оставшийся там от прежней раскладки. Формы
|
||||
# у них скрипт не проверяет, и по разным причинам: `.pm.json` не markdown, а
|
||||
# задачи **принадлежат другому плагину** — `av-dev-tasks`, со своим скриптом,
|
||||
# своим конфигом и своей версией формата.
|
||||
#
|
||||
# Дом задач с версии 11 — `tasks/` в корне репозитория, то есть вне `docs/`
|
||||
# вовсе. `docs/tasks/` здесь терпится потому, что непереехавший проект не должен
|
||||
# получать «файл вне канона» вдобавок к записи журнала, которая и так велит ему
|
||||
# переехать. Внутрь скрипт не смотрит ни в том, ни в другом случае.
|
||||
NOT_DOCS = {".pm.json", "tasks"}
|
||||
|
||||
# Слоты, которых в каноне нет, — с адресом, куда уезжает содержимое. Имена,
|
||||
@@ -90,11 +93,11 @@ NOT_DOCS = {".pm.json", "tasks"}
|
||||
RETIRED = {
|
||||
"review-brief.md": "документы канона и есть бриф; остаток — в review",
|
||||
"review-journal.md": "→ документ review",
|
||||
"plan.md": "→ docs/tasks/ROADMAP.md",
|
||||
"plan.md": "→ tasks/ROADMAP.md (плагин av-dev-tasks)",
|
||||
"local-research.md": "→ документ research",
|
||||
"specs": "поведение → openspec/specs/, обзор → тема architecture",
|
||||
"drafts": "идея → запись research, отказ → ADR, порядок → ROADMAP.md",
|
||||
"backlog": "→ docs/tasks/",
|
||||
"backlog": "→ tasks/ в корне репозитория (плагин av-dev-tasks)",
|
||||
}
|
||||
|
||||
# --- Слаги в именах файлов --------------------------------------------------
|
||||
@@ -211,7 +214,7 @@ def strip_code(text: str) -> str:
|
||||
"""Выкинуть блоки кода и вставки в обратных кавычках.
|
||||
|
||||
Путь в примере или в шаблоне — не ссылка, и краснеть на нём значит краснеть
|
||||
на каждом образце документа. Инлайн-код тоже: `[docs/backlog](docs/tasks/…)`
|
||||
на каждом образце документа. Инлайн-код тоже: `[docs/backlog](tasks/…)`
|
||||
в тексте про подписи ссылок — иллюстрация, а не ссылка."""
|
||||
out, inside = [], False
|
||||
for line in text.splitlines():
|
||||
|
||||
Reference in New Issue
Block a user