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
1606 lines
40 KiB
JSON
1606 lines
40 KiB
JSON
{
|
|
"feature": "Workflow Run Studio",
|
|
"description": "End-to-end UX for running workflows, supplying synthetic event payloads, and observing live execution with step status, logs, and history.",
|
|
"branch": "feat/workflow-overhaul",
|
|
"createdAt": "2025-12-26",
|
|
"relatedPRDSection": "§21",
|
|
"tasks": [
|
|
{
|
|
"id": "WRX-001",
|
|
"category": "Run Trigger",
|
|
"description": "Add Run button in designer toolbar (only when workflow has a published version)",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-002",
|
|
"category": "Run Trigger",
|
|
"description": "Disable Run when workflow is paused or validation_status=error",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-003",
|
|
"category": "Run Trigger",
|
|
"description": "Show published version selector in Run dialog",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-004",
|
|
"category": "Run Trigger",
|
|
"description": "Allow running latest published version by default",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-005",
|
|
"category": "Run Trigger",
|
|
"description": "Display trigger type (event/manual) in Run dialog header",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-006",
|
|
"category": "Run Trigger",
|
|
"description": "Show warning when draft differs from published version",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-007",
|
|
"category": "Run Trigger",
|
|
"description": "Offer quick link to publish before running",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-008",
|
|
"category": "Run Trigger",
|
|
"description": "Add confirmation when running system workflows",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-009",
|
|
"category": "Run Trigger",
|
|
"description": "Surface concurrency limit notice in Run dialog",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-010",
|
|
"category": "Run Trigger",
|
|
"description": "Remember last used run options per workflow",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-011",
|
|
"category": "Test Event Builder",
|
|
"description": "Render payload editor seeded with payload schema defaults",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-012",
|
|
"category": "Test Event Builder",
|
|
"description": "Support JSON editor + structured form toggle",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-013",
|
|
"category": "Test Event Builder",
|
|
"description": "Validate JSON syntax and show inline errors",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-014",
|
|
"category": "Test Event Builder",
|
|
"description": "Provide schema-driven required field indicators",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-015",
|
|
"category": "Test Event Builder",
|
|
"description": "Offer example payload snippets from schema examples",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-016",
|
|
"category": "Test Event Builder",
|
|
"description": "Allow saving named payload presets per workflow",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-017",
|
|
"category": "Test Event Builder",
|
|
"description": "Allow cloning prior run payload into editor",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-018",
|
|
"category": "Test Event Builder",
|
|
"description": "Add \"Reset to defaults\" action",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-019",
|
|
"category": "Test Event Builder",
|
|
"description": "Support quick-fill from sample templates (email, webhook, etc.)",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-020",
|
|
"category": "Test Event Builder",
|
|
"description": "Show payload size estimate and limit warnings",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-021",
|
|
"category": "Schema-Based Form",
|
|
"description": "Auto-generate form fields from payload schema",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-022",
|
|
"category": "Schema-Based Form",
|
|
"description": "Support nested objects with collapsible sections",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-023",
|
|
"category": "Schema-Based Form",
|
|
"description": "Support arrays with add/remove row controls",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-024",
|
|
"category": "Schema-Based Form",
|
|
"description": "Render enums as select dropdowns",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-025",
|
|
"category": "Schema-Based Form",
|
|
"description": "Render booleans as toggles",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-026",
|
|
"category": "Schema-Based Form",
|
|
"description": "Render date/time with datetime picker",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-027",
|
|
"category": "Schema-Based Form",
|
|
"description": "Show field descriptions as helper text",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-028",
|
|
"category": "Schema-Based Form",
|
|
"description": "Surface default values with reset per field",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-029",
|
|
"category": "Schema-Based Form",
|
|
"description": "Show validation errors from Zod schema",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-030",
|
|
"category": "Schema-Based Form",
|
|
"description": "Allow copy JSON from form view",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-031",
|
|
"category": "Run Studio Layout",
|
|
"description": "Create dedicated Run Studio page for a workflow run",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-032",
|
|
"category": "Run Studio Layout",
|
|
"description": "Left: pipeline visualization; right: details/logs",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-033",
|
|
"category": "Run Studio Layout",
|
|
"description": "Top bar with run status, workflow name, version",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-034",
|
|
"category": "Run Studio Layout",
|
|
"description": "Breadcrumb navigation back to workflow designer",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-035",
|
|
"category": "Run Studio Layout",
|
|
"description": "Sticky status summary on scroll",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-036",
|
|
"category": "Run Studio Layout",
|
|
"description": "Split panel resizing with persisted widths",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-037",
|
|
"category": "Run Studio Layout",
|
|
"description": "Run metadata panel (run_id, started_at, duration)",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-038",
|
|
"category": "Run Studio Layout",
|
|
"description": "Show tenant and trigger metadata",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-039",
|
|
"category": "Run Studio Layout",
|
|
"description": "Quick link to open definition version",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-040",
|
|
"category": "Run Studio Layout",
|
|
"description": "Empty state when no run selected",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-041",
|
|
"category": "Node Status Visualization",
|
|
"description": "Show running node highlighted (e.g., cyan) with pulse",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-042",
|
|
"category": "Node Status Visualization",
|
|
"description": "Show succeeded nodes in green",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-043",
|
|
"category": "Node Status Visualization",
|
|
"description": "Show failed nodes in red",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-044",
|
|
"category": "Node Status Visualization",
|
|
"description": "Show canceled nodes in gray",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-045",
|
|
"category": "Node Status Visualization",
|
|
"description": "Show waiting nodes in yellow",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-046",
|
|
"category": "Node Status Visualization",
|
|
"description": "Render retrying nodes with striped indicator",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-047",
|
|
"category": "Node Status Visualization",
|
|
"description": "Display node attempt count badge",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-048",
|
|
"category": "Node Status Visualization",
|
|
"description": "Animate transition from running → succeeded",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-049",
|
|
"category": "Node Status Visualization",
|
|
"description": "Show tooltip with last status + timestamp",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-050",
|
|
"category": "Node Status Visualization",
|
|
"description": "Expose legend for status colors",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-051",
|
|
"category": "Live Updates",
|
|
"description": "Poll run status and step statuses at interval",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-052",
|
|
"category": "Live Updates",
|
|
"description": "Backoff polling when run completes",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-053",
|
|
"category": "Live Updates",
|
|
"description": "Allow manual refresh button",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-054",
|
|
"category": "Live Updates",
|
|
"description": "Subscribe to server-sent events when available",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-055",
|
|
"category": "Live Updates",
|
|
"description": "Auto-scroll to latest step on updates",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-056",
|
|
"category": "Live Updates",
|
|
"description": "Detect stale UI and display \"out of date\" banner",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-057",
|
|
"category": "Live Updates",
|
|
"description": "Update duration timer live while running",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-058",
|
|
"category": "Live Updates",
|
|
"description": "Handle network disconnects gracefully",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-059",
|
|
"category": "Live Updates",
|
|
"description": "Prevent UI flicker with diff-based updates",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-060",
|
|
"category": "Live Updates",
|
|
"description": "Show \"last updated\" timestamp",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-061",
|
|
"category": "Execution History",
|
|
"description": "Show chronological step execution timeline",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-062",
|
|
"category": "Execution History",
|
|
"description": "Group retries under a step with expandable attempts",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-063",
|
|
"category": "Execution History",
|
|
"description": "Show wait steps (event/human/timeout) in timeline",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-064",
|
|
"category": "Execution History",
|
|
"description": "Display duration per step attempt",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-065",
|
|
"category": "Execution History",
|
|
"description": "Provide search/filter within history",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-066",
|
|
"category": "Execution History",
|
|
"description": "Highlight failed attempts with error summary",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-067",
|
|
"category": "Execution History",
|
|
"description": "Allow jumping timeline to node in graph",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-068",
|
|
"category": "Execution History",
|
|
"description": "Show state.set transitions in timeline",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-069",
|
|
"category": "Execution History",
|
|
"description": "Show control block enter/exit markers",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-070",
|
|
"category": "Execution History",
|
|
"description": "Export timeline as JSON",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-071",
|
|
"category": "Run Logs",
|
|
"description": "Stream logs for the run with level filtering",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-072",
|
|
"category": "Run Logs",
|
|
"description": "Support log search (text match)",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-073",
|
|
"category": "Run Logs",
|
|
"description": "Support paging/virtualization for large log sets",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-074",
|
|
"category": "Run Logs",
|
|
"description": "Show log context (step_path, event_name)",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-075",
|
|
"category": "Run Logs",
|
|
"description": "Allow copy log line with timestamp",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-076",
|
|
"category": "Run Logs",
|
|
"description": "Allow download logs as CSV",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-077",
|
|
"category": "Run Logs",
|
|
"description": "Colorize by log level",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-078",
|
|
"category": "Run Logs",
|
|
"description": "Pin logs panel open across navigation",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-079",
|
|
"category": "Run Logs",
|
|
"description": "Show empty state when no logs",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-080",
|
|
"category": "Run Logs",
|
|
"description": "Show \"log source\" column",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-081",
|
|
"category": "Step Details",
|
|
"description": "Show selected step configuration (read-only)",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-082",
|
|
"category": "Step Details",
|
|
"description": "Show input mapping resolved values (from snapshot)",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-083",
|
|
"category": "Step Details",
|
|
"description": "Show output payload for action.call steps",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-084",
|
|
"category": "Step Details",
|
|
"description": "Show error payload for failed steps",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-085",
|
|
"category": "Step Details",
|
|
"description": "Show retry policy for step",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-086",
|
|
"category": "Step Details",
|
|
"description": "Allow copy JSON of input/output",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-087",
|
|
"category": "Step Details",
|
|
"description": "Show action id + version for action.call",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-088",
|
|
"category": "Step Details",
|
|
"description": "Show node type + config for node steps",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-089",
|
|
"category": "Step Details",
|
|
"description": "Surface idempotency key for action steps",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-090",
|
|
"category": "Step Details",
|
|
"description": "Show step path with breadcrumbs",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-091",
|
|
"category": "Envelope Snapshots",
|
|
"description": "View envelope snapshot per step",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-092",
|
|
"category": "Envelope Snapshots",
|
|
"description": "Diff two snapshots side-by-side",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-093",
|
|
"category": "Envelope Snapshots",
|
|
"description": "Highlight changed fields between steps",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-094",
|
|
"category": "Envelope Snapshots",
|
|
"description": "Allow expand/collapse large objects",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-095",
|
|
"category": "Envelope Snapshots",
|
|
"description": "Mask secrets in snapshot view",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-096",
|
|
"category": "Envelope Snapshots",
|
|
"description": "Search within snapshot JSON",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-097",
|
|
"category": "Envelope Snapshots",
|
|
"description": "Copy JSON path from snapshot view",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-098",
|
|
"category": "Envelope Snapshots",
|
|
"description": "Show snapshot size and redaction status",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-099",
|
|
"category": "Envelope Snapshots",
|
|
"description": "Allow download snapshot JSON",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-100",
|
|
"category": "Envelope Snapshots",
|
|
"description": "Show warnings when snapshot truncated",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-101",
|
|
"category": "Error Handling UX",
|
|
"description": "Display run-level error summary banner",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-102",
|
|
"category": "Error Handling UX",
|
|
"description": "Show stack trace panel for failures",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-103",
|
|
"category": "Error Handling UX",
|
|
"description": "Display error category (ActionError, ValidationError)",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-104",
|
|
"category": "Error Handling UX",
|
|
"description": "Show last successful step before failure",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-105",
|
|
"category": "Error Handling UX",
|
|
"description": "Provide link to retry/resume actions",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-106",
|
|
"category": "Error Handling UX",
|
|
"description": "Show human task link if created",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-107",
|
|
"category": "Error Handling UX",
|
|
"description": "Expose error_json from run record",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-108",
|
|
"category": "Error Handling UX",
|
|
"description": "Show resume_event_name/payload when waiting",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-109",
|
|
"category": "Error Handling UX",
|
|
"description": "Offer \"Report bug\" with context",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-110",
|
|
"category": "Error Handling UX",
|
|
"description": "Show hints for common error codes",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-111",
|
|
"category": "Run Controls",
|
|
"description": "Add Cancel Run button",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-112",
|
|
"category": "Run Controls",
|
|
"description": "Add Resume Run button (admin only)",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-113",
|
|
"category": "Run Controls",
|
|
"description": "Add Replay Run button with payload override",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-114",
|
|
"category": "Run Controls",
|
|
"description": "Confirm destructive actions (cancel/replay)",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-115",
|
|
"category": "Run Controls",
|
|
"description": "Show run status change toast notifications",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-116",
|
|
"category": "Run Controls",
|
|
"description": "Disable controls when run is finished",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-117",
|
|
"category": "Run Controls",
|
|
"description": "Add \"Requeue wait\" action for waiting runs",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-118",
|
|
"category": "Run Controls",
|
|
"description": "Show reason input for cancel/replay",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-119",
|
|
"category": "Run Controls",
|
|
"description": "Audit log entry for operator actions",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-120",
|
|
"category": "Run Controls",
|
|
"description": "Expose \"Open in new tab\" action",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-121",
|
|
"category": "Run List Integration",
|
|
"description": "Add \"Run now\" action to workflow list row",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-122",
|
|
"category": "Run List Integration",
|
|
"description": "Add \"View latest run\" quick action",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-123",
|
|
"category": "Run List Integration",
|
|
"description": "Open Run Studio from Runs tab",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-124",
|
|
"category": "Run List Integration",
|
|
"description": "Filter runs by workflow version",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-125",
|
|
"category": "Run List Integration",
|
|
"description": "Filter runs by status",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-126",
|
|
"category": "Run List Integration",
|
|
"description": "Filter runs by date range",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-127",
|
|
"category": "Run List Integration",
|
|
"description": "Show run count badges per workflow",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-128",
|
|
"category": "Run List Integration",
|
|
"description": "Show latest run status in workflow list",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-129",
|
|
"category": "Run List Integration",
|
|
"description": "Link run_id to Run Studio",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-130",
|
|
"category": "Run List Integration",
|
|
"description": "Support shareable run URLs",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-131",
|
|
"category": "Permissions & Security",
|
|
"description": "Require workflow:manage permission to run",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-132",
|
|
"category": "Permissions & Security",
|
|
"description": "Require workflow:admin for system workflow runs",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-133",
|
|
"category": "Permissions & Security",
|
|
"description": "Hide secrets in logs and snapshots",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-134",
|
|
"category": "Permissions & Security",
|
|
"description": "Restrict log access to workflow:read",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-135",
|
|
"category": "Permissions & Security",
|
|
"description": "Enforce tenant isolation for run data",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-136",
|
|
"category": "Permissions & Security",
|
|
"description": "Check secrets.view for secret metadata in UI",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-137",
|
|
"category": "Permissions & Security",
|
|
"description": "Block run controls for read-only users",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-138",
|
|
"category": "Permissions & Security",
|
|
"description": "Audit user actions for run controls",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-139",
|
|
"category": "Permissions & Security",
|
|
"description": "Mask sensitive payload fields by pattern",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-140",
|
|
"category": "Permissions & Security",
|
|
"description": "Support per-tenant redaction overrides",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-141",
|
|
"category": "Backend API",
|
|
"description": "Add server action to create synthetic run with payload",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-142",
|
|
"category": "Backend API",
|
|
"description": "Add server action to list steps + snapshots for run",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-143",
|
|
"category": "Backend API",
|
|
"description": "Add server action to list logs for run",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-144",
|
|
"category": "Backend API",
|
|
"description": "Add server action to export logs",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-145",
|
|
"category": "Backend API",
|
|
"description": "Add server action to fetch run summary metadata",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-146",
|
|
"category": "Backend API",
|
|
"description": "Add server action to fetch latest run by workflow",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-147",
|
|
"category": "Backend API",
|
|
"description": "Add server action to replay run",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-148",
|
|
"category": "Backend API",
|
|
"description": "Add server action to cancel run",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-149",
|
|
"category": "Backend API",
|
|
"description": "Add server action to resume run",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-150",
|
|
"category": "Backend API",
|
|
"description": "Add server action to list run timeline events",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-151",
|
|
"category": "Backend Runtime",
|
|
"description": "Emit step status updates with timestamps",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-152",
|
|
"category": "Backend Runtime",
|
|
"description": "Persist node_path on each step transition",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-153",
|
|
"category": "Backend Runtime",
|
|
"description": "Record attempt counts per step",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-154",
|
|
"category": "Backend Runtime",
|
|
"description": "Write action invocation records for idempotency",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-155",
|
|
"category": "Backend Runtime",
|
|
"description": "Store snapshot size and enforce limits",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-156",
|
|
"category": "Backend Runtime",
|
|
"description": "Write logs for state transitions",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-157",
|
|
"category": "Backend Runtime",
|
|
"description": "Capture error context for run",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-158",
|
|
"category": "Backend Runtime",
|
|
"description": "Expose wait metadata for event/human/timeouts",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-159",
|
|
"category": "Backend Runtime",
|
|
"description": "Provide run summary aggregation",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-160",
|
|
"category": "Backend Runtime",
|
|
"description": "Support resume from persisted node_path",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-161",
|
|
"category": "Telemetry & Analytics",
|
|
"description": "Track run started event",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-162",
|
|
"category": "Telemetry & Analytics",
|
|
"description": "Track run completed event",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-163",
|
|
"category": "Telemetry & Analytics",
|
|
"description": "Track run failed event",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-164",
|
|
"category": "Telemetry & Analytics",
|
|
"description": "Track time-to-complete metric",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-165",
|
|
"category": "Telemetry & Analytics",
|
|
"description": "Track step retry counts",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-166",
|
|
"category": "Telemetry & Analytics",
|
|
"description": "Capture workflow_run_id in logs",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-167",
|
|
"category": "Telemetry & Analytics",
|
|
"description": "Emit run status change notifications",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-168",
|
|
"category": "Telemetry & Analytics",
|
|
"description": "Expose metrics for dashboard",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-169",
|
|
"category": "Telemetry & Analytics",
|
|
"description": "Track usage of Run Studio",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-170",
|
|
"category": "Telemetry & Analytics",
|
|
"description": "Track export logs usage",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-171",
|
|
"category": "Performance",
|
|
"description": "Virtualize run log list",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-172",
|
|
"category": "Performance",
|
|
"description": "Virtualize snapshot JSON viewer",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-173",
|
|
"category": "Performance",
|
|
"description": "Debounce polling when UI inactive",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-174",
|
|
"category": "Performance",
|
|
"description": "Cache schema and registry lookups",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-175",
|
|
"category": "Performance",
|
|
"description": "Compress large payload previews",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-176",
|
|
"category": "Performance",
|
|
"description": "Lazy-load run studio panels",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-177",
|
|
"category": "Performance",
|
|
"description": "Avoid re-rendering graph on log updates",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-178",
|
|
"category": "Performance",
|
|
"description": "Batch UI updates per polling tick",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-179",
|
|
"category": "Performance",
|
|
"description": "Reduce payload size with redaction",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-180",
|
|
"category": "Performance",
|
|
"description": "Memoize computed status map",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-181",
|
|
"category": "Accessibility",
|
|
"description": "Ensure color status has text/label alternatives",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-182",
|
|
"category": "Accessibility",
|
|
"description": "Add aria-live region for run status",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-183",
|
|
"category": "Accessibility",
|
|
"description": "Keyboard navigation for timeline",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-184",
|
|
"category": "Accessibility",
|
|
"description": "Focusable step nodes with status",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-185",
|
|
"category": "Accessibility",
|
|
"description": "Screen reader labels for log entries",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-186",
|
|
"category": "Accessibility",
|
|
"description": "High-contrast mode for statuses",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-187",
|
|
"category": "Accessibility",
|
|
"description": "Respect reduced motion for animations",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-188",
|
|
"category": "Accessibility",
|
|
"description": "Accessible dialog for Run input",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-189",
|
|
"category": "Accessibility",
|
|
"description": "Focus trap in Run dialog",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-190",
|
|
"category": "Accessibility",
|
|
"description": "Skip links to main panels",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-191",
|
|
"category": "Testing",
|
|
"description": "Unit tests for payload form generation",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-192",
|
|
"category": "Testing",
|
|
"description": "Unit tests for validation of synthetic payloads",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-193",
|
|
"category": "Testing",
|
|
"description": "Unit tests for status color mapping",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-194",
|
|
"category": "Testing",
|
|
"description": "Integration tests for start run action",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-195",
|
|
"category": "Testing",
|
|
"description": "Integration tests for cancel/resume actions",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-196",
|
|
"category": "Testing",
|
|
"description": "Integration tests for run status polling",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-197",
|
|
"category": "Testing",
|
|
"description": "Playwright test for Run dialog",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-198",
|
|
"category": "Testing",
|
|
"description": "Playwright test for Run Studio status updates",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-199",
|
|
"category": "Testing",
|
|
"description": "Playwright test for logs viewer search",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-200",
|
|
"category": "Testing",
|
|
"description": "Playwright test for snapshot viewer",
|
|
"file": "",
|
|
"done": false
|
|
},
|
|
{
|
|
"id": "WRX-201",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Add event registry selector to Run dialog (choose event type)",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-202",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Preselect event based on workflow trigger eventName when available",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-203",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Display event category + description in selector row",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-204",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Load event catalog entries for current tenant",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-205",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Allow searching/filtering event catalog list",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-206",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Show system vs tenant event badge in selector",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-207",
|
|
"category": "Event Registry Payloads",
|
|
"description": "On event selection, load payload_schema from event registry",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-208",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Seed payload builder from selected event schema",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-209",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Allow switching back to workflow payload schema",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-210",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Warn when selected event schema differs from workflow payload schema",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-211",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Allow manual override of schema source (event vs payloadSchemaRef)",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-212",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Persist last selected event per workflow (localStorage)",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-213",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Support example payloads from event schema examples",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-214",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Support event-specific sample templates (email/webhook)",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-215",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Show event name/slug in Run dialog header",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-216",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Add quick link to open Events Catalog entry",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-217",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Handle missing event schema gracefully (fallback to payloadSchemaRef)",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-218",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Validate event payload against event schema when selected",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-219",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Display event schema required field indicators in form mode",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-220",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Include event schema descriptions as helper text",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-221",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Allow cloning latest run for the selected event",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-222",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Remember schema source + event selection across sessions",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-223",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Expose event selection in Run options persistence",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-224",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Include eventType in run metadata for synthetic runs",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-225",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Provide inline diff between event schema and payload schema",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-226",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Add \"Use event schema\" action in Run dialog warnings",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-227",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Add telemetry: track event selection usage in Run dialog",
|
|
"file": "",
|
|
"done": true
|
|
},
|
|
{
|
|
"id": "WRX-228",
|
|
"category": "Event Registry Payloads",
|
|
"description": "Add tests for event selector + schema seeding",
|
|
"file": "",
|
|
"done": true
|
|
}
|
|
]
|
|
}
|