Write issue dependencies to Gitea on push #13
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Локальный граф
depends:не доезжает до трекера. Push отправляет зависимыеissues в топологическом порядке, но не создаёт в Gitea ни одной нативной связи,
и слаги в
## Depends onне превращаются в#N. Транспорт эндпоинт связейзнает — но только на чтение.
Spec
skills/issue/references/format.mdSteps to reproduce
python3 skills/issue/scripts/issue_tree.pyрисует ребро, а
push.py --dry-runперечисляет зависимость первой.Expected
Gitea знает, что второй issue заблокирован первым: эндпоинт возвращает номер
блокирующего, в веб-интерфейсе видна панель зависимостей, закрыть зависимый
раньше блокирующего нельзя.
Actual
Связей нет. В секции зависимостей уехал слаг:
Для читателя в трекере это мёртвый текст: ни ссылки, ни номера, ни панели.
Предупреждение
skills/sync/scripts/push.py:158-162при этом молчит — оноловит только зависимости, оставшиеся локальными, а блокирующий issue ушёл в том
же прогоне и номер получил.
Перевод односторонний. На pull
#Nиз тела превращается в слаги(
skills/sync/scripts/map.py:101,numbers_in_body) иpull.py --depsчитаетнативные связи (
skills/sync/scripts/_gitea.py:223,native_deps). Обратногонаправления нет ни в одном виде:
native_deps— читатель без писателя.Наблюдалось на claude-skills/tea#11 и #12, отправленных одним push.
Environment
Gitea 1.26.1, tea 0.14.2. Эндпоинт связей —
/repos/{owner}/{repo}/issues/{index}/dependencies; GET по нему ужеиспользуется в
_gitea.py:223, форму тела для POST (IssueMeta:index/owner/repo) надо подтвердить на инстансе перед реализацией.Затронуты
skills/sync/scripts/push.pyи_gitea.py;map.py:175намеренноне переписывает прозу
## Depends on— это правило остаётся в силе.Acceptance criteria
GET /repos/{owner}/{repo}/issues/{index}/dependenciesвозвращает номер того, от чего он зависит
порядок push'а это гарантирует, отдельного прохода не требуется
push.py:158-162сохраняетсяроняет прогон
--updateдоносит связи, появившиеся вdepends:после первого push--dry-runпечатает, какие связи будут созданы, и не делает ни одногопишущего запроса
## Depends onуходит вербатим: слаги в ней не переписываются в#N, тело не меняется на круге pull → pushdepends:, в объём не входит и явнооговорено в докстринге
push.pypush.py/_gitea.py;skills/issue/не изменён, иgrep -rh '^import \|^from ' skills/issue/scripts/по-прежнему даёттолько stdlib
skills/sync/SKILL.mdописывает симметрию: push пишет нативные связи,pull их читает (
--deps)feat/issue-cache-scriptsto feat/issue-cache-scripts