Skip to content

Integrate DEL project, embedded Workshop, settings, strings, and backend compiler surfaces #32

Description

@Teakowa

Parent: #8

Goal

Complete the Workshop-dependent DEL/OSTW project/compiler surfaces around core/runtime lowering while routing canonical Workshop concerns through released workshop-rs contracts and explicitly classifying presentation-only upstream options that WrightKit does not need to reproduce.

Context

The DEL compatibility inventory includes embedded vanilla Workshop, lobby/settings imports, chase/modify helpers, multiple string forms, Workshop comments, and output-format options. These surfaces cross the source-language/canonical-Workshop ownership boundary differently and should not be hidden inside runtime lowering.

The previously known rule-event gap is resolved in workshop-rs. Canonical Workshop setting identities, types/domains, applicability, localization, validation, and emission remain owned by workshop-rs; DEL/OSTW-specific project/config carriers remain owned here.

Ownership review closed workshop-rs#33 as not planned: upstream OSTW explicitly treats customGameSettings.json as a legacy imported-file format, not a canonical Workshop interchange format. .lobby, legacy customGameSettings.json, and their project/import semantics therefore belong to deltin-rs. They should lower into the released typed workshop_rs::settings API rather than move their parsers into the canonical Workshop core.

Scope

  • Integrate vanilla Workshop superset blocks and links through canonical workshop-rs parsing/WIR contracts where source evidence requires mixed DEL + raw Workshop behavior.
  • Lower/link DEL variable and subroutine references to embedded Workshop constructs without creating a second raw Workshop semantic model.
  • Parse evidence-backed DEL/OSTW lobby/settings carriers, including .lobby and legacy customGameSettings.json, according to DEL/OSTW compatibility requirements, then convert them into the canonical released workshop_rs::settings typed/source-preserving contract.
  • Keep carrier path/merge/import compatibility behavior local to DEL/OSTW; use canonical workshop-rs identities, value types/domains, applicability, validation, localization, and emission after conversion.
  • Complete chase/stop/modify variable lowering using canonical Workshop action/value/enum identities and existing DEL target-player resolution.
  • Implement custom/interpolated/classic string lowering where the canonical WIR/emitter contract represents the required observable behavior.
  • Investigate localized-string requirements against the released canonical WIR/catalog; if the required semantic distinction is missing, create a focused owning workshop-rs issue instead of a local workaround.
  • Integrate DEL action comments with the released workshop-rs comment/source-preservation contract from workshop-rs#32; do not invent a DEL-local Workshop comment representation.
  • Review upstream output-format options such as c-style Workshop output and tabs against WrightKit's compatibility contract. Implement only behavior required by a declared observable/source contract; otherwise classify it explicitly rather than chasing formatter identity.
  • Preserve provenance for embedded Workshop/settings diagnostics back to authored DEL/project source where practical.
  • Add focused project-level and minimized fixtures for each supported surface.

Non-goals

  • Duplicating Workshop parser, typed settings catalog, localization data, validation, emitter, or formatting engine.
  • Moving DEL/OSTW .lobby or legacy JSON carrier parsing into workshop-rs.
  • Treating upstream presentation formatting as semantic compatibility by default.
  • Implementing speculative compiler utilities without inventory/corpus evidence.
  • Workshop -> DEL decompilation.

Acceptance criteria

  • Supported mixed DEL/Workshop projects use canonical workshop-rs semantics for embedded raw Workshop rather than a provider-local copy.
  • Supported .lobby / legacy JSON settings imports are parsed as DEL/OSTW carriers in this repository, converted through the public workshop-rs typed settings contract, and emitted through canonical Workshop validation/localization/emission without a second settings semantic model.
  • Wrong or unsupported carrier values are diagnosed at the appropriate boundary; canonical Workshop setting type/applicability failures come from the owner contract rather than duplicated local tables.
  • Chase/modify cases lower with canonical identities and preserve player/global target semantics.
  • String variants have explicit supported/unsupported states backed by tests and canonical contracts; missing canonical capabilities are tracked in workshop-rs, not hidden locally.
  • Comment preservation has an explicit evidence-backed contract and implementation/gap classification.
  • Presentation-only output options are not mistaken for semantic correctness requirements.
  • Relevant support-matrix entries advance only where end-to-end evidence exists.

Dependencies

Any new source-language-neutral Workshop semantic gap discovered during implementation must still be fixed in the owning workshop-rs repository rather than represented locally.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions