Skip to content

chore: choose a safe main-to-next reconciliation method #796

Description

@ss-o

Decision required

The public main and next branches have diverged. A maintainer must choose a separately reviewed reconciliation method before work on #795 begins.

Owner: @ss-o

Public comparison

Observed 2026-07-18:

  • next: 04bba1304898c214d64e2dd283516e788f6ba784
  • main: 1291b3e5aea6e597b52f0bf28eafb31bd26cb77c
  • merge base: ea4f7663d1ffce72f10a0c7013e8b67d16238c3c
  • comparison: main is 15 commits ahead of and 9 commits behind next
  • public compare: next...main

The active next protection requires linear history and signed commits.

Reviewed options

A — Rebuild and rewrite next

Rebuild next on top of main as a separately reviewed, fully signed linear history, then update next with force-with-lease.

  • Preserves the linear-history rule.
  • Rewrites the development branch.

B — Temporary linear-history exception

Temporarily exempt or disable required linear history, land one signed merge commit from main into next, then restore the rule.

  • Preserves existing commit identities.
  • Temporarily changes branch protection.
  • Permanently adds a merge commit.

C — Content reconciliation (recommended pending maintainer approval)

Amend the gate from exact Git-object ancestry to content reconciliation, apply main's public tree changes to a linear reconciliation branch and pull request based on next, and verify equivalent content.

  • Avoids rewriting next.
  • Avoids a branch-protection mutation.
  • Does not make the current main commit object an ancestor of next.

Option C is recommended for safety, pending explicit maintainer approval of the changed gate semantics.

Decision gate

This issue records options only. Do not create a reconciliation branch or pull request, change rules, merge, rewrite history, force push, or start the feature branch until the maintainer chooses an option and records the required verification.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions