Skip to content

Implement the canonical public Workshop Program model #177

Description

@Teakowa

Parent: #112
Coordinates with: #32; the final 1.0 source-metadata attachment contract must remain compatible

Goal

Replace the current storage-shaped public WIR surface with the canonical public Workshop semantic model defined by #112 while retaining arena/ID-based storage internally where it remains useful.

Scope

  • Make public Program, variables, subroutines, Rule, Condition, Action, Value, Event, and settings follow Workshop concepts rather than arena/node-ID storage.
  • Keep raw Workshop actions as an ordered linear action stream: one Workshop action line maps to one public Action, including If, Else If, Else, While, For, and End.
  • Keep Workshop values naturally composable as expressions and conditions explicit as rule-condition concepts.
  • Make Workshop-native declaration/reference semantics sufficient for ordinary construction; external consumers must not manage arena allocation or WIR node IDs.
  • Keep source/provenance optional for semantic construction and compatible with Define the canonical Workshop comment and source-preservation contract #32.
  • Preserve private normalized storage only where it provides implementation value.

Non-goals

Acceptance criteria

  • A complete Workshop Program can be constructed from public Workshop concepts without touching Arena or storage IDs.
  • Rule.actions exposes Workshop's linear execution structure rather than nested compiler control-flow nodes.
  • Public semantic nodes are independently constructible and composable for whole-program or locally decomposed lowering.
  • Generated programs require no synthetic source metadata.
  • Existing raw Workshop semantics remain representable without a second public semantic model.
  • Internal arena/ID representation, if retained, is not required knowledge for ordinary consumers.

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