Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
131 lines
5.0 KiB
Markdown
131 lines
5.0 KiB
Markdown
# Workflow V1 Hard Removal Design
|
|
|
|
- Date: `2026-03-08`
|
|
- Status: Approved
|
|
|
|
## Summary
|
|
|
|
Alga PSA currently ships two workflow systems:
|
|
|
|
- workflow v1: AssemblyScript/code-editor driven, bootstrapped from `shared/workflow/core` and `shared/workflow/init`
|
|
- workflow v2: data-driven workflow designer/runtime under `shared/workflow/runtime` and `packages/workflows/src/actions/workflow-runtime-v2-actions.ts`
|
|
|
|
This change hard-removes workflow v1 from product surfaces, server bootstraps, actions, and database schema. No legacy workflows will be migrated. Templates remain a product concept, but the existing template library is v1-only and is removed as part of this cut. A future v2-native template system will be designed separately.
|
|
|
|
## Goals
|
|
|
|
- Make the application workflow-v2-only.
|
|
- Remove workflow v1 editor, template library, runtime actions, and runtime/bootstrap wiring.
|
|
- Drop workflow v1 database tables and seeded/system records.
|
|
- Keep workflow v2 workflow editor, runs, schedules, events, and event catalog working.
|
|
|
|
## Non-goals
|
|
|
|
- Migrating existing v1 workflows to v2.
|
|
- Delivering a v2-native template library in this change.
|
|
- Preserving legacy v1 APIs for compatibility.
|
|
|
|
## Recommended Approach
|
|
|
|
Use a hard cut, not a compatibility shim.
|
|
|
|
Why:
|
|
|
|
- The current template library and legacy editor are actively misleading because they only operate on the retired AssemblyScript model.
|
|
- Leaving v1 bootstraps or dead tables behind guarantees future regressions and increases maintenance cost.
|
|
- Workflow v2 already has the live product surface; this is primarily a removal and cleanup effort.
|
|
|
|
Rejected alternatives:
|
|
|
|
- Soft-disable v1 in the UI but keep bootstraps/tables: lower immediate risk, but leaves dead architecture in place.
|
|
- Remove only bootstraps and keep old code in-tree: still leaves stale routes, action exports, and schema detritus.
|
|
|
|
## Scope
|
|
|
|
### Code and Product Surface
|
|
|
|
Remove:
|
|
|
|
- legacy workflow runtime from `shared/workflow/core/*`
|
|
- legacy workflow initialization/registration from `shared/workflow/init/*`
|
|
- v1 workflow editor actions and runtime actions
|
|
- v1 template library actions and UI
|
|
- v1 workflow editor components and related dialogs/modals
|
|
- remaining references to the old template library tab in workflow control
|
|
|
|
Keep:
|
|
|
|
- workflow v2 designer/editor
|
|
- workflow v2 run history and run details
|
|
- workflow v2 schedules
|
|
- workflow v2 events/event catalog/dead-letter views
|
|
|
|
### Database Cleanup
|
|
|
|
Drop the workflow v1 persistence footprint, including:
|
|
|
|
- `workflow_template_categories`
|
|
- `workflow_templates`
|
|
- `workflow_registrations`
|
|
- `workflow_registration_versions`
|
|
- `system_workflow_registrations`
|
|
- `system_workflow_registration_versions`
|
|
- `workflow_executions`
|
|
- `workflow_events`
|
|
- `workflow_event_processing`
|
|
- `workflow_snapshots`
|
|
|
|
Also remove legacy seeded data and system workflow records that exist only for workflow v1.
|
|
|
|
## Implementation Slices
|
|
|
|
### 1. Surface cleanup
|
|
|
|
- Remove `Template Library` from workflow control.
|
|
- Remove legacy workflow editor components and template-library UI.
|
|
- Delete or repoint routes and links that still reach v1-only flows.
|
|
|
|
### 2. Action and model cleanup
|
|
|
|
- Remove v1 actions from `packages/workflows/src/actions/index.ts`.
|
|
- Delete v1 action modules that only operate on legacy tables/runtime.
|
|
- Remove models/helpers that only serve legacy registration/version tables.
|
|
|
|
### 3. Runtime/bootstrap cleanup
|
|
|
|
- Remove `getWorkflowRuntime()` and the shared singleton runtime.
|
|
- Remove legacy workflow initialization from server/shared startup.
|
|
- Delete v1 persistence models and event-sourcing helpers under `shared/workflow/persistence`.
|
|
|
|
### 4. Database cleanup
|
|
|
|
- Add destructive migration(s) to delete legacy data and drop v1 tables.
|
|
- Update tenant export/deletion/distribution code that still references dropped tables.
|
|
|
|
## Data Flow After This Change
|
|
|
|
- Authoring uses workflow v2 definitions only.
|
|
- Manual runs, event-driven runs, and schedules all launch via workflow v2 actions/runtime.
|
|
- The control panel exposes only workflow-v2 operations.
|
|
- No server bootstrap path initializes or processes workflow v1 definitions/events.
|
|
|
|
## Risks
|
|
|
|
- Some non-obvious consumers still query v1 tables directly, especially inbox/activity/integration code.
|
|
- Schema drops may break tenant export/deletion or citus distribution helpers if not updated in the same pass.
|
|
- Old tests that still import `getWorkflowRuntime()` or v1 actions will fail until removed or rewritten.
|
|
|
|
## Mitigations
|
|
|
|
- Remove surface area first so stale UI is gone before backend cleanup.
|
|
- Audit all `getWorkflowRuntime()` and legacy action imports before deleting core runtime files.
|
|
- Run focused typecheck/tests after each slice and boot the local app before applying DB drops.
|
|
|
|
## Acceptance Criteria
|
|
|
|
- No menu/tab/route in the app exposes workflow v1 editor or template library.
|
|
- No code in the app bootstraps or calls workflow v1 runtime.
|
|
- No exports remain for v1 workflow actions.
|
|
- Legacy v1 workflow tables are dropped by migration and no active code references them.
|
|
- `/msp/workflow-editor` and `/msp/workflow-control` remain operational for workflow v2.
|