Skip to content

Runner execution-policy guidance #22

Description

@lann

Collected policy patterns for L3 runners, mostly from the webrtc-datachannels conformance suite (patterns that survived the webcrypto fork are additionally marked ✓):

  • Instance granularity is runner policy. Fresh-instance-per-case gives isolation, trivial trap containment, and parallelism via replication (intra-instance concurrency is cooperative-only — replication is the parallelism axis); instance-per-suite is cheaper but poisoning costs the remainder (recover by re-instantiating + resuming by name). Both legal under L1. ✓ (both systems are fresh-per-case/process)
  • Layered timeouts: runner hang guard > any SUT-internal operation timeout, so genuine failures classify as failed outcomes and only true hangs trip the guard (guard trip = trap-equivalent = abandon instance). Phase markers in diagnostics identify the hung phase.
  • No retries ✓: a flaky bug would be masked by a second attempt; for network nondeterminism prefer deterministic simulation environments over retries.
  • Write-through reporting: forward diagnostics to the transport promptly; anything buffered in a wasm runner core dies with the store on a trap (prototype finding).
  • Cost tiers / corpus subsetting are deselected, not not-applicable: restricting an expensive target (e.g. browser-boot-per-case) to a smoke subset is selection policy, visible as such in results — never conflated with capability.
  • Concurrent drain obligation: a runner observing diagnostics must consume the stream concurrently with run (load-bearing for sync-lifted suites too — they wedge, not trap, under a non-draining observer).
  • Parallelism multipliers need empirical tuning per target class (browser targets saturate at lower multiples; load-induced timeouts are the flake signature).

Destination: runner-implementer documentation + defaults in the reference runners; the results schema work inherits the deselected/not-applicable distinction.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions