Repository navigation
fix(merge): gate VESSEL on merge-ready PRs and hold non-submit PRs - #359
Merged
Merged
Conversation
Only route PRs whose ticket lifecycle is in submit to VESSEL for merge. PRs whose tickets are still in an earlier phase (building, testing, etc.) are held via a new lifecycle Block event instead of stalling the whole queue, so the next assignable ticket can proceed. - config: add Block lifecycle event (records reason + feedback, enters blocked) - config: add KEY_MERGE_READY_PRS shared-store key - nexus: compute merge-ready PRs in pending_prs_ready_for_vessel and persist them - vessel: prefer the merge-ready handoff over the raw pending queue - forge template: install and auth gh CLI in the workspace for PR creation - docker-compose: correct REDIS_URL service host for the controller
Collaborator
Author
|
@greptileai review |
1 similar comment
Collaborator
Author
|
@greptileai review |
Replace the optional gh CLI setup with a required, verified credential inheritance: workspace startup now fails loudly if the controller-spawner's inherited GitHub credential is missing, gh cannot be installed or authed, or the authed identity does not match the inherited token. Sets git author identity and records the resolved login (never the token).
Nexus-AgentFlow
approved these changes
Oct 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Only route PRs whose ticket lifecycle is in
submitto VESSEL for merge. PRs whose tickets are still in an earlier phase (building,testing, etc.) are held via a new lifecycleBlockevent instead of stalling the entire queue, so the next assignable ticket can proceed.This addresses the case where VESSEL repeatedly deferred an approved PR because the lifecycle was not in a merge-ready state, blocking the queue and preventing workspace recycling.
Changes
Blocklifecycle event — records a reason and feedback, entersblocked(recoverable throughplanning)KEY_MERGE_READY_PRSshared-store keypending_prs_ready_for_vesselcomputes which pending PRs are insubmitand holds the rest viaBlock; persists the merge-ready setmerge_ready_prshandoff over the raw pending queue inprepghCLI in the workspace so agents open PRs withgh pr createinstead of hand-rolling the REST APIREDIS_URLservice host for the controllerValidation
cargo check -p agent-nexus -p agent-vessel -p configpassescargo test -p config(74),cargo test -p agent-nexus(144),cargo test -p agent-vessel(44) all pass, including new tests:test_prep_prefers_merge_ready_prs_handoffheld_pending_pr_does_not_block_next_assignable_ticketsubmit_pending_pr_remains_eligible_for_vesselTest plan
submit→ passed to VESSEL for mergebuilding/earlier → held with aBlocklifecycle record, queue continuesThe PR appears safe to merge; the latest changes leave no outstanding review finding.
Summary
The PR gates VESSEL handoff on tickets reaching
submit, preserves in-flight ticket progress when withholding other PRs, and updates FORGE GitHub authentication and the controller’s Redis default. The latest changes remove an unused Docker version resolver and its dedicated test job.Diagram
%%{init: {'theme': 'neutral'}}%% flowchart TD A[Pending PRs] --> B[NEXUS checks ticket lifecycle] B -->|Submit| C[Merge-ready handoff] B -->|Other phase| D[Withhold PR; preserve lifecycle] C --> E[VESSEL refreshes against pending queue] E --> F[Merge eligibility checks]Reviews (6) · Last reviewed commit: "Merge branch 'develop' into fix/vessel-m..."