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

Merged
slaid098 merged 1 commit from fix/bug-discovery/dedup-api into main 2026-08-16 19:25:49 +03:00
Owner

Что сделано

  • Заменил шаг 1 протокола bug-discovery: вместо нерабочего pipeline-status({ pr_number: N }) oracle (принимает только номер PR, не ищет issues) — прямой поиск через Forgejo issues search API (curl с q=<ключевые слова>&type=issues&state=open&limit=50&page=1, owner/repo из git remote get-url origin).
  • Добавил правило пагинации: при >50 результатов — повтор с &page=2, &page=3 и т.д.
  • Добавил критерий дубликата: совпадение по title/ключевым словам среди открытых issues → дописать комментарий к существующему issue и пропустить создание.
  • Удалил все упоминания pipeline-status и формулировку «returns issue context» из скилла.
  • Синхронизировал копию скилла в ~/.config/opencode/skills/bug-discovery/ — байт-идеально (diff пуст).

Почему

Шаг 1 гарантированно падал у каждого сабагента, нашедшего баг: pipeline-status принимает номер PR, а не issue, и не возвращает «issue context». Поиск дубликатов должен идти только через issues search API.

Watch out

Изменение сделано только в SKILL.md (1 файл) — правка логически неделима, поэтому 1 коммит вместо 3-4 (декомпозиция невозможна; git reset заблокирован deny-листом). Контракты остальных шагов протокола и AGENTS.md не тронуты.

Pending

—

Closes #77

Closes #77

## Что сделано - Заменил шаг 1 протокола bug-discovery: вместо нерабочего `pipeline-status({ pr_number: N })` oracle (принимает только номер PR, не ищет issues) — прямой поиск через Forgejo issues search API (`curl` с `q=<ключевые слова>&type=issues&state=open&limit=50&page=1`, owner/repo из `git remote get-url origin`). - Добавил правило пагинации: при >50 результатов — повтор с `&page=2`, `&page=3` и т.д. - Добавил критерий дубликата: совпадение по title/ключевым словам среди открытых issues → дописать комментарий к существующему issue и пропустить создание. - Удалил все упоминания `pipeline-status` и формулировку «returns issue context» из скилла. - Синхронизировал копию скилла в `~/.config/opencode/skills/bug-discovery/` — байт-идеально (diff пуст). ## Почему Шаг 1 гарантированно падал у каждого сабагента, нашедшего баг: `pipeline-status` принимает номер **PR**, а не issue, и не возвращает «issue context». Поиск дубликатов должен идти только через issues search API. ## Watch out Изменение сделано только в `SKILL.md` (1 файл) — правка логически неделима, поэтому 1 коммит вместо 3-4 (декомпозиция невозможна; `git reset` заблокирован deny-листом). Контракты остальных шагов протокола и AGENTS.md не тронуты. ## Pending — Closes #77 Closes #77
fix(bug-discovery): replace pipeline-status oracle with issues search API
All checks were successful
CI (always) / bootstrap (pull_request) Successful in 3s
70037b3e5f
Author
Owner

Code Review Summary

Summary

PR исправляет шаг 1 протокола bug-discovery: убран нерабочий вызов pipeline-status({ pr_number: N }) (оракул принимает только номер PR, не ищет issues) и заменён на прямой Forgejo issues search API (q=<ключевые слова>&type=issues&state=open&limit=50&page=1) с правилом пагинации и критерием дубликата. Копия в ~/.config/opencode/skills/bug-discovery/ синхронизирована байт-идентично (проверено diff — пусто). CI green, PR body полный.

Positives

  • Корректная диагностика: pipeline-status действительно принимает только PR-номер — замена на issues search API устраняет гарантированный фейл у каждого сабагента.
  • Пагинация (>50 результатов → &page=2, &page=3) и критерий дубликата (совпадение title/ключевых слов → комментарий к существующему issue, пропуск создания) прописаны явно.
  • Cross-file impact отсутствует: все читатели скилла (reviewer.md, memory-syncer.md, run-pipeline/SKILL.md, project-template/SKILL.md) ссылаются только по имени skill("bug-discovery"), без зависимости от внутреннего шага 1. Удалённый литерал нигде больше не используется. Новый curl-паттерн не конфликтует с deny-rules.
  • Синхронизация ~/.config копии выполнена и проверена.

Suggestions (info, not blocking)

  • SKILL.md:14 [style] «add a comment to the existing issue» — механизм не указан: tool'а для комментариев к issue нет, значит подразумевается raw curl POST к .../issues/{index}/comments. Стоит дописать команду явно (как сделано для поиска), чтобы сабагент не изобретал формат.
  • SKILL.md:12 [style] q=<ключевые слова> — кириллица в URL без percent-encoding; curl отправит как есть, Forgejo может не найти. Рекомендация: указать, что ключевые слова лучше на латинице/английском (title issues всё равно English по конвенции).
  • PR body [cosmetic] «Closes #77» продублирован дважды (автор + авто-append create-pr tool).

Verdict: APPROVE

## Code Review Summary ### Summary PR исправляет шаг 1 протокола bug-discovery: убран нерабочий вызов `pipeline-status({ pr_number: N })` (оракул принимает только номер PR, не ищет issues) и заменён на прямой Forgejo issues search API (`q=<ключевые слова>&type=issues&state=open&limit=50&page=1`) с правилом пагинации и критерием дубликата. Копия в `~/.config/opencode/skills/bug-discovery/` синхронизирована байт-идентично (проверено `diff` — пусто). CI green, PR body полный. ### Positives - Корректная диагностика: `pipeline-status` действительно принимает только PR-номер — замена на issues search API устраняет гарантированный фейл у каждого сабагента. - Пагинация (>50 результатов → `&page=2`, `&page=3`) и критерий дубликата (совпадение title/ключевых слов → комментарий к существующему issue, пропуск создания) прописаны явно. - Cross-file impact отсутствует: все читатели скилла (`reviewer.md`, `memory-syncer.md`, `run-pipeline/SKILL.md`, `project-template/SKILL.md`) ссылаются только по имени `skill("bug-discovery")`, без зависимости от внутреннего шага 1. Удалённый литерал нигде больше не используется. Новый curl-паттерн не конфликтует с deny-rules. - Синхронизация `~/.config` копии выполнена и проверена. ### Suggestions (info, not blocking) - **SKILL.md:14** [style] «add a comment to the existing issue» — механизм не указан: tool'а для комментариев к issue нет, значит подразумевается raw `curl` POST к `.../issues/{index}/comments`. Стоит дописать команду явно (как сделано для поиска), чтобы сабагент не изобретал формат. - **SKILL.md:12** [style] `q=<ключевые слова>` — кириллица в URL без percent-encoding; curl отправит как есть, Forgejo может не найти. Рекомендация: указать, что ключевые слова лучше на латинице/английском (title issues всё равно English по конвенции). - **PR body** [cosmetic] «Closes #77» продублирован дважды (автор + авто-append create-pr tool). ### Verdict: APPROVE
slaid098 deleted branch fix/bug-discovery/dedup-api 2026-08-16 19:25:50 +03:00
Sign in to join this conversation.
No reviewers
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!83
No description provided.