fix(bug-discovery): dedup check via issues search API #77

Closed
opened 2026-08-16 18:06:38 +03:00 by slaid098 · 0 comments
Owner

Контекст

.opencode/skills/bug-discovery/SKILL.md шаг 1 предписывает: «Check for duplicate issues via pipeline-status({ pr_number: N }) oracle (returns issue context)». Оба утверждения неверны: pipeline-status принимает только номер PR и не возвращает никакого «issue context» и не умеет искать issues. Результат — шаг гарантированно падает (PR #N не существует, exit 1) у каждого сабагента, нашедшего баг.

Задача

  1. Заменить шаг 1 на прямой поиск через Forgejo API: curl -H "Authorization: token $FORGEJO_TOKEN" "$FORGEJO_URL/api/v1/repos/{owner}/{repo}/issues?q=<ключевые слова>&type=issues&state=open&limit=50&page=1" (owner/repo из git remote get-url origin).
  2. Указать правило пагинации: при >50 результатов — &page=2 (memory-указатель для list endpoints).
  3. Критерий дубликата: совпадение по title/ключевым словам среди открытых issues; при нахождении — дописать комментарием/пропустить создание, согласно текущему протоколу скилла.
  4. Убрать все упоминания pipeline-status из скилла; формулировку «returns issue context» удалить.
  5. Синк копий скилла: .opencode/skills и ~/.config/opencode/skills — байт-идеально.

Контракты

  • Остальные шаги протокола bug-discovery (создание issue через create-issue, сообщение оркестратору «Created issue #N: ...», продолжение основной задачи) не меняются.

Инварианты

  • Скилл остаётся read-only до шага создания issue (поиск не мутирует состояние).
  • Обязательная загрузка скилла всеми сабагентами при находке бага — без изменений.

Граничные случаи

  • Пустой поиск (q не матчится) → дубликата нет, продолжаем.
  • Число имеет PR-контекст (баг найден в ходе PR-фазы) → поиск всё равно идёт только по issues (type=issues).

Влияние на связанные компоненты

  • AGENTS.md Bug Discovery Protocol ссылается на скилл — формулировки там не меняются (протокол не тронут).

Вне scope

  • Изменение самого pipeline-status (делается в отдельном issue).

Критерии приемки

  • grep: pipeline-status не упоминается в bug-discovery/SKILL.md.
  • Шаг 1 содержит рабочий curl с limit=50&page=1 и правилом пагинации.
  • diff копий скилла между каталогами пуст.
## Контекст `.opencode/skills/bug-discovery/SKILL.md` шаг 1 предписывает: «Check for duplicate issues via `pipeline-status({ pr_number: N })` oracle (returns issue context)». Оба утверждения неверны: pipeline-status принимает только номер **PR** и не возвращает никакого «issue context» и не умеет искать issues. Результат — шаг гарантированно падает (`PR #N не существует`, exit 1) у каждого сабагента, нашедшего баг. ## Задача 1. Заменить шаг 1 на прямой поиск через Forgejo API: `curl -H "Authorization: token $FORGEJO_TOKEN" "$FORGEJO_URL/api/v1/repos/{owner}/{repo}/issues?q=<ключевые слова>&type=issues&state=open&limit=50&page=1"` (owner/repo из `git remote get-url origin`). 2. Указать правило пагинации: при >50 результатов — `&page=2` (memory-указатель для list endpoints). 3. Критерий дубликата: совпадение по title/ключевым словам среди открытых issues; при нахождении — дописать комментарием/пропустить создание, согласно текущему протоколу скилла. 4. Убрать все упоминания pipeline-status из скилла; формулировку «returns issue context» удалить. 5. Синк копий скилла: .opencode/skills и ~/.config/opencode/skills — байт-идеально. ## Контракты - Остальные шаги протокола bug-discovery (создание issue через create-issue, сообщение оркестратору «Created issue #N: ...», продолжение основной задачи) не меняются. ## Инварианты - Скилл остаётся read-only до шага создания issue (поиск не мутирует состояние). - Обязательная загрузка скилла всеми сабагентами при находке бага — без изменений. ## Граничные случаи - Пустой поиск (q не матчится) → дубликата нет, продолжаем. - Число имеет PR-контекст (баг найден в ходе PR-фазы) → поиск всё равно идёт только по issues (`type=issues`). ## Влияние на связанные компоненты - AGENTS.md Bug Discovery Protocol ссылается на скилл — формулировки там не меняются (протокол не тронут). ## Вне scope - Изменение самого pipeline-status (делается в отдельном issue). ## Критерии приемки - grep: pipeline-status не упоминается в bug-discovery/SKILL.md. - Шаг 1 содержит рабочий curl с `limit=50&page=1` и правилом пагинации. - diff копий скилла между каталогами пуст.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
slaid098/opencode-config#77
No description provided.