Sync sends Time's merge back to the copy; CHANGELOG conflicts keep both sides #204
Open
teahubxyz
wants to merge 10 commits from
ceo/sync-back-union into main
pull from: ceo/sync-back-union
merge into: teahubxyz:main
teahubxyz:main
teahubxyz:gh-pages
teahubxyz:havre/catalog-18-plus-20261024
teahubxyz:havre/byok-unfiltered-20261024
teahubxyz:time/card-260
teahubxyz:typy/context-words-254
teahubxyz:typy/center-target-254
teahubxyz:typy/inline-preview-254
teahubxyz:typy/smooth-typing-254
teahubxyz:typy/v0-254
teahubxyz:modern-havre
teahubxyz:uncensor-havre
teahubxyz:havre-split-hide
teahubxyz:havre-split
teahubxyz:havre-model-sort
teahubxyz:time/card-244
teahubxyz:time/card-223
teahubxyz:havre-art-and-snap
teahubxyz:havre-remix-edit
teahubxyz:havre-voice-in-tools
teahubxyz:havre-asmr-mode
teahubxyz:havre-update-pill
teahubxyz:havre-whisper
teahubxyz:claude/card-202-truncated-review-2wh43h
teahubxyz:time/card-211
teahubxyz:claude/card-198-superseded-cards-p3jqzg
teahubxyz:havre-live
teahubxyz:havre-open
teahubxyz:claude/taskmaster-haggle-checkout-f57aux
teahubxyz:havre-memory
teahubxyz:havre-photoshoot
teahubxyz:havre-workflows
teahubxyz:claude/card-173-rank-spine-cards
teahubxyz:claude/card-171-router-optimization-7t2dp6
teahubxyz:claude/router-pick-outcomes-99zcnh
teahubxyz:time/card-48
teahubxyz:time/card-98
teahubxyz:time/card-170
teahubxyz:time/card-89
teahubxyz:time/card-160
teahubxyz:time/card-114-gh-pages
teahubxyz:time/card-113-gh-pages
teahubxyz:time/card-96-gh-pages
teahubxyz:time/card-85
teahubxyz:havre-next2
teahubxyz:havre-cast
teahubxyz:time/card-82
teahubxyz:time/card-80
teahubxyz:time/card-79
teahubxyz:ceo/worker-base-and-slack
teahubxyz:time/card-87
teahubxyz:time/card-94
teahubxyz:chatgpt/parallel-api
teahubxyz:time/card-95
teahubxyz:time/card-71
teahubxyz:mention-ledger-token
teahubxyz:astra-board
teahubxyz:havre-next
teahubxyz:venture/slyng
teahubxyz:havre-brutalist
teahubxyz:ship-from-repo
teahubxyz:time/card-63
teahubxyz:time/card-60
teahubxyz:time/card-61
No Reviewers
Labels
Clear labels
accessibility
andon
astra
bug
cloud
documentation
duplicate
enhancement
good first issue
help wanted
invalid
needs-human
planned
question
queued
ready
signal
signup
spec
venture
venture-batch
wontfix
Barrier affecting people with disabilities
Something isn't working
Improvements or additions to documentation
This issue or pull request already exists
New feature or request
Good for newcomers
Extra attention is needed
This doesn't seem right
Further information is requested
Time picks this up on the next heartbeat
👍 = I want the next version
early-access signup for a venture
This will not be worked on
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: teahubxyz/time#204
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Two gaps showed up when the cloud lane's #172 (PR #203) was approved but conflicted with main on one CHANGELOG line.
sync.py, back to the copy. An imported branch has one writer, the copy. Time also writes it in one case:
update_branchmerges the base into an approved PR that fell behind. On the next run, sync saw the home's branch differ from the copy's and forced the copy's older tip over it, which undid the merge. Now:back [...].time.py, union merge. Before merging,
update_branchwritesCHANGELOG.md merge=unionto the clone's.git/info/attributes, so two PRs that each add a line at the same spot keep both lines. A new repo.gitattributessays the same to anyone else merging, including cloud sessions. Branches cut before it lack it, which is why the clone writes it too.time.py, conflict hint. A conflict on a PR that sync.py opened (its body says
tm.IMPORTED, "brought in by sync.py") now says the fix goes to the copy. It no longer suggests/time retry, whose worker would commit to the home and be overwritten by the next sync.Tests, all green locally (
test_time.py,test_housekeeping.py,test_seed.py; the havre npm step was skipped because npm in my sandbox can't reach the registry, and CI runs it):IMPORTED./time retry.🤖 Generated with Claude Code
https://claude.ai/code/session_017K4vyY3yUD3GsvoZaAtKkD
An independent review (a fresh agent that hadn't seen the work) requested changes. Its findings and what changed:
times_merges()sends the home's commits back only when every first-parent commit between the copy and the home is a two-parent merge authored byTIME_GIT_NAME.--force-with-leaseon the copy's branch at the sha sync read, so a rewind in between pushes nothing.check=False, and it falls through to import)./CHANGELOG.md.The reviewer confirmed that each new test fails with its hunk reverted. The suites are green locally:
test_time.py,test_housekeeping.py,test_seed.py.View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.