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.
Parent: #8
Goal
Complete the Workshop-dependent DEL/OSTW project/compiler surfaces around core/runtime lowering while routing canonical Workshop concerns through released
workshop-rscontracts 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 byworkshop-rs; DEL/OSTW-specific project/config carriers remain owned here.Ownership review closed
workshop-rs#33as not planned: upstream OSTW explicitly treatscustomGameSettings.jsonas a legacy imported-file format, not a canonical Workshop interchange format..lobby, legacycustomGameSettings.json, and their project/import semantics therefore belong todeltin-rs. They should lower into the released typedworkshop_rs::settingsAPI rather than move their parsers into the canonical Workshop core.Scope
workshop-rsparsing/WIR contracts where source evidence requires mixed DEL + raw Workshop behavior..lobbyand legacycustomGameSettings.json, according to DEL/OSTW compatibility requirements, then convert them into the canonical releasedworkshop_rs::settingstyped/source-preserving contract.workshop-rsidentities, value types/domains, applicability, validation, localization, and emission after conversion.workshop-rsissue instead of a local workaround.workshop-rscomment/source-preservation contract fromworkshop-rs#32; do not invent a DEL-local Workshop comment representation.Non-goals
.lobbyor legacy JSON carrier parsing intoworkshop-rs.Acceptance criteria
workshop-rssemantics for embedded raw Workshop rather than a provider-local copy..lobby/ legacy JSON settings imports are parsed as DEL/OSTW carriers in this repository, converted through the publicworkshop-rstyped settings contract, and emitted through canonical Workshop validation/localization/emission without a second settings semantic model.workshop-rs, not hidden locally.Dependencies
workshop-rs#108/#109/#110/#111— typed Workshop settings owner track; consume the released contract when available.workshop-rs#32— canonical Workshop comment/source-preservation contract.Any new source-language-neutral Workshop semantic gap discovered during implementation must still be fixed in the owning
workshop-rsrepository rather than represented locally.