fix(create-pr): base field required by Forgejo POST /pulls #26
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Контекст
PR#25 (
feat(clone): add clone tool) выявил, чтоcreate-prtool падает с HTTP 422[Base]: Requiredпри создании PR в Forgejo. Сабагент PR#25 был вынужден сделать fallback на rawcurlс ручнымbase: mainв JSON body.В памяти репо (
opencode-config-004.md:42,56) записано: "baseопциональный (Forgejo default_branch)" — это утверждение оказалось неверным: ForgejoPOST /api/v1/repos/{owner}/{repo}/pullsтребуетbasefield явно, default_branch НЕ подставляется автоматически.PR#18 (Closes #9) пофиксил
headfield (тоже required), ноbaseостался опциональным вcreate-pr.ts/_shared.ts— тот же класс бага, что был уheadдо PR#18.Задача
Сделать
basefield required (fail-loud, НЕ тихо опустить) вcreate-prtool — по аналогии с фиксheadfield в PR#18. Автоопределениеbaseчерезgit rev-parse --abbrev-ref origin/HEAD(default branch) или явная передача--base <branch>.Контракты
create-prtool API:baseпараметр — теперь required (НЕ optional). Если не передан — автоопределение черезgit symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@'(default branch), fallback наmain._shared.ts:baserequired дляpr create(fail-loud), какheadпосле PR#18.POST /pullsbody:base: <branch>— обязательное поле (подтверждено HTTP 422[Base]: Requiredв PR#25).Инварианты
create-prtool НЕ меняется для вызовов, гдеbaseуже передаётся явно.baseНЕ должно ломаться на репо безorigin/HEAD(fresh clone безgit fetch→ fallback наmain).base(только наhead).Граничные случаи
master(неmain) — автоопределение черезorigin/HEADкорректно вернётmaster.origin/HEAD(fresh clone,git fetchне выполнен) — fallback наmain(большинство Forgejo репо используютmain).create-prс явнымbase— автоопределение НЕ срабатывает, переданное значение используется как есть.Влияние на связанные компоненты
create-pr.ts— автоопределениеbase(по образцуheadиз PR#18)._shared.ts—baserequired дляpr create.test_create_pr_tool.py+.ts— новые тесты на автоопределениеbase, fallback наmain, явныйbase.run-pipeline/SKILL.mdTemplate A — если документируетcreate-prвызов, обновить (вероятно не нужно —baseавтоопределяется).opencode-config-004.md:42,56— обновить запись "baseопциональный" → "baserequired (fail-loud, автоопределение черезorigin/HEAD)".Вне scope
POST /pulls(title, body — уже required, работают).ghCLI (удалён, ADR-093).merge-pr/post-reviewtools.Критерии приемки
create-prtool успешно создаёт PR в Forgejo БЕЗ явной передачиbase(автоопределение черезorigin/HEAD).create-prtool успешно создаёт PR с явнымbase(переданное значение используется).[Base]: RequiredНЕ воспроизводится после фикса.base, fallback наmain(noorigin/HEAD), явныйbase, detached HEAD (base НЕ зависит от HEAD).baseопциональный исправлена.