Skip to content

feat(sync)!: commit and ship in separate runs, no flag needed - #19

Merged
flipvh merged 1 commit into
mainfrom
feat/sync-staged-ship
Aug 13, 2026
Merged

feat(sync)!: commit and ship in separate runs, no flag needed#19
flipvh merged 1 commit into
mainfrom
feat/sync-staged-ship

Conversation

@flipvh

@flipvh flipvh commented Aug 13, 2026

Copy link
Copy Markdown
Member

Reworks the --no-ship idea (branch feat/sync-no-ship, never PR'd) into flagless default behavior: each cella sync run advances one stage, and the run that commits never ships.

Background: a finished sync merge could only be committed by the rerun, which also pushed and opened the PR in the same step. Drift triage (cella analyze needs a committed HEAD) therefore pushed users toward a manual git commit — which records a two-parent merge commit and makes the PR list the entire upstream history (raak#97: 247 commits). The first fix attempt was an opt-out --no-ship flag, but the ordinal model is simpler: first run = merge + commit (never ship), final run = ship.

  • Clean merge: the first run merges and commits right away (pnpm install + pnpm check, squash commit), then stops on the branch — that pause is the drift-triage window.
  • Conflicted merge: first run stops for IDE resolution; the rerun commits and stops the same way.
  • Committed sync branch: a further run ships it (flatten check, push, PR, back to trunk) — unchanged.
  • The manual-commit warning stays on the conflict guidance; README's sync-workflow section rewritten to match.

BREAKING CHANGE: cella sync no longer pushes/opens the PR in the same run that commits the merge; rerun it on the committed branch to ship. Ships as 0.2.0; cella's root dep needs a bump from ^0.1.0 afterwards.

Pairs with cellajs/cella#1042 (the cella-sync skill rewrite), which needs updating to drop its --no-ship references.

🤖 Generated with Claude Code

A finished sync merge could only be committed by the rerun, which also
pushed and opened the PR in the same step. Drift triage (cella analyze
needs a committed HEAD) therefore pushed users toward a manual
git commit — which records a two-parent merge commit and makes the PR
list the entire upstream history (raak#97: 247 commits).

Instead of an opt-out --no-ship flag, the pause is now the default:
each run advances one stage and the run that commits never ships.

- clean merge: the first run merges AND commits (pnpm install + check,
  squash commit), then stops on the branch for drift triage
- conflicted merge: first run stops for resolution; the rerun commits
  and stops the same way
- a further run on the committed sync branch ships it (push + PR)
- manual-commit warning stays on the conflict guidance

BREAKING CHANGE: `cella sync` no longer pushes/opens the PR in the same
run that commits the merge; rerun it on the committed branch to ship.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
flipvh added a commit to cellajs/cella that referenced this pull request Aug 13, 2026
…lagless CLI default

Pairs with cellajs/cella-cli#19: each sync run advances one stage and
the run that commits never ships; a clean merge commits on the first
run, ship is always its own rerun.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@flipvh
flipvh merged commit 42b2216 into main Aug 13, 2026
7 checks passed
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.

1 participant