From 6b513e4001d8eec12ff81535b3ba7e7772cd5232 Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Sat, 24 Oct 2026 01:11:04 +0400 Subject: [PATCH] =?UTF-8?q?docs(openspec):=20wiki-module=20=E2=80=94=20?= =?UTF-8?q?=D1=80=D0=B5=D1=88=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B8=D1=81=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D0=BD=D0=B8=D1=82=D0=B5=D0=BB=D1=8F=20Task=202=20(?= =?UTF-8?q?#91)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- openspec/changes/wiki-module/design.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/openspec/changes/wiki-module/design.md b/openspec/changes/wiki-module/design.md index 019aabb..eac21c0 100644 --- a/openspec/changes/wiki-module/design.md +++ b/openspec/changes/wiki-module/design.md @@ -479,3 +479,19 @@ jira безвреден. 26. `h_claim` принимает `last_call_at` как алиас `last_jira_call_at` (решение 3). Цена ошибки: нет. 27. `_auth` для агента сравнивает токен со всеми агентами без раннего выхода (постоянное время). Цена ошибки: нет. 28. `_tokens_v7`: нет `tokens` или уже есть `agents` — шаг пропускается (идемпотентность). Цена ошибки: нет. + +Решения исполнителя Task 2 (2026-10-24): + +29. `module_dir` создаёт каталог модуля (0700) только если его нет; права существующих каталогов выставляет `Hub` при + старте (и `agent publish` для корня), а не `claim`. Цена ошибки: чужие права на каталогах агентов перезаписываются + при старте. +30. `Hub(release_dir=)` переименован в `release_root=`. Цена ошибки: нет (вызовов с kwarg не было). +31. `GET /agent?module=` отвечает 404 `not_found` и для модуля без команд. Цена ошибки: клиент не отличает «нет + модуля» от «нет агента». +32. `Hub.agent_update` строится по `registry.agent_modules()`; для прочих имён — пустой словарь (`_no_update`). +33. `queue.claim`: параметр `last_jira_call_at` переименован в `last_call_at`; тело HTTP принимает оба ключа. +34. `migrate_layout` переносит файлы покадрово (agent.py, затем manifest.json), повторяется, пока нет + `jira/manifest.json`; существующий приёмник не перезаписывается, корневой файл удаляется. Цена ошибки: если старый + код успел записать в корень более новый agent.py после частичной миграции, он потеряется (риск низкий). +35. `registry.DEFAULT_AGENT = "jira"` — единственное место с умолчанием агента в ядре; `release.py` импортирует его + оттуда. Цена ошибки: нет.