Skip to content

R0-1 — introduce protocol-neutral ProcessBlockView without changing Single behavior #63

Description

@masarray

Parent: #56

Blocked by: #57 REG-0 — completed / GO via ADR-0004; #61 UI-0 — completed / GO IMGUI

Purpose

Introduce the protocol-neutral Single processing seam required by Safe VST3 Rack v2 while preserving the existing Single Host protocol and observable behavior.

Fixed-point base for this thread: 060197707a372adce55db63434e7ab709a3d8262.

Vertical proof

The existing Single Host processes the same deterministic audio through the same VST3 engine behavior, but vendor processing no longer fundamentally depends on Single AudioSlot transport.

Mandatory pre-mutation gate

Before changing production Vst3Engine::process(AudioSlot&), add a deterministic real-VST3 engine processing fixture/harness that characterizes the current Single seam, including:

  • successful deterministic processing;
  • invalid/failure block behavior;
  • mono and stereo host blocks;
  • mono/stereo plug-in adaptation behavior where feasible;
  • block/frame semantics and process-context/sample-position continuity relevant to the seam.

The unchanged Single adapter must pass this characterization first.

Implementation

  • introduce bounded non-owning ProcessBlockView or equivalent;
  • add protocol-neutral engine process entry;
  • keep process(AudioSlot&) as the Single adapter;
  • no Single protocol layout/version change;
  • no OBS-facing behavior change;
  • no UI-0 smoke coupling into Single runtime.

Acceptance

  • deterministic audio behavior unchanged across the adapter migration;
  • Single protocol layout/version unchanged and tests green;
  • lifecycle/state/latency/parameter/process-context regressions green;
  • Windows helper/module CI green;
  • Compatibility Test Build including supported OBS loader probe green;
  • exact candidate receives required representative real-machine Single smoke before merge per ADR-0004.

Non-goals

  • no HostedPlugin extraction/rename beyond what is necessary for R0-1;
  • no Rack protocol/helper;
  • no multi-plugin runtime;
  • no Rack OBS filter;
  • no production Rack editor/presets;
  • no Single protocol redesign.

Thread rule

Stop after R0-1 acceptance/evidence. R0-2 starts in a fresh thread.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions