Idelium scheduling metadata is versioned as idelium-scheduling.v1. The contract
defines how suites, tests, steps, workers, cancellation, ordering, and result
aggregation must behave when a parallel executor is enabled.
The current CLI execution path remains sequential by default. A one-worker schedule is therefore the backward-compatible baseline: work is dispatched in input order and results are emitted in the same order as the configured tests and steps.
Worker counts must be positive integers. 0, negative values, and non-integer
values are rejected before any browser session, API call, plugin, temporary file,
or artifact path is created.
When the requested worker count is greater than the amount of available work,
maxWorkers is bounded to the work-item count. This prevents empty workers from
owning credentials, sessions, or temporary directories.
Parallel dispatch uses input-order scheduling with a stable tie-break. Result
aggregation always uses resultOrdering: "input-order" so downstream Idelium API,
JSON, HTML, Markdown, and JUnit consumers receive deterministic output even when
workers finish at different times.
The cancellation policy is fail-fast-with-in-test-interruption. A failed
required step interrupts later steps in the same test and records those steps as
skipped. Other already-finished results keep their original status, timing, and
diagnostics.
Every concurrent path must isolate:
- tenant identifiers;
- credentials and runtime secrets;
- browser or mobile sessions;
- environment and step configuration;
- temporary files;
- screenshot and diagnostic artifacts.
No worker may share mutable credentials, sessions, temporary directories, or artifact write paths with another worker.
The runtime isolation contract is versioned as idelium-runtime-isolation.v1.
Each worker owns:
- a copied execution configuration;
- a private temporary directory;
- a private artifact directory;
- independent driver, Postman, diagnostic, and artifact result state;
- deterministic cleanup after success, failure, or cancellation.
Temporary paths use generic worker prefixes and must not contain tenant names, credential names, credential values, cookies, or API tokens. Reportable metadata contains only the isolation contract version, tenant identifier, worker identifier, private paths, and cleanup errors.
Lifecycle hooks are versioned as idelium-lifecycle-hooks.v1. Hooks are
allow-listed command payloads, not arbitrary shell commands. The supported
contract commands are:
log;set_variable;clear_artifacts.
The deterministic order is:
- suite setup;
- test setup;
- test execution;
- test teardown;
- suite teardown.
If suite setup or test setup fails, test execution is skipped and teardown still runs where safe. If test execution fails or is cancelled, teardown still runs. Teardown failures fail the lifecycle only when no earlier setup or test failure already determined the result. Hook diagnostics are redacted before they are stored or reported.
Health monitor results are versioned as idelium-health-monitor.v1 and are
classified with category: "health" so they remain separate from test assertion
results. Health checks cover:
- startup readiness before scheduling work;
- mid-run driver or remote-session loss;
- timeout boundaries for worker responsiveness;
- recovery of a previously quarantined resource.
Unhealthy workers, drivers, and remote sessions are quarantined before more work
is scheduled on them. When a driver is available, cleanup is attempted through
the WebDriver adapter and the cleanup outcome is reported as passed, failed,
or not-required. Health diagnostics are redacted before serialization and must
not expose session identifiers, cookies, tokens, credentials, or raw remote
endpoints.