Forgejo: re-check agent PRs for conflicts when their base branch is pushed #90
No reviewers
Labels
No labels
Agent
Ignore
Agent
In Progress
Agent
Planned
Agent
Planning
Agent
Ready
Agent
Triage
Compat
Breaking
Kind
Bug
Kind
Documentation
Kind
Enhancement
Kind
Feature
Kind
Security
Kind
Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
lucas/omp-deck!90
Loading…
Reference in a new issue
No description provided.
Delete branch "agent/issue-89-base-push-conflicts"
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?
Implements the plan in #89.
webhook.ts:pushdeliveries torefs/heads/*are accepted as a repo-levelpushedrow (number 0), including the agent's own pushes; tag pushes and branch deletions are ignored.dispatch-api.ts:PullSummarygainsmergeable/baseBranch; newlistOpenPulls(state=open, also filtered client-side).dispatcher.ts:handleBasePushfans apushedrow out into onebase_pushedrow per open agent PR targeting the branch (failures go to the deck fallback only, since there is no thread). The gate treatsbase_pushedlike a push to the agent's PR: no permission check, drops on base change or when Forgejo does not reportmergeable: false.baseConflictSeedconfirms withcheckBaseConflict(injectable) in the session's checkout; a missing session is created as an implementer session.conversation-detect.ts:buildBaseConflictSeedwith conflicting files, optional catch-up text and the sharedrebaseInstruction.Tests: webhook classification cases and dispatcher fan-out / mergeable drop / clean local merge / mapped & new session / failed check.
bun test apps/server/src/forgejopasses (277), server and web typecheck clean. Not exercised against a live Forgejo instance; whethermergeablecan briefly readfalseright after a push is unverified (the local check filters that).Closes: #89