Skip to content

Files Changed: gate migration and coordinated release #1083

Closed

Description

@jeonghun-jj-lee

Files Changed: gate migration and coordinated release

Important

Problem - The extension and app can outpace the vendored engine binary, producing clients that call unavailable provenance routes. Existing sessions and in-flight v1 reservations cannot safely be upgraded by assumption.
Approach - Publish a discoverable capability matrix and migration boundary, then release in order: fork protocol, verified binary assets and pin, extension, and overlay synchronization proof. Full, partial, and legacy modes are explicit and rollback-safe.
Scope - in: capability discovery, mixed versions, pre-existing sessions, in-flight reservations, rollout criteria, rollback, fork release, binary pin, extension release, and overlay proof. out: implementation of individual mutators and UI features.
Assumptions - The ledger protocol, app surface, and v1 Sidebar foundation are available in source before the coordinated release.

Acceptance Criteria

  • Capability discovery deterministically selects full, post-upgrade-partial, or legacy mode without probing a mutation route.
  • Old engine with new client and new engine with old client remain safe and visibly labelled.
  • Pre-existing sessions remain legacy; an active old session can record only a labelled post-upgrade epoch.
  • In-flight v1 reservations are resolved as legacy and never silently adopted into a ledger operation.
  • Rollback from a partially deployed release cannot authorize an uncontextualized full-provenance mutation.
  • Fork release completes before the verified vendored-binary pin, which completes before extension release; overlay synchronization is verified as release evidence.
  • Default enablement remains off until the adversarial acceptance matrix succeeds.

Testing Decisions

  • Add capability and mixed-version contract tests across supported engine and extension combinations.
  • Exercise upgrade, rollback, active-session, and in-flight-reservation fixtures in release rehearsal.

Key Decisions

  • Compatibility discovery is separate from mutation-context validation.
  • Overlay synchronization demonstrates source provenance; it does not substitute for a binary protocol release.

Constraints & Invariants

  • Legacy mode may preserve prior behavior but never claims full provenance.
  • Release ordering cannot be collapsed into a client-only deployment.

Prior Art

Deliberation Resolution

  • Capability discovery returns a versioned object with protocol_version, mode, and migration_boundary. mode is full only for a supported engine and a session born after rollout; partial applies to an opted-in post-upgrade epoch; legacy covers unsupported engines and pre-existing sessions without an epoch.
  • The supported matrix is explicit: old engine plus new client is legacy; new engine plus old client keeps its pre-ledger view; new engine plus new client is full only for a full root; new engine plus new client on a partial or legacy root remains labelled partial or legacy.
  • Migration transitions are legacy -> partial only through an explicit epoch start, never by background inference. In-flight v1 reservations resolve as legacy results. Rollback disables full discovery before client mutation routes are available.
  • The release manifest lists required fork tag, binary checksums, lock pin, extension version, overlay provenance check, rehearsal cases, and mandatory matrix case IDs. Default enablement requires a machine-readable all-required-passed result.

Source

Part of #972. Blocked by #976 and #1082.

Activity

  1. jeonghun-jj-lee commented on Sep 14, 2026

    @jeonghun-jj-lee
    ContributorAuthor

    Closing: the CODE for this slice is delivered and merged (fork PR harmoniqs/opencode#356, on local/amicode via integration PR #345) — capability discovery, mixed-version matrix, migration boundary, rollback safety, and the release-readiness evaluator (default-enablement stays OFF and the #1084 all_required_passed gate authorizes the eventual flip).

    The remaining acts are a deliberate HUMAN release decision, NOT tracked dev work: cut the fork release, verify + pin the binary, publish the extension, re-sync the overlay against the pinned tag, and flip default-enablement. Those happen when we choose to ship — other agents finish from the merged code. Not keeping this open as a pending-work issue.

    Epic #972 is thus fully implemented on the fork base; shipping is out-of-band.

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

Metadata

Metadata

Labels

hitlNeeds human review before merge

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions