chore(test): forgejo pipeline smoke-test (end-to-end 6-phase) #2

Open
opened 2026-08-06 19:59:36 +03:00 by slaid098 · 0 comments
Owner

Контекст

После merge issue B (fix(tools): port remaining GitHub-specific paths to Forgejo) нужно end-to-end проверить, что полный pipeline ISSUE→IMPLEMENT→CI→REVIEW→MERGE→MEMORY работает на Forgejo.

Клон: git clone https://slaid098:2cbcfa4b8f269bed7f1323b418cc7c11637f5cb7@git.slaid098.dev/slaid098/opencode-config.git. Env: FORGEJO_URL=https://git.slaid098.dev, FORGEJO_TOKEN=2cbcfa4b8f269bed7f1323b418cc7c11637f5cb7.

В репо сейчас 0 open issues, 0 open PRs.

Задача

Провести smoke-test: создать throwaway issue + PR, прогнать все 6 фаз, verify каждую через pipeline-status, cleanup.

Step 0 — подготовка

  1. Создать issue chore(test): forgejo smoke test с 8 RU headings, без label. Записать N.
  2. Создать ветку chore/forgejo-smoke-test от main, no-op commit, push.
  3. Создать PR chore(test): forgejo smoke test с 4 headings + Closes #N. Записать M.

Step 1 — ISSUE phase

pipeline-status({pr_number: M})Phase 1 (ISSUE): DONE.

Step 2 — IMPLEMENT phase

pipeline-statusPhase 2 (IMPLEMENT): DONE (commits на ветке).

Step 3 — CI phase

pipeline-statusPhase 3 (CI): DONE (commit-status = success). Если не прошёл — poll (CI ~2 мин).

Step 4 — REVIEW phase

Reviewer сабагент: post-review({pr_number: M, verdict: "APPROVE", body: "smoke test ok"}). pipeline-statusPhase 4 (REVIEW): DONE.

Step 5 — MERGE phase

merge-pr({pr_number: M}). pipeline-statusPhase 5 (MERGE): DONE.

Step 6 — MEMORY phase

Memory-syncer сабагент. pipeline-statusPhase 6 (MEMORY): DONE.

Step 7 — финал

pipeline-statusStatus: COMPLETE.

Cleanup

Issue N auto-close через Closes #N (или manually через PATCH /issues/{N}). Ветка auto-delete через merge-pr.

Контракты

  • Smoke-test issue/PR — throwaway. После cleanup следов не остаётся (issue closed, branch deleted).
  • Все 6 фаз DONE. Если любая NOT_DONE/AMBIGUOUS > 5 мин — STOP, report, НЕ merge.
  • Используются ТОЛЬКО портированные tools/oracles. Никаких raw gh (кроме read-only curl).
  • Клон/рабочая копия — НЕ live с WIP.

Инварианты

  • Issue B (5 фиксов) должен быть MERGED на main до smoke-test.
  • FORGEJO_URL + FORGEJO_TOKEN заданы в env.
  • Repo имеет CI (ci.yml) — запустится на push/PR.

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

  • CI может не запуститься мгновенно — poll с таймаутом.
  • Closes #N auto-close: если Forgejo не auto-closes — закрыть manually (PATCH /issues/{N} с {state: "closed"}).
  • headRefName (Fix #2): smoke-test проверяет, что pipeline-status корректно резолвит ветку.

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

  • slaid098/opencode-config: +1 closed issue, +1 merged PR (squash, ветка удалена). main +1 squash-commit.
  • Memory: +1 запись про smoke-test PR.

Вне scope

  • Нагрузочное тестирование.
  • Тестирование create-readme Forgejo PUT (покрыто issue B Fix #1).
  • Тестирование project-status branch-protection (Fix #3 — срабатывает только при существующей rule).
  • Тестирование release skill (Fix #4 — post-merge, не в 6 фазах).

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

  • Issue N создан, PR M создан с Closes #N.
  • pipeline-status → Phase 1 (ISSUE): DONE.
  • pipeline-status → Phase 2 (IMPLEMENT): DONE.
  • pipeline-status → Phase 3 (CI): DONE.
  • post-review → success. pipeline-status → Phase 4 (REVIEW): DONE.
  • merge-pr → success. pipeline-status → Phase 5 (MERGE): DONE.
  • pipeline-status → Phase 6 (MEMORY): DONE.
  • pipeline-status → Status: COMPLETE.
  • Cleanup: issue N closed, ветка deleted.
  • Отчёт: issue N, PR M, время каждой фазы, отклонения.
## Контекст После merge issue B (`fix(tools): port remaining GitHub-specific paths to Forgejo`) нужно end-to-end проверить, что полный pipeline ISSUE→IMPLEMENT→CI→REVIEW→MERGE→MEMORY работает на Forgejo. Клон: `git clone https://slaid098:2cbcfa4b8f269bed7f1323b418cc7c11637f5cb7@git.slaid098.dev/slaid098/opencode-config.git`. Env: `FORGEJO_URL=https://git.slaid098.dev`, `FORGEJO_TOKEN=2cbcfa4b8f269bed7f1323b418cc7c11637f5cb7`. В репо сейчас 0 open issues, 0 open PRs. ## Задача Провести smoke-test: создать throwaway issue + PR, прогнать все 6 фаз, verify каждую через `pipeline-status`, cleanup. ### Step 0 — подготовка 1. Создать issue `chore(test): forgejo smoke test` с 8 RU headings, без label. Записать N. 2. Создать ветку `chore/forgejo-smoke-test` от `main`, no-op commit, push. 3. Создать PR `chore(test): forgejo smoke test` с 4 headings + `Closes #N`. Записать M. ### Step 1 — ISSUE phase `pipeline-status({pr_number: M})` → `Phase 1 (ISSUE): DONE`. ### Step 2 — IMPLEMENT phase `pipeline-status` → `Phase 2 (IMPLEMENT): DONE` (commits на ветке). ### Step 3 — CI phase `pipeline-status` → `Phase 3 (CI): DONE` (commit-status = success). Если не прошёл — poll (CI ~2 мин). ### Step 4 — REVIEW phase Reviewer сабагент: `post-review({pr_number: M, verdict: "APPROVE", body: "smoke test ok"})`. `pipeline-status` → `Phase 4 (REVIEW): DONE`. ### Step 5 — MERGE phase `merge-pr({pr_number: M})`. `pipeline-status` → `Phase 5 (MERGE): DONE`. ### Step 6 — MEMORY phase Memory-syncer сабагент. `pipeline-status` → `Phase 6 (MEMORY): DONE`. ### Step 7 — финал `pipeline-status` → `Status: COMPLETE`. ### Cleanup Issue N auto-close через `Closes #N` (или manually через `PATCH /issues/{N}`). Ветка auto-delete через `merge-pr`. ## Контракты - Smoke-test issue/PR — throwaway. После cleanup следов не остаётся (issue closed, branch deleted). - Все 6 фаз DONE. Если любая NOT_DONE/AMBIGUOUS > 5 мин — STOP, report, НЕ merge. - Используются ТОЛЬКО портированные tools/oracles. Никаких raw `gh` (кроме read-only curl). - Клон/рабочая копия — НЕ live с WIP. ## Инварианты - Issue B (5 фиксов) должен быть MERGED на `main` до smoke-test. - `FORGEJO_URL` + `FORGEJO_TOKEN` заданы в env. - Repo имеет CI (`ci.yml`) — запустится на push/PR. ## Граничные случаи - CI может не запуститься мгновенно — poll с таймаутом. - `Closes #N` auto-close: если Forgejo не auto-closes — закрыть manually (`PATCH /issues/{N}` с `{state: "closed"}`). - `headRefName` (Fix #2): smoke-test проверяет, что `pipeline-status` корректно резолвит ветку. ## Влияние на связанные компоненты - `slaid098/opencode-config`: +1 closed issue, +1 merged PR (squash, ветка удалена). `main` +1 squash-commit. - Memory: +1 запись про smoke-test PR. ## Вне scope - Нагрузочное тестирование. - Тестирование `create-readme` Forgejo PUT (покрыто issue B Fix #1). - Тестирование `project-status` branch-protection (Fix #3 — срабатывает только при существующей rule). - Тестирование `release` skill (Fix #4 — post-merge, не в 6 фазах). ## Критерии приемки - [ ] Issue N создан, PR M создан с `Closes #N`. - [ ] `pipeline-status` → Phase 1 (ISSUE): DONE. - [ ] `pipeline-status` → Phase 2 (IMPLEMENT): DONE. - [ ] `pipeline-status` → Phase 3 (CI): DONE. - [ ] `post-review` → success. `pipeline-status` → Phase 4 (REVIEW): DONE. - [ ] `merge-pr` → success. `pipeline-status` → Phase 5 (MERGE): DONE. - [ ] `pipeline-status` → Phase 6 (MEMORY): DONE. - [ ] `pipeline-status` → Status: COMPLETE. - [ ] Cleanup: issue N closed, ветка deleted. - [ ] Отчёт: issue N, PR M, время каждой фазы, отклонения.
Sign in to join this conversation.
No labels
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#2
No description provided.