Repository navigation
Preserve sanitized upstream conflict type through GitHub adapter into bounded recovery - #700
Merged
Merged
Conversation
GitHubUpstreamRemote.CompleteAsync flattened every PushToUpstreamAsync failure into a message-only InvalidOperationException, dropping the UpstreamPushReconcileConflictException branch/strategy signal. The pipeline inner-chain check then missed the recovery route and burned generic push retries. Preserve only a validated typed signal: walk the exception chain for UpstreamPushReconcileConflictException, allowlist strategy to merge/rebase, validate and token-scrub the branch, and rethrow a fresh instance with no inner exception. Generic failures keep existing sanitization; arbitrary message text never triggers recovery. Tests drive genuine diverged work-branch conflicts through the real LocalGitHost and real GitHubUpstreamRemote (transport-rewrite fixture, no external network) for merge and rebase, plus pipeline routing to bounded conflict rework (single push attempt) and disabled/cap paths. CodeyBox-Prompt-Revision: 1 Co-Authored-By: CodeyBox <noreply@codeybox.invalid> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… recognition Add the missing pipeline-level successful-resolution test: a genuine upstream work-branch conflict enters bounded conflict rework via the real adapter (one push attempt), is resolved deterministically with real git (merge retaining both histories), then the requeued pickup re-verifies the required build against the changed tip and delivers Done with the PR opened and the exact resolved tip upstream. The test asserts the pre-resolution approval was not carried forward (fresh tip observed post-resolution, stale tip absent) and that no token material reaches logs, errors, serialized outcomes, or the timeline. Dedup the typed-conflict InnerException chain walk into UpstreamPushReconcileConflictException.TryFindIn (single source of truth in CodeyBox.Core) and call it from the adapter and the orchestrator. Clean up test-only quality issues: unused parameter, dead Uri, write-only fields, shim file cleanup on Dispose, try/finally temp-clone cleanup, and one shared pipeline fixture for the four push-path tests. CodeyBox-Prompt-Revision: 1 Co-Authored-By: CodeyBox <noreply@codeybox.invalid> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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.
Automated via CodeyBox — work item 265251cfe05c4af3a96d1c23a1edfc5d
Initiated by CodeyBox operator
Co-Authored-By: CodeyBox noreply@codeybox.invalid
🤖 Generated with CodeyBox