ContractSpec docs

OSS-first docs

These docs teach the open system first: contracts, generated surfaces, runtimes, governance, and incremental adoption. Studio shows up as the operating layer on top, not as the source of truth.

workflow-system

State machine-based workflow engine with role-based approvals, delegation, and escalation

  • Type: feature
  • Version: 1.0.0
  • Stability: experimental
  • Owners: @workflow-team
  • Tags: workflow, approval, state-machine, automation
  • field.key.label
    workflow-system
    field.version.label
    1.0.0
    field.type.label
    feature
    field.title.label
    workflow-system
    field.description.label

    State machine-based workflow engine with role-based approvals, delegation, and escalation

  • Type: feature
  • Version: 1.0.0
  • Stability: experimental
  • Owners: @workflow-team
  • Tags: workflow, approval, state-machine, automation
  • field.tags.label
    workflow,approval,state-machine,automation
    field.owners.label
    @workflow-team
    field.stability.label
    experimental

    State machine-based workflow engine with role-based approvals, delegation, and escalation

    Operations (18)

    `workflow.definition.create` (v1.0.0)

    `workflow.definition.update` (v1.0.0)

    `workflow.step.add` (v1.0.0)

    `workflow.definition.publish` (v1.0.0)

    `workflow.definition.list` (v1.0.0)

    `workflow.definition.get` (v1.0.0)

    `workflow.instance.start` (v1.0.0)

    `workflow.instance.transition` (v1.0.0)

    `workflow.instance.pause` (v1.0.0)

    `workflow.instance.resume` (v1.0.0)

    `workflow.instance.cancel` (v1.0.0)

    `workflow.instance.list` (v1.0.0)

    `workflow.instance.get` (v1.0.0)

    `workflow.approval.decide` (v1.0.0)

    `workflow.approval.delegate` (v1.0.0)

    `workflow.approval.comment.add` (v1.0.0)

    `workflow.approval.list.mine` (v1.0.0)

    `workflow.approval.get` (v1.0.0)

    Events (17)

    `workflow.definition.created` (v1.0.0)

    `workflow.definition.updated` (v1.0.0)

    `workflow.definition.published` (v1.0.0)

    `workflow.step.added` (v1.0.0)

    `workflow.instance.started` (v1.0.0)

    `workflow.step.entered` (v1.0.0)

    `workflow.step.exited` (v1.0.0)

    `workflow.instance.completed` (v1.0.0)

    `workflow.instance.cancelled` (v1.0.0)

    `workflow.instance.paused` (v1.0.0)

    `workflow.instance.resumed` (v1.0.0)

    `workflow.instance.failed` (v1.0.0)

    `workflow.instance.timedOut` (v1.0.0)

    `workflow.approval.requested` (v1.0.0)

    `workflow.approval.decided` (v1.0.0)

    `workflow.approval.delegated` (v1.0.0)

    `workflow.approval.escalated` (v1.0.0)

    Presentations (11)

    `workflow.designer` (v1.0.0)

    `workflow.definition.viewList` (v1.0.0)

    `workflow.definition.detail` (v1.0.0)

    `workflow.instance.viewList` (v1.0.0)

    `workflow.instance.detail` (v1.0.0)

    `workflow.instance.progress` (v1.0.0)

    `workflow.approval.inbox` (v1.0.0)

    `workflow.approval.detail` (v1.0.0)

    `workflow.approval.form` (v1.0.0)

    `workflow.approval.badge` (v1.0.0)

    `workflow.metrics` (v1.0.0)

    Source Definition

    /**
     * Workflow System Feature Module Specification
     *
     * Defines the feature module for workflow and approval capabilities.
     */
    import { defineFeature } from '@lssm-tech/lib.contracts-spec';
    import { WorkflowVisualizationRefs } from './visualizations';
    
    /**
     * Workflow System feature module that bundles workflow definition,
     * instance management, and approval handling into an installable feature.
     */
    export const WorkflowSystemFeature = defineFeature({
    	meta: {
    		key: 'workflow-system',
    		title: 'Workflow & Approval System',
    		description:
    			'State machine-based workflow engine with role-based approvals, delegation, and escalation',
    		domain: 'workflow',
    		owners: ['@workflow-team'],
    		tags: ['workflow', 'approval', 'state-machine', 'automation'],
    		stability: 'experimental',
    		version: '1.0.0',
    	},
    
    	// All contract operations included in this feature
    	operations: [
    		// Workflow definition operations
    		{ key: 'workflow.definition.create', version: '1.0.0' },
    		{ key: 'workflow.definition.update', version: '1.0.0' },
    		{ key: 'workflow.step.add', version: '1.0.0' },
    		{ key: 'workflow.definition.publish', version: '1.0.0' },
    		{ key: 'workflow.definition.list', version: '1.0.0' },
    		{ key: 'workflow.definition.get', version: '1.0.0' },
    
    		// Workflow instance operations
    		{ key: 'workflow.instance.start', version: '1.0.0' },
    		{ key: 'workflow.instance.transition', version: '1.0.0' },
    		{ key: 'workflow.instance.pause', version: '1.0.0' },
    		{ key: 'workflow.instance.resume', version: '1.0.0' },
    		{ key: 'workflow.instance.cancel', version: '1.0.0' },
    		{ key: 'workflow.instance.list', version: '1.0.0' },
    		{ key: 'workflow.instance.get', version: '1.0.0' },
    
    		// Approval operations
    		{ key: 'workflow.approval.decide', version: '1.0.0' },
    		{ key: 'workflow.approval.delegate', version: '1.0.0' },
    		{ key: 'workflow.approval.comment.add', version: '1.0.0' },
    		{ key: 'workflow.approval.list.mine', version: '1.0.0' },
    		{ key: 'workflow.approval.get', version: '1.0.0' },
    	],
    
    	// Events emitted by this feature
    	events: [
    		// Definition events
    		{ key: 'workflow.definition.created', version: '1.0.0' },
    		{ key: 'workflow.definition.updated', version: '1.0.0' },
    		{ key: 'workflow.definition.published', version: '1.0.0' },
    		{ key: 'workflow.step.added', version: '1.0.0' },
    
    		// Instance events
    		{ key: 'workflow.instance.started', version: '1.0.0' },
    		{ key: 'workflow.step.entered', version: '1.0.0' },
    		{ key: 'workflow.step.exited', version: '1.0.0' },
    		{ key: 'workflow.instance.completed', version: '1.0.0' },
    		{ key: 'workflow.instance.cancelled', version: '1.0.0' },
    		{ key: 'workflow.instance.paused', version: '1.0.0' },
    		{ key: 'workflow.instance.resumed', version: '1.0.0' },
    		{ key: 'workflow.instance.failed', version: '1.0.0' },
    		{ key: 'workflow.instance.timedOut', version: '1.0.0' },
    
    		// Approval events
    		{ key: 'workflow.approval.requested', version: '1.0.0' },
    		{ key: 'workflow.approval.decided', version: '1.0.0' },
    		{ key: 'workflow.approval.delegated', version: '1.0.0' },
    		{ key: 'workflow.approval.escalated', version: '1.0.0' },
    	],
    
    	// Presentations associated with this feature
    	presentations: [
    		// Definition
    		{ key: 'workflow.designer', version: '1.0.0' },
    		{ key: 'workflow.definition.viewList', version: '1.0.0' },
    		{ key: 'workflow.definition.detail', version: '1.0.0' },
    
    		// Instance
    		{ key: 'workflow.instance.viewList', version: '1.0.0' },
    		{ key: 'workflow.instance.detail', version: '1.0.0' },
    		{ key: 'workflow.instance.progress', version: '1.0.0' },
    
    		// Approval
    		{ key: 'workflow.approval.inbox', version: '1.0.0' },
    		{ key: 'workflow.approval.detail', version: '1.0.0' },
    		{ key: 'workflow.approval.form', version: '1.0.0' },
    		{ key: 'workflow.approval.badge', version: '1.0.0' },
    
    		// Dashboard
    		{ key: 'workflow.metrics', version: '1.0.0' },
    	],
    
    	// Link operations to their primary presentations
    	opToPresentation: [
    		{
    			op: { key: 'workflow.definition.list', version: '1.0.0' },
    			pres: { key: 'workflow.definition.viewList', version: '1.0.0' },
    		},
    		{
    			op: { key: 'workflow.instance.list', version: '1.0.0' },
    			pres: { key: 'workflow.instance.viewList', version: '1.0.0' },
    		},
    		{
    			op: { key: 'workflow.approval.list.mine', version: '1.0.0' },
    			pres: { key: 'workflow.approval.inbox', version: '1.0.0' },
    		},
    		{
    			op: { key: 'workflow.approval.decide', version: '1.0.0' },
    			pres: { key: 'workflow.approval.form', version: '1.0.0' },
    		},
    	],
    
    	// Target requirements for multi-surface rendering
    	presentationsTargets: [
    		{ key: 'workflow.designer', version: '1.0.0', targets: ['react'] },
    		{
    			key: 'workflow.definition.viewList',
    			version: '1.0.0',
    			targets: ['react', 'markdown'],
    		},
    		{
    			key: 'workflow.definition.detail',
    			version: '1.0.0',
    			targets: ['react', 'markdown'],
    		},
    		{
    			key: 'workflow.instance.viewList',
    			version: '1.0.0',
    			targets: ['react', 'markdown'],
    		},
    		{
    			key: 'workflow.instance.detail',
    			version: '1.0.0',
    			targets: ['react', 'markdown'],
    		},
    		{ key: 'workflow.instance.progress', version: '1.0.0', targets: ['react'] },
    		{
    			key: 'workflow.approval.inbox',
    			version: '1.0.0',
    			targets: ['react', 'markdown'],
    		},
    		{
    			key: 'workflow.approval.detail',
    			version: '1.0.0',
    			targets: ['react', 'markdown'],
    		},
    		{
    			key: 'workflow.metrics',
    			version: '1.0.0',
    			targets: ['react', 'markdown'],
    		},
    	],
    
    	visualizations: WorkflowVisualizationRefs,
    
    	// Capability requirements
    	capabilities: {
    		requires: [
    			{ key: 'identity', version: '1.0.0' },
    			{ key: 'audit-trail', version: '1.0.0' },
    			{ key: 'notifications', version: '1.0.0' },
    			{ key: 'feature-flags', version: '1.0.0' },
    		],
    		provides: [
    			{ key: 'workflow', version: '1.0.0' },
    			{ key: 'approval', version: '1.0.0' },
    			{ key: 'state-machine', version: '1.0.0' },
    		],
    	},
    
    	workflows: [
    		{ key: 'workflow-system.workflow.approval-chain', version: '1.0.0' },
    	],
    
    	telemetry: [{ key: 'workflow-system.telemetry', version: '1.0.0' }],
    
    	jobs: [
    		{ key: 'workflow-system.job.instance-timeout', version: '1.0.0' },
    		{ key: 'workflow-system.job.escalation', version: '1.0.0' },
    	],
    
    	docs: [
    		'docs.examples.workflow-system',
    		'docs.examples.workflow-system.goal',
    		'docs.examples.workflow-system.usage',
    		'docs.examples.workflow-system.constraints',
    	],
    });