Skip to content

Harden release sync ancestry checks and conflict recovery - #1687

Merged
David Pine (IEvangelist) merged 2 commits into
mainfrom
ievangelist-release-sync-repair
Sep 18, 2026
Merged

David Pine (IEvangelist) merged 2 commits into
mainfrom
ievangelist-release-sync-repair

Conversation

@IEvangelist

@IEvangelist David Pine (IEvangelist) commented Sep 17, 2026 •

Copy link
Copy Markdown
Member

Summary

The release sync failed run reports 22 code/config/test conflicts outside the existing auto-resolution policy. Previous release repair PRs #1668 and #1680 landed as single-parent commits, copying main content without preserving main ancestry; the common ancestor remains September 2.

This is the main-based safeguards and prerequisite data-correction PR, not the one-time release repair. The separate repair must target release/13.6 and land with Create a merge commit, never squash/rebase. This safeguards PR may use the normal main-branch squash policy.

  • Extract the existing generated/curated/manual merge policy into a testable Bash helper, loaded from the pinned main SHA rather than the release checkout.
  • Distinguish real ancestor no-ops from fatal Git merge errors, propagate generated restoration failures, and verify both merge parents/main ancestry before pushing.
  • Add a job summary with pinned SHAs, conflicting paths, and ancestry-preserving recovery instructions.
  • Run disposable Git regression fixtures through the required CI gate. No broader main-wins conflict resolution or branch-protection bypass.
  • Remove the stale duplicate Floci catalog row manually appended by docs: restore Floci integration documentation #1590. Release's strict Dev Hub catalog validation rejects the duplicate when generated data is mirrored from main. Retain the existing generated Floci row, including its polyglot tag and download count; no package/API versions or mappings change. Add a case-insensitive unique-package-ID regression to structured-data validation instead of weakening release validation.

Third-party links and affiliations

None. The deleted duplicate URL remains on the retained Floci entry.

Validation

  • Bash syntax checks for both scripts passed.
  • Seven disposable Git scenarios passed: ancestor no-op; clean two-parent merge; generated mirroring/versioned-orphan cleanup plus curated preservation/deletion and nonconflicting content; unknown-conflict abort/reporting; fatal merge without MERGE_HEAD; introduced conflict-marker rejection; and squash-repair ancestry regression followed by a proper repair and successful next sync.
  • actionlint -shellcheck= .github/workflows/update-release-branch.yml .github/workflows/ci.yml passed.
  • The new uniqueness regression failed on exactly communitytoolkit.aspire.hosting.floci before data correction.
  • pnpm --dir ./src/frontend test:unit:structured-data: 2 files / 35 tests passed after correction.
  • Targeted ESLint for the changed test and git diff --check passed.
  • No local frontend build was run; full build validation remains in CI.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI lite review requested due to automatic review settings September 17, 2026 15:21

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

It changes production release-branch merge and push automation, so final human validation is warranted.

Pull request overview

Hardens release-branch synchronization by extracting merge policy into a pinned Bash helper and adding ancestry regression tests.

Changes:

  • Adds conflict classification, recovery summaries, failure propagation, and merge-parent validation.
  • Adds disposable Git fixtures to the required CI gate.
  • Runs the helper from the pinned main commit before pushing.
File summaries
File Description
.github/workflows/update-release-branch.yml Uses the pinned merge helper and pushes validated merges.
.github/workflows/ci.yml Adds release-sync tests to the CI gate.
.github/scripts/merge-main-into-release.sh Implements merge policy and ancestry safeguards.
.github/scripts/test-merge-main-into-release.sh Covers merge, conflict, recovery, and ancestry scenarios.
Review details
  • Files reviewed: 4/4 changed files
  • Comments generated: 0
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@aspire-repo-bot

Copy link
Copy Markdown
Contributor

Frontend HTML artifact ready

The latest frontend build uploaded the frontend-dist artifact for PR #1687. Use the VS Code button below to open this PR with GitHub Artifacts Explorer and browse the built HTML locally.

VS Code: Open PR #1687 artifacts

This comment updates automatically when a new frontend build artifact is uploaded.

Keep the generated Floci entry and reject duplicate package IDs in structured-data validation. The stale manually appended row prevented the release catalog from consuming main's mirrored data.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the release-sync helper, workflow invocation, Git failure handling, ancestry safeguards, generated-data correction, and regression fixtures. No actionable issues found.

@IEvangelist
David Pine (IEvangelist) merged commit 1885cc4 into main Sep 18, 2026
14 checks passed
@IEvangelist
David Pine (IEvangelist) deleted the ievangelist-release-sync-repair branch September 18, 2026 07:20
David Pine (IEvangelist) added a commit to alistairmatthews/aspire.dev that referenced this pull request Sep 23, 2026
Reconcile navigation, Mermaid rendering, deployment guards, and Live status diagnostics while retaining Dev Hub, release docs, and official blog updates. Combine Vite redirect definitions with the StaticHost proxy and cover both proxy states. Preserve pinned dependencies and exactly mirror the seven approved generated paths.

Validation: 208 Live tests and 273 frontend tests pass; pinned pnpm frozen-lockfile install and 366 E2E test discovery pass. PENDING DATA VALIDATION: pinned main contains duplicate Floci integration rows rejected by the release catalog. Keep strict validation; do not publish or land until corrected canonical main is merged and catalog tests pass. Safeguards PR microsoft#1687 must land first. MUST MERGE; DO NOT SQUASH OR REBASE.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
David Pine (IEvangelist) added a commit to alistairmatthews/aspire.dev that referenced this pull request Sep 23, 2026
Merge main 1885cc4 after safeguards PR microsoft#1687 landed. Include canonical Floci uniqueness correction and security fixes; preserve intervening release/13.6 commit 732f999 and the original de85064 merge without rewriting history.

Validation: 355 focused frontend tests, 36 structured-data tests, 235 Live tests, 7 release-sync fixture scenarios, and 25 OG preview tests pass. Strict catalog validation and seven-path generated parity pass. Previously frozen-validated package manifest and lockfile are unchanged. No local site build. MERGE COMMIT REQUIRED; DO NOT SQUASH OR REBASE.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
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.

3 participants