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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions