Skip to content

feat(runway): wire merge-conflict-check controller to Merger extension#280

Open
kevinlnew wants to merge 1 commit into
mainfrom
kevin.new/runway-merge-check-ctrl
Open

feat(runway): wire merge-conflict-check controller to Merger extension#280
kevinlnew wants to merge 1 commit into
mainfrom
kevin.new/runway-merge-check-ctrl

Conversation

@kevinlnew

Copy link
Copy Markdown
Contributor

Summary

  • Wire the merge-conflict-check controller to the merger.Factory extension so it performs the actual dry-run merge check instead of just logging
  • Publish MergeResult to the merge-conflict-check-signal topic — SUCCEEDED on clean merge, FAILED on merger.ErrConflict (ack, not a controller error)
  • Publish errors are retryable (errs.NewRetryableError); deserialize/factory/check errors are non-retryable (DLQ)
  • Update example server wiring with noop merger factory and signal topic in the registry

Test plan

  • Unit tests: success, merge conflict, merger infra error, factory error, publish error, deserialize error
  • bazel test //runway/controller/mergeconflictcheck:mergeconflictcheck_test passes
  • bazel build //example/runway/server:runway builds cleanly
  • make gazelle — BUILD files in sync
  • make fmt — no formatting changes

🤖 Generated with Claude Code

@kevinlnew kevinlnew requested review from a team, behinddwalls and sbalabanov as code owners June 26, 2026 17:42
Comment thread runway/controller/mergeconflictcheck/mergeconflictcheck.go Outdated
Comment thread runway/controller/mergeconflictcheck/mergeconflictcheck.go Outdated
Comment thread runway/controller/mergeconflictcheck/mergeconflictcheck.go Outdated
kevinlnew added a commit that referenced this pull request Jun 29, 2026
- Reverse if/else on ErrConflict to early-return on non-conflict errors
- Remove errs.NewRetryableError from publish — let the consumer's
  classifier handle retryability, not the controller
- Apply both fixes to merge-conflict-check and merge controllers

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@kevinlnew kevinlnew force-pushed the kevin.new/runway-merge-check-ctrl branch from d46d3cc to 86384e6 Compare June 30, 2026 21:38
The merge-conflict-check controller was a parse-and-log stub. Wire it to
the Merger extension so it performs the dry-run check and publishes the
MergeResult to the merge-conflict-check-signal topic. A merge conflict is
an expected outcome (ack + publish FAILED), not an infrastructure error.
@kevinlnew kevinlnew force-pushed the kevin.new/runway-merge-check-ctrl branch from 86384e6 to 6cd393d Compare June 30, 2026 22:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants