opencode-config/docs/decisions/001-pr-18-ci-bootstrap.md
Sergey 1dbec56140
ci: ubuntu-latest workflows + dependabot (#18)
* ci: migrate workflows + dependabot from opencode

* ci: replace self-hosted with ubuntu-latest + update paths

* ci: add bootstrap job + hashFiles conditions for bootstrapping

* docs(handoff): add pr-6 handoff + ADR-002

* fix(ci): wrap hashFiles in expression syntax for job-level if

* fix(ci): replace hashFiles with output-based skip conditions

* docs(handoff): update pr-6 handoff + ADR-002 for output-based

* docs(handoff): fix PR number in handoff filename

* docs: add project map for PR #18

---------

Co-authored-by: opencode-agent <agent@slaid098.dev>
2026-07-23 22:22:09 +03:00

1.4 KiB

ADR-001: CI bootstrap job + output-based skip conditions

Статус

Accepted

Контекст

Chicken-and-egg: pipeline-driver требует CI для merge, но CI не может работать без #7 (scripts) и #5 (src/tests). Нужен способ иметь CI runs на каждом PR даже когда src/ и scripts/ ещё не мигрированы.

Решение

  1. ci.yml: bootstrap job (checkout + file check + always passes) — гарантирует CI run → pipeline_status CI phase = DONE
  2. lint/test/typecheck/complexity jobs: if: needs.bootstrap.outputs.has_src == 'true' — skip без src/*.py
  3. permissions-check/adr-check: step-level file checks (checkout → check script exists → conditional run)

Альтернативы

  • hashFiles() в job-level if — отклонено: GitHub Actions не распознаёт hashFiles как функцию в job-level if (ошибка "Unrecognized function: 'hashFiles'"). Заменено на output-based conditions.
  • Объединить #5+#6+#7 в один PR — отклонено (пользователь хочет атомарные PR)
  • Merge без pipeline-driver (admin override) — отклонено (нарушает pipeline протокол)
  • ci.yml без modifications (перенести как есть) — отклонено (CI падает без src/tests, нет runs → AMBIGUOUS → pipeline STOP)