Skip to content

Generate Target-IR-bound Echo registration and invocation helpers #656

Description

@flyingrobots

Purpose

Generate the first Echo-owned Rust/API helpers carried as provider output roles, bound to the exact Target IR and contract bundle identities rather than to mutable application names.

Acceptance criteria

  • Generated registration and invocation descriptors name exact Target IR and bundle digests plus required Echo ABI/schema versions.
  • The helper constructs an opaque provider-generic package/registry proposal whose private mutation handler uses Echo's existing scheduler-owned contract-handler shape, without exposing raw rule mutation, scheduler tick, WAL, recovery, or package-install authority to application code.
  • The minimal Target IR operation maps to one explicit host-supplied executor or observer.
  • Wrong Target IR, bundle, codec, schema, operation, footprint, or profile identity refuses before registration or mutation.
  • Output is deterministic, namespaced, schema-validated, and emitted only when requested.
  • Review projection and generated source are release artifacts; neither becomes a new semantic source of truth.
  • Consumer tests compile and exercise the generated API against the pinned minimal fixture.

Runtime installation boundary

This goalpost ends at a pure, opaque provider proposal. The proposal is not an InstalledContractPackage, does not implement the legacy GraphQL/Wesley RegistryProvider facade, and grants no artifact admission, installation, scheduling, execution, durability, receipt, or observation authority.

A trusted Echo runtime must independently authenticate/select the callback implementation and consume the proposal during native provider admission. Equality between generated and host-claimed implementation identities proves cross-binding only; it does not prove arbitrary callback semantics. Native admission/invocation remains tracked by #583, with the end-to-end Jedit execution gate in #589.

Prerequisites #652 and #653 are complete.
Parent: #650
Downstream app-safe delivery remains tracked by #516.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    Status
    Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions