id: custodian.contribution.v1
entity_type: contribution
workstations:
  - name: draft
    description: Local draft, not yet submitted.
    entry_assertions: []
    exit_assertions: []
  - name: submitted
    description: Submitted for acknowledgement.
    entry_assertions:
      - id: contribution.from_draft
        target: previous_workstation
        op: any_eq
        value:
          - draft
        description: Submitted contributions originate from draft.
    exit_assertions: []
  - name: acknowledged
    description: Submission has been acknowledged.
    entry_assertions:
      - id: contribution.from_submitted
        target: previous_workstation
        op: any_eq
        value:
          - submitted
        description: Acknowledgement follows submission.
    exit_assertions: []
  - name: accepted
    description: Contribution has been accepted for merge.
    entry_assertions:
      - id: contribution.from_acknowledged
        target: previous_workstation
        op: any_eq
        value:
          - acknowledged
        description: Acceptance follows acknowledgement.
    exit_assertions: []
  - name: merged
    description: Contribution has been merged.
    entry_assertions:
      - id: contribution.from_accepted
        target: previous_workstation
        op: any_eq
        value:
          - accepted
        description: Merge follows acceptance.
    exit_assertions: []
  - name: rejected
    description: Contribution was rejected.
    entry_assertions:
      - id: contribution.rejectable_source
        target: previous_workstation
        op: any_eq
        value:
          - submitted
          - acknowledged
        description: Only submitted or acknowledged contributions can be rejected.
    exit_assertions: []
  - name: withdrawn
    description: Contribution was withdrawn by its owner.
    entry_assertions:
      - id: contribution.withdrawable_source
        target: previous_workstation
        op: any_eq
        value:
          - draft
          - submitted
          - acknowledged
          - accepted
        description: Draft through accepted contributions can be withdrawn.
    exit_assertions: []
