Skip to content

Adopt upstream ACP + opencode service, retire the fork (P1.7) #130

Open

Description

@androidand
Proposal

Parent: Phase 1a item P1.7. Slots after the ports (P1.3–P1.6). This change is where
the fork boundary is crossed; the verification contract (charter §6.4, §7.6) governs
it.

Why

The v2 pivot exists because carrying a 241-file fork costs a restructure-port per
upstream release. After P1.3–P1.6 the remaining fork code is acp/ (superseded — we
adopt upstream's), context/ and fork/ residue. Cutting over is justified only if
upstream demonstrably covers the two verification contracts:

  • §6.4 (ACP): the external-client test list. The unit-level migration on
    skein2/acp-sdk-1.8 proved the API shape; upstream adoption must prove the
    behavior via acp-external-verification (Scenario A).
  • §7.6 (lifecycle): the ten assertions (start without TUI, survive TUI close,
    attach second client, dual observation, multi-worktree sessions in one project scope,
    durable state across kill, restart reconciles process+repo truth, no re-owned task,
    abandoned worktree preserved, acceptable long-run resource profile). The evaluation
    said explicitly this was not check'd; it must be driven live before residues are
    deleted.

What Changes

  1. Drive the §7.6 ten assertion against upstream opencode service live, and the §6.4
    list against upstream's ACP via acp-external-verification. Failures become either
    reasoned upstream PRs or documented gaps with mitigations — never a new fork.
  2. Retire in-fork remnants per the decision (charter §19-revised): delete acp/,
    context/, fork/ and the ported areas (local/, peer/, loop/-.Tree,
    beads/) as recorded by the port changes' dispositions; the retained-delta list
    (deliberate deviations, if any) shrinks to the recorded minimum, each with a
    documented upstream route or justification.
  3. Archive the skein2/acp-sdk-1.8 branch and its change artifacts; the often-cited
    docs (01-acp-migration.md) remain as historical record, marked as sunk cost.
    (Evaluation decision 3.)
  4. Swap the operator's running opencode over: the fork binary installs
    (1.18.18-dev in ~/.local/bin/opencode) are replaced after the new-plugin stack is
    proven; the migration-or-fresh decision for fork-era state dirs (from
    v2-rebaseline's R-P1 inventory) is recorded before the swap.
  5. Update ecosystem docs (AGENTS.md, ~/dev/skein/docs/ECOSYSTEM.md sync-policy
    section) to the new reality: plugin repo + retained delta, no --agent flag unless
    it survives P1.7 review as an upstream-able patch.

Non-goals

  • No reimplementation of anything §7.6/§6.4 confirms upstream covers.
  • No upstream contribution obligations invented here beyond reasoned PRs for
    demonstrable gaps.

Risks

  • Deleting fork code before verification would strand autonomy behaviors; the order
    above is enforce-only-after-evidence.
  • --agent flag (src/cli/cmd/run.ts) is skein-ecosystem-critical (skein's supervisor
    calls it); if upstream lacks it, it becomes a preserved-delta item with a PR attempt.
    Removing it is unacceptable per AGENTS.md.

Impact

Fork retirement, a documented gap list, installer swap, dated residue inventory. The
platform's execution plane is upstream opencode + skein-plugin from here on.

Tasks

Ordering is enforced: verification before deletion; deletion before installer swap.

  • 1.1 Drive the charter §7.6 ten lifecycle assertions against upstream opencode service (start-without-TUI, survive-TUI-close, second-client attach, dual
    observation, multi-worktree sessions in one project scope, durable state across
    kill, restart reconciles process+repo truth, no re-owned task, abandoned worktree
    preserved, long-run resource profile). Result: evidence doc, one row per
    assertion.
  • 1.2 Confirm §6.4 coverage via acp-external-verification (Scenario A on
    upstream); if it is not yet run, this change's deletion steps wait for it.
  • 1.3 Gap ledger: every failed assertion becomes (a) a reasoned upstream PR or
    (b) a documented gap with mitigation. Neither class may be skipped or merged.
  • 1.4 Record --agent flag status: present in v2 run path or the preserved-delta
    list; if missing, open the PR attempt and keep the preserved-delta entry until
    resolved.
  • 1.5 Migrate-or-fresh decision for fork-era state dirs (input from
    v2-rebaseline); migration test against a real snapshot (K13).
  • 1.6 Delete acp/, context/, fork/ and the ported areas per the recorded
    dispositions; the retained-delta list shrinks to the recorded minimum.
  • 1.7 Archive skein2/acp-sdk-1.8 (branch + change artifacts) and mark
    01-acp-migration.md as historical/sunk-cost.
  • 1.8 Installer swap documented and gated on 1.1–1.6 green; the fork's
    ~/.local/bin/opencode (1.18.18-dev) path recorded as retired.
  • 1.9 Update AGENTS.md + ~/dev/skein/docs/ECOSYSTEM.md sync policy: forward
    changes target the plugin repo; upstream sync policy per the new delta reality.

Related

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

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions