Skip to content

Retire or commit to legacy public compatibility facades before 1.0 #253

Description

@Teakowa

Parent: #252

Goal

Ensure every legacy or migration-oriented public compatibility facade is either deliberately supported as part of the 1.x Rust contract or removed before workshop-rs 1.0.

Context

The canonical consumer boundary is the public Workshop Program model plus domain-oriented parsing, validation, analysis, catalog, settings, gameplay, and emission APIs.

Historical compatibility modules and #[doc(hidden)] exports are still semver-relevant when they remain public. Keeping implementation-shaped APIs accidentally would make internal WIR, storage, parser, or layout details part of the 1.x maintenance contract.

Because this work happens before 1.0, removing compatibility-only public APIs is an intentional breaking change. Downstream WrightKit repositories migrate when they adopt the breaking workshop-rs release; their migration is not a prerequisite for owner-side removal.

Scope

  • Re-check the current public facade/export inventory against main.
  • Remove legacy or hidden public paths that expose WIR, storage, parser implementation, or other migration-only details without an intentional long-term Workshop-domain contract.
  • Keep a public surface only when its semantics are intentionally supported independently of its historical implementation role.
  • Preserve genuinely useful domain-oriented aliases when removing them would only create churn without reducing accidental contract surface.
  • Keep internal storage and implementation freedom behind the public Program and domain APIs.
  • Keep public API documentation aligned with the actual exported 1.x candidate surface.

Non-goals

  • Preserving consumer builds across this pre-1.0 breaking change.
  • Migrating Wright, OPY, or DEL/OSTW consumers inside this repository.
  • Removing every re-export or alias for aesthetic consistency.
  • Rewriting WIR or parser/emitter internals.
  • Creating a second public compatibility layer to replace the first one.
  • Moving OPY, DEL/OSTW, or Wright-specific semantics into workshop-rs.

Acceptance criteria

  • The current public facade/export inventory matches live code.
  • Every remaining public item has an intentional durable 1.x purpose; migration-only or implementation-shaped facades are no longer ordinary public API.
  • Ordinary consumers do not need WIR arena/storage identities or parser implementation modules to use the supported Workshop API.
  • No replacement abstraction is added unless a concrete supported Workshop-domain contract requires it.
  • Public API documentation describes the actual retained surface and does not list retired compatibility paths as public.
  • Existing public API, semantic, compatibility, and real-project tests remain meaningful and pass.

Dependencies / ownership

  • Parent: Freeze the workshop-rs public API for 1.0 #252.
  • Owner: workshop-rs for its public exports and compatibility promises.
  • Wright, OPY, and DEL/OSTW own their migrations when adopting the breaking workshop-rs release.
  • Consumer migration is not a blocker for removing compatibility-only owner APIs before 1.0.

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

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions