Build, test, and refine sequences in the Development workspace.

The Development workspace brings sequence editing, plugin management, step templates, diff comparison, and simulation together in one place. Requires Technician role or higher.

Development workspace

The Development workspace is the engineering environment for authoring and validating test sequences. It requires Technician role or higher — operators see a locked placeholder.

The workspace has five panels accessible from the left rail:

PanelUse it for
Sequence EditorAuthor and edit test sequences
Plugin ManagerScan and browse available hardware plugins
Step LibrarySave and reuse step templates
Diff ViewerCompare two open sequences side by side
SimulationAnalyze flow and run sequences against mock data

Sequence Editor

Multi-tab editing

Multiple sequences can be open at once. Each tab shows a dirty indicator (orange dot) when there are unsaved changes. Closing a tab loses unsaved changes — save first.

One tab can be set as the engine-active sequence. That sequence is what the Runner uses when you click Start Engine. The active tab shows a teal indicator and a banner: ▶ ACTIVE — this sequence is loaded for the engine.

To set a tab as active, click Set as Active in the banner below the tab. This updates the runner configuration immediately.

Undo / redo

Each tab maintains its own undo/redo stack. Keyboard shortcuts: Ctrl+Z (undo), Ctrl+Y (redo). Stacks are cleared when the tab closes or a new sequence is loaded into it.

Step clipboard

Cut and paste works across tabs. Cutting from one sequence and pasting into another is fully supported. Pasted steps receive new UIDs automatically so they are always unique within the target sequence.

Sequence variables

Sequences can define named typed variables that are substituted into step inputs and validation configs at job-start. This lets one sequence file cover multiple product revisions or test conditions without duplication.

Enable variables by setting interpolation: true in the sequence header, then define variables:

{
  "interpolation": true,
  "variables": {
    "target_voltage": { "value": 3.3,    "type": "number"  },
    "dut_model":      { "value": "RV-04","type": "string"  },
    "strict_mode":    { "value": true,   "type": "boolean" }
  }
}

Placeholder syntax

  • "${target_voltage}" as a full field value → replaced by the raw value 3.3 (preserves numeric type).
  • "Testing ${dut_model} at ${target_voltage}V" (embedded) → always produces a string: "Testing RV-04 at 3.3V".

Rules

  • Variable names: [a-zA-Z_][a-zA-Z0-9_]*
  • One-level resolution only — variable values cannot contain ${…} themselves.
  • An undefined variable causes the job to fail before step 1 with a clear error message.
  • interpolation: false (the default): the resolver is never called. Existing sequences are unaffected.

The Sequence Editor exposes a Variables section in the sequence header. Variables are editable there with type-safe inputs.

Plugin Manager

The Plugin Manager scans and displays available Python worker plugins.

  1. Click Scan Plugins — Corvus scans the configured plugin directory and returns the list of plugin IDs and their supported actions.
  2. Use the filter input to narrow the list by plugin ID or action name.
  3. Expand a plugin row to see its full action list.

The scan result is shared across all open tabs. Any tab's Scan Plugins toolbar button updates the same list.

Step Library

The Step Library stores reusable step templates so that common steps can be inserted into any sequence without re-authoring.

Save a template

  1. Copy or cut a step in the editor.
  2. Switch to the Step Library panel.
  3. Click Save from clipboard.
  4. Give the template a name, description, and category.

Multiple steps in the clipboard each become a separate template entry.

Insert a template

  1. Find the template by category or search.
  2. Click Insert — the template is copied into the clipboard.
  3. Switch back to the editor and paste (Ctrl+V). The step receives a fresh UID.

Organize

Templates are grouped by category. A search input filters by name or description. Delete requires two clicks — a confirmation guard prevents accidental removal.

Diff Viewer

The Diff Viewer compares two open sequences step-by-step.

  1. Both sequences must be open in tabs.
  2. Open the Diff Viewer panel.
  3. Select the left and right sequences from the dropdowns. The active tab is pre-selected as the left side.
  4. Toggle Only show differences to hide equal rows.

Each row shows the step name, ID, and change type. For Changed rows, the specific fields that differ are listed with before and after values.

IndicatorMeaning
GreenStep added in the right sequence
RedStep removed in the right sequence
YellowStep present in both but fields differ
No highlightIdentical in both

Compared fields: name, plugin, action, timeout, inputs, validation, retry, loop config, phase, and on-pass/on-fail jumps.

Simulation

The Simulation panel has two distinct modes.

Static flow analysis

Runs entirely in the application — no hardware, no engine start required. Load a sequence, then open the Simulation panel to see a step-by-step flow graph with:

  • UNREACHABLE badge (red) — step can never execute from step 0.
  • CYCLE badge (yellow) — step is part of a detected jump cycle.
  • Jump annotations (✓→ / ✗→) showing on_pass and on_fail targets visually.

Use this to catch dead steps and infinite loops before running on hardware.

Mock execution

Starts the real engine but substitutes a mock Python worker for all plugin calls. The entire execution path — sequencing, retry logic, loops, validation, and report generation — runs identically to a real run. Only the hardware measurements are synthetic.

  1. Click Run Simulation in the Simulation panel.
  2. The interface switches to the Runner tab automatically.
  3. A purple banner appears: ▷ SIMULATION MODE — No hardware is involved. Results are synthetic.
  4. Trigger jobs as normal. The mock worker returns deterministic synthetic data shaped after the plugin name and action.

Environment controls (set before starting simulation):

VariableDefaultEffect
CORVUS_SIM_PASS_RATE1.0Probability that each step passes. Set below 1.0 to inject random failures for on_fail path testing.
CORVUS_SIM_STEP_DELAY0.05Seconds of simulated delay per step.

Click Stop Simulation to return to normal mode.