docs: design conflict-free results sync without force push#1503
Merged
Conversation
Design doc for a no-force-push results-sync workflow: auto-merge the append-mostly common case via artifact-aware merge drivers (fetch->merge->push), with a hardened human-in-the-loop temporary timestamped-branch fallback only on true overlay conflicts. Resume canonical sync on confirmed merge (tree-equality/ancestor, squash-safe), never on branch deletion. Supersedes backup_and_force_push. Tracked by bead av-raf (epic) with phase children av-raf.1..4. Related to av-xwm. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Deploying agentv with
|
| Latest commit: |
7e1ba22
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://edccc6a7.agentv.pages.dev |
| Branch Preview URL: | https://conflict-free-results-sync.agentv.pages.dev |
Resume is now an explicit user OK button, not auto-detection. Drop the squash-safe tree-equality/ancestor machinery and the per-file merge-UI dependency (av-xwm): GitHub's PR is the conflict-resolution surface. Layer 1 auto-merges the append-only common case (union/JSON drivers). Layer 2: on true conflict push a timestamped temp branch, surface a GitHub compare/PR link, user merges on GitHub, clicks OK, AgentV pulls the target branch to resume. Premature OK re-diverges without data loss. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Entire-Checkpoint: b45ebb0fe0c0
Collaborator
Author
|
Updated the design to be much simpler:
Still docs-only; tracked by epic av-raf. |
The user owns the GitHub merge, so deleting the merged sync-* branch belongs to that same GitHub flow (auto-delete-on-merge or manual). AgentV only creates the temp branch and reads the target on OK; it does not delete or track temp branches for cleanup. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Entire-Checkpoint: d88be769afd1
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
Design artifact (docs-only) for a no-force-push results-sync workflow for AgentV Dashboard/API. Evaluates the operator's timestamped-branch + merge + delete-to-resync idea, hardens it, and recommends a hybrid:
runs/<exp>/<ts>/, append-only index JSONL). Replace thebackup_and_force_pushescape hatch with a bounded fetch → merge → push loop using artifact-aware merge drivers (merge=unionfor index, a JSON set/field-union driver for the small mutable overlay). A non-fast-forward becomes a real merge commit — no force push.sync-<ts>-<rand6>branch (never canonical), surface a compare/PR link, and resume canonical sync only when the contributed run bundles actually reach canonical (tree-equality / ancestor check, squash-safe) — not on branch deletion (which is unreliable and risks silent data loss).Doc:
docs/plans/2026-06-24-001-feat-conflict-free-results-sync-plan.md.Key points
ghenrichment).force_push_localaction.Tracker
Notes
Design only; no implementation. No screenshots committed (would go to
agentv-private). Relative paths in the doc are inline code, not markdown links, so the lychee link check is unaffected.