Home

boring / v2

publicBoring-Software-Inc/v2
Overview Code History Branches Pull requestsIssuesInsights Campfire Docs
main
HomeOverview Code PRsIssues

feat(forge-opengit): adapter + worker runtime, check as the merge gate

2 months ago

39a542c
Authored
grim8/22/2026, 6:47:35 AM
open-git installation tokens can now comment, review and post checks, so the
actions half of ForgeAdapter is real. The worker resolved every non-github
forge to null, which meant a normalized open-git event reached the engine and
died there; buildResolveForge now carries a per-forge record and open-git
resolves with an adapter.

The check is the WHOLE gate, and that is open-git's own design:
mergePullRequestForActor blocks on getPullRequestCheckGate and consults no
reviews, so a failing tripwire check is a dead merge button on every repo with
no branch protection to opt into. POST /commits/:sha/checks upserts by name, so
it cannot double-post and clears itself on the next write.

Therefore block does NOT file a changes-requested review here: it would gate
nothing, and open-git has no dismissal endpoint, so it would sit on the change
request forever after the block cleared. comment, label and request-review
throw for the same reason — open-git's comments endpoint is create-only, and
upsert-never-append (7) cannot be honoured without a list or patch.

reads: null, and the four read methods throw rather than return empty. An empty
diff is a claim that would make max-files-changed pass and honeypot find
nothing; throwing degrades so the affected rules skip (6).

needs_review maps to a blocking status. open-git's gate is binary with no
advisory state, so parking for a human means holding the merge — fail-closed,
and a deliberate divergence from GitHub's non-blocking neutral.

Parentbccfb77

10 files changed
  • .env.example+8−2
  • apps/worker/src/forge-runtime.ts+58−8
  • apps/worker/src/index.ts+17−1
  • packages/forge-opengit/src/actions/check.ts+54−0
  • packages/forge-opengit/src/actions/execute.ts+57−0
  • packages/forge-opengit/src/adapter.test.ts+213−0
  • packages/forge-opengit/src/adapter.ts+70−0
  • packages/forge-opengit/src/client/auth.ts
+97
−0
  • packages/forge-opengit/src/client/http.ts+67−0
  • packages/forge-opengit/src/index.ts+15−7