Skip to content

Expose a typed Workshop action and value API #178

Description

@Teakowa

Parent: #112
Depends on: #177

Goal

Expose Workshop-defined actions and values as a discoverable typed Rust standard-library surface over the canonical Workshop model, while retaining the catalog as the semantic source of truth.

Scope

  • Provide typed constructors/functions for Workshop-defined actions and values with clear semantic parameter names.
  • Keep the typed surface aligned with canonical Workshop/catalog identities rather than localized client spellings.
  • Allow obvious, unambiguous Rust literal conversions and a small set of transparent one-to-one convenience methods where they improve readability.
  • Keep Workshop value-domain/type legality in canonical validation rather than recreating it as a Rust generic/type-level system.
  • Retain a generic catalog-driven action/value call as an explicit escape hatch for dynamic/tooling/compatibility cases.
  • Ensure generated or maintained typed APIs derive from canonical Workshop facts without creating a parallel semantic source of truth.

Non-goals

  • A Rust type system for Workshop value domains.
  • A macro DSL or fluent language that invents semantics above Workshop.
  • Providing method-style sugar for every builtin.
  • Treating the generic catalog call as the preferred ordinary lowering path.

Acceptance criteria

  • Common Workshop actions/values are discoverable through Rust/IDE autocomplete without consumers knowing canonical ID strings or localized spellings.
  • Typed APIs enforce builtin identity and parameter shape without unnecessary generic complexity.
  • Convenience methods are transparent one-to-one projections of canonical Workshop operations.
  • The generic action/value path remains available for justified dynamic consumers.
  • Catalog/signature validation remains authoritative for Workshop semantic legality.

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