Skip to content

Integrate OPY lowering and end-to-end compatibility with workshop-rs #8

Description

@Teakowa

Parent: #1

Goal

Connect the completed OPY semantic frontend to canonical workshop-rs semantics and finish the Workshop-dependent parts of OverPy compiler compatibility.

Current readiness

The pre-integration gate #7 and integration-boundary issue #35 are complete. The merged support matrix currently reports:

The active dependency direction is:

OPY source -> opy-frontend -> OPY HIR -> opy-compiler -> workshop-rs WIR -> Workshop text

opy-frontend remains Workshop-independent so check/inspect/source tooling does not require the compiler backend. workshop-rs = "=0.1.1" is the current published integration baseline. wrightkit/workshop-rs#10 strengthens shared conformance/census evidence but does not block this baseline.

Execution issues

Intended order: #40#41#42 → close #36#37#38. Work may overlap only where public contracts are established and branches remain independently reviewable.

Scope

  • Consume workshop-rs through documented public contracts and an explicit implementation/catalog identity.
  • Resolve canonical actions, values, events, enums, settings, and locale behavior through workshop-rs; do not duplicate Workshop data in opy-rs.
  • Preserve OPY-specific signatures, aliases, contextual dispatch, preprocessing state, source spans, and source semantic identity in opy-rs.
  • Lower the declared OPY semantic program into validated canonical WIR.
  • Complete supported settings, locale/emission, backend directive, and post-compile-hook behavior at the correct integration stage.
  • Expose compilation as a standalone library/CLI capability only after the pipeline has real end-to-end evidence.
  • Advance compatibility states only with corpus/differential evidence based on observable semantics, not emitted-text identity.
  • Reassess remaining compiler and reconstruction work after the integration baseline is complete.

Non-goals

  • Adding workshop-rs directly to opy-frontend.
  • Reintroducing canonical Workshop semantics, catalog/member lists, settings tables, or locale data into opy-rs.
  • Coupling workshop-rs back to OPY/provider-specific semantics.
  • Matching upstream temporary variables, formatting, optimizer internals, or generated text where observable semantics do not require it.
  • Freezing or implementing Workshop -> OPY reconstruction before end-to-end compilation provides evidence.
  • Blocking basic integration on completion of the full workshop-rs#10 seasonal conformance workflow.

Acceptance criteria

  • Establish the versioned OPY-to-Workshop integration boundary #35-Expose OPY compilation and close the end-to-end compatibility gate #38 are complete with independent implementation/test evidence.
  • opy-frontend remains independently usable without a workshop-rs dependency.
  • OPY semantic identities/signatures link to canonical Workshop identities without duplicating authoritative Workshop data.
  • Supported OPY corpus cases lower to structurally valid and catalog-valid WIR and emit through workshop-rs.
  • Settings, catalog-backed builtin/member/enum validation, locale/emission behavior, backend-affecting directives where supported, and post-compile hooks have integration tests.
  • Post-compile hooks receive the real final emitted Workshop text, never HIR/WIR/JSON or a fabricated payload.
  • A documented library/CLI compile surface exists with structured failure behavior suitable for tooling and CI.
  • End-to-end compatibility status is evidence-backed; known gaps remain explicit and are not counted as success.
  • Cross-repository ownership and dependency direction remain explicit and tested.

Dependencies

Planning notes

Do not create another generic backend abstraction or temporary Workshop IR. Use the existing workshop-rs public WIR/catalog/emitter contracts directly through opy-compiler. Further splitting should be evidence-driven rather than speculative.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status
    In Progress

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions