Skip to content

feat(skills): a sync-upstream routine that proves fork changes survive - #52

Merged
pseudoseed merged 1 commit into
mainfrom
t3/sync-upstream-skill
Oct 29, 2026
Merged

pseudoseed merged 1 commit into
mainfrom
t3/sync-upstream-skill

Conversation

@pseudoseed

Copy link
Copy Markdown
Owner

Upstream syncs were done by hand. The 0.0.76 sync lost fork changes, and they were only caught by a manual comparison. The release was also cut from a branch commit instead of merged main.

This adds a sync-upstream skill with a fixed routine:

  1. Branch from main and merge upstream.
  2. Prove the fork's changes survived.
  3. Run every suite.
  4. Check web and iOS live.
  5. Open a PR.
  6. Release from merged main.
  • fork-delta-check.py lists every line fork main added on top of upstream that is missing after the merge. It sorts them into DROPPED (nothing upstream did explains it) and REWRITTEN (upstream rewrote the code the fork changed). Lines upstream itself later removed are left out.
  • run-suites.sh runs every package's tests one at a time. Running them in parallel gets web, mobile and relay killed for memory on a Mac. On macOS the desktop suite gets a case-sensitive temp volume, so its Linux icon tests pass.
  • ship-mac.sh builds only from a clean origin/main and creates the release as a draft pinned to the built commit. Publishing stays a separate, approved step.

Proof:

  • fork-delta-check on the unfixed 0.0.76 merge (82b95065db): flags the Codex usage-limit and storage settings losses, both fixed by hand in that sync.
  • fork-delta-check on the released tree: every remaining line is accounted for. Most are upstream rewrites that kept the fork's behavior (Forgejo and push moved to Effect.fn, upstream's own Claude auth check, the subagent picker moved into ComposerControlsBar). The rest are tests or dead code.
  • Trial merge of the 38 upstream commits since 0.0.76: resolving the 6 conflicts to upstream's side gets flagged as 128 dropped lines. Those lines are the fork's agent attention settings, copy on select, and usage pricing.
  • run-suites.sh on main: 31 of 32 packages pass, desktop 851 of 851. The 1 failure is the web GuestPage browser test, which also fails on clean upstream on this Mac.
  • ship-mac.sh guard: refuses both a dirty tree and a commit other than origin/main.

🤖 Generated with Claude Code
Model: Claude Opus 5.5, harness: Claude Code in PseudoCode

Upstream syncs were done by hand and lost fork changes without anyone
noticing. The new sync-upstream skill makes the sync a fixed routine:
branch from fork main, merge, run fork-delta-check.py to list every fork
line the merge dropped, run every test suite one at a time, check web and
iOS live, open a PR, and release only from the merged main.

ship-mac.sh now refuses anything but a clean origin/main and creates the
release as a draft pinned to the built commit, so going live stays a
separate, approved step.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L labels Oct 29, 2026
@github-actions

Copy link
Copy Markdown

Thread transfer impact

⚠️ The latest CI run did not produce a thread transfer result for 1ed2d8d.

This comment will update automatically after the next completed run.

@pseudoseed
pseudoseed merged commit 64f0ddd into main Oct 29, 2026
23 of 25 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant