Skip to content

Probe runner: the LV2 child, so lv2_measure runs under the runner like clap-qualify #76

Closed

Description

@linuxnow

The probe-output spec (openmixer docs/design/specs/2026-10-17-probe-output-interface.md §6, stage 1) has the runner run TODAY's probers as its child and translate their output: clap-qualify (probe and scan modes) AND lv2_measure. plugin-hostd-probe run (#72, PR #73) takes --child clap-qualify only, so an LV2 plugin has no limited probe and plugin-qualify still runs lv2_measure under a bare spawnSync timeout (spec F2, F3).

Wanted: the runner accepts an lv2:<uri> plugin and runs plugin-qualify's lv2_measure as the child under the same portable limits, translating its JSONL passes into behaviour and grid[].rtSafety (spec §6 table, sweep-jsonl.ts the translator), with the stress plugin's crash, hang and fork tests repeated through an LV2 fixture, each with its sabotage arm. Settles the rest of stage 1. Tracked by openmixer#1858.

Activity

  1. added
    enhancementNew feature or request
    P2Important — fix this month
    on Oct 18, 2026
  2. linuxnow commented on Oct 18, 2026

    @linuxnow
    ContributorAuthor

    Decision (2026-10-18): the runner drives the LV2 passes itself, with the arguments the probe protocol gives. The real child is looked up at run time at /usr/libexec/plugin-qualify/lv2_measure. plugin-qualify is not a package dependency of plugin-hostd: qualify builds against hostd, so a dependency back would be a cycle. A fake LV2 child is acceptable, and the crash, hang and fork tests require one. Going ahead.

  3. linuxnow commented on Oct 18, 2026

    @linuxnow
    ContributorAuthor

    Rulings (2026-10-18):

    1. Version 1 of the probe runs the quick measurement pass only. The deep lifecycle pass and the soak stay in plugin-qualify's orchestration. They move into the runner only when the probe protocol document (The probe protocol document, version 1: probe-protocol.json and --protocol on the runner #78, which waits for omx-contract#94) declares which plugins get them and for how long. No flag for them now.
    2. A plugin of which nothing can be pinned exits 2 with no document, and the refusal is a code on stderr. The schema stays strict, and the runner never invents a hash.
    3. Read ORACLE_FLOOR_RATES and PARAM_SCALES from omx-contract (#75) #86 and plugin-hostd-probe: run an LV2 plugin through lv2_measure's passes (#76) #90 conflict in src/probe.c; whichever merges second is rebased.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Important — fix this monthenhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions