Skip to content

[TASK] [CODE QUALITY] Design simple declarative syntax for workitem validation #36

@iamer

Description

@iamer

Timeboxed to 10 hours

Design a way for participants to declare which fields and parameters they expect in their workitems, as well as constraints on their values (such as type, element type, string-matches-regexp, string-in-enum, that kind of thing).

Design considerations:

  • The declarations should be in the participants, so that people will
    actually update them as the participant changes
  • The Exo should guarantee that the constraints are met before the
    participant gets the workitem.
  • The declarations should be passive data structures, so that they
    can be processed without running participant-specific code.
  • The syntax should support concepts like "integer as string" and
    "list as string" because ruote often passes stringified parameters
    like that.

Possibilities:

  • Declaring optional parameters may be useful for documentation,
    and allows typechecking on those parameters
  • Declaring output fields may be helpful in the future for
    automated checking of compatibility between participants
  • It may be possible to generate documentation from these declarations,
    but don't let that complicate the basic design.
  • Alternately, it may be possible parse the declarations from the docstring.

The output of this task should be a document describing the
syntax and suggested implementation, ready for discussion.

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