Skip to content

Feature: Lossless StateMachine condition workspace #953

Description

@sfmskywalker

Objective

Let authors manage transition guards semantically—Always, Never, structured clauses, or provider expressions—without losing existing Elsa Input<bool> definitions.

Context

Scope

  • Pure condition classification/serialization adapter.
  • Wide condition workspace launched from the compact inspector.
  • Missing, literal true, literal false, known provider, unknown provider, and malformed states.
  • Structured clause authoring where lossless mapping is proven.
  • Advanced raw-definition escape hatch with validation.
  • No-op preservation of unknown fields and shapes.

Non-goals

  • Treating Condition as an activity.
  • Forcing all providers into a structured builder.
  • Normalizing untouched legacy values.
  • Creating a parallel general expression subsystem.

Architecture constraints

Reuse existing expression descriptors/editor where context permits. Route mutations through StateMachineEditorSession.SetTransitionSlot.

Dependencies

Structured clause UI depends on the clause-mapping spike. The adapter can proceed independently.

Tasks

Acceptance criteria

  • Missing remains missing on no-op save.
  • Explicit true/false remain distinguishable in storage and semantic UI.
  • Known provider expressions are editable.
  • Structured clauses round-trip losslessly within their supported subset.
  • Unknown/malformed values remain untouched until explicit repair/replacement.
  • Invalid advanced JSON cannot be applied silently.
  • The workspace is keyboard accessible and responsive.

Validation

Pure adapter tests, bUnit workspace tests, mapper/session round-trip tests, and provider integration checks.

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