Skip to content

Sync current anomalyco/opencode dev into opencode-skein #51

Description

@androidand
Proposal

Context

opencode-skein is a permanent downstream fork of anomalyco/opencode. Current baseline is upstream commit 8716c43 synced 2026-06-18. Fork is 215 commits ahead, upstream is 1208 commits ahead.

Goal is to bring fork onto current upstream dev without losing Skein capabilities, while preserving fork history and making future syncs easier.

Requirements

  • Preserve fork history; do not rewrite dev
  • Integrate upstream via merge into sync worktree, then merge back to dev
  • Preserve all Skein capabilities: loop, auto-reply, pattern detection, hooks, scheduler, llama-skein discovery, local provider UI, context sidebar, themed loading
  • Update fork/manifest.json baseline atomically with sync
  • Verify fork:verify passes and behavioral tests remain green
  • Do not discard 215 fork commits
  • Keep patch surface minimal

Non-goals

  • Rebase dev history
  • Merge fork features upstream
  • Major refactor of Skein before sync is stable

Success criteria

  • dev contains upstream dev SHA d041eee or later
  • fork/manifest.json baseline updated
  • fork:verify passes
  • All Skein capabilities verified behaviorally

Disposition (2026-09-18)

Shipped. Merged (baseline 4643e65, 2026-08-14). Upstream is ~316 commits ahead again — the next sync is a new change.

Design notes

Design

Merge strategy

Use existing fork sync tooling: bun run sync:check --apply creates worktree sync/upstream-YYYYMMDD. Merge upstream/dev into worktree, resolve conflicts, verify, then merge back to dev via PR.

Conflict resolution policy

  • Fork-owned files: keep fork implementation, verify imports
  • Patched upstream files: start from upstream structure, reapply minimal Skein behavior
  • Moved subsystems: port capability to new location
  • Upstream equivalent exists: remove fork code
  • Lockfiles/generated: regenerate

Verification

  • bun run fork:verify
  • Typecheck packages/opencode
  • Behavioral smoke tests for loop, auto-reply, local provider discovery, themed loading

Manifest update

Update baseline.upstreamRef to merged upstream SHA, baseline.syncedAt to today, baseline.forkTag to new tag. Commit atomically with sync merge.

Safety

Rerere enabled, merge.conflictstyle zdiff3, pre-sync tag pre-sync/2026-08-11, backup branch backup-dev-2026-08-11.

Tasks

  • Phase 0 safety: record SHAs, create pre-sync tag, verify working tree clean
  • Add upstream remote and fetch upstream/dev
  • Create sync worktree via bun run sync-upstream:apply
  • Merge upstream/dev into sync worktree
  • Classify conflicts: owned, patched, moved, deleted
  • Resolve conflicts preserving Skein behavior, port to upstream architecture
  • Verify fork:verify passes
  • Run typecheck and behavioral smoke tests
  • Update fork/manifest.json baseline.upstreamRef, syncedAt, forkTag
  • Commit sync changes, push sync branch, open PR to dev
  • Merge PR, tag dev, clean worktree
  • Update FORK_WORKFLOW.md with lessons

Unchecked items above: see Disposition in proposal.md (2026-09-18).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions