Skip to content

Bootstrap and resolve the first-party OPY provider #244

Description

@Teakowa

Parent: #242
Depends on: #240
Integrates with: #243

Goal

Implement the approved first-party OPY provider resolution/bootstrap path so Wright can use a current opy-rs provider without linking OPY implementation releases into the Wright binary release cadence.

Context

#240 now defines the distribution contract: first-party OPY provider artifacts come from wrightkit/opy-rs GitHub Releases; Wright resolves an explicit provider first, then an installed active provider, then lazily bootstraps a missing provider; installed providers are reused offline; normal source commands do not poll for updates.

This issue is limited to resolving a verified local OPY provider executable and handing it to the existing LPP runtime. Source entry/project semantics remain owned by #243 and opy-rs.

Scope

  • Resolve an explicitly configured local OPY provider executable first.
  • Resolve an already installed active first-party OPY provider from the approved per-user provider store.
  • On first OPY use, bootstrap a missing provider from the opy-rs GitHub Release artifact for the current supported target.
  • Verify the published SHA-256 checksum before activation.
  • Install through temporary/versioned state and activate atomically so partial or failed downloads never become active.
  • Preserve the previous active provider if an update/install fails.
  • Reuse an installed provider offline with no update/network check on ordinary source commands.
  • Provide the explicit provider-update operation required by Design lightweight first-party language provider distribution and lazy loading #240 without periodic/TTL polling.
  • Surface missing-provider, offline, download, integrity, install, spawn, and protocol/capability failures explicitly through Wright's structured error path.
  • Ensure raw Workshop and unrelated commands perform no OPY provider network/bootstrap work.
  • Pass the resolved executable into the existing LPP/provider runtime rather than creating another process/wire implementation.

Non-goals

  • Implementing the OPY provider binary itself; that belongs to opy-rs#170.
  • Source/project loading, #!mainFile, includes, preprocessing, or OPY semantics in Wright.
  • Creating a registry, dependency solver, project lockfile, marketplace, or generic plugin manager.
  • Updating providers automatically on every Wright invocation or through a TTL/background policy.
  • Implementing DEL/OSTW provider bootstrap in this milestone.
  • Changing LPP wire semantics for distribution convenience.
  • Duplicating runtime capabilities/protocol compatibility in release metadata.

Acceptance criteria

  • A clean Wright installation can encounter an OPY workflow, discover that the first-party provider is missing, and bootstrap the correct provider artifact from the approved opy-rs release source.
  • Resolution precedence is explicit local provider > installed active first-party provider > lazy bootstrap.
  • An already installed provider is reused without network access.
  • An explicit local provider executable can be selected without first-party download behavior.
  • Downloaded artifacts are checksum-verified before activation and partial/failed installs cannot become active.
  • Failed updates preserve the previous working active provider.
  • Normal check, compile, lint, and analyze invocations do not contact the release source merely to check for updates.
  • Raw Workshop workflows do not resolve/download/spawn an OPY provider.
  • Integrity failure, unsupported platform, offline-without-cache, download/install failure, spawn failure, and protocol/capability mismatch remain explicit machine-readable failures; none silently falls back to static OPY semantics.
  • Successful resolution returns a local executable usable by the shared provider boundary in Converge source-language workflows on an explicit provider boundary #243.
  • The resolved executable is consumed by the existing LPP runtime / ProviderRegistry; no second provider execution abstraction is introduced.
  • No provider dependency graph, package index, or Wright project lock state is introduced.
  • Independent regression evidence covers clean install and offline reuse.
  • Implementation ablation that disables provider resolution/bootstrap causes the relevant clean-install real-project workflow to fail again.

Dependencies / ownership

Readiness

Ready. Artifact source, resolution precedence, local state purpose, integrity behavior, and explicit update policy are resolved by #240. Implementation should remain OPY-specific until the pinned real-project workflow proves a repeated need for broader abstraction.

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

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions