Parent: #56
Blocked by: #63 R0-1 — completed / GO; merged main bcddeb78e0b666d8ba2b4ae6d9ce355142181d5d
Purpose
Extract the proven helper-side one-VST3 lifecycle/state/process behavior into one deep protocol-neutral HostedPlugin seam while preserving Single Host behavior and keeping Single transport/orchestration outside the extracted object.
Fixed-point base for this thread: bcddeb78e0b666d8ba2b4ae6d9ce355142181d5d.
Vertical proof
One helper-side object owning one VST3 can be exercised independently of Single transport semantics while Single Host remains behaviorally equivalent.
Test first / characterization
Characterize and keep green:
- open/close lifecycle;
- protocol-neutral process behavior via the accepted
ProcessBlockView seam;
- latency;
- component/controller state round-trip;
- supported restart/lifecycle behavior;
- helper-owned editor accessor ownership.
Reuse deterministic existing seams where already covered; add the smallest missing characterization needed to prove the extraction itself.
Implementation
- converge proven
Vst3Engine responsibilities into a deep HostedPlugin seam;
- transport adapter remains outside;
- Single helper orchestration stays equivalent;
- no OBS-side state/recovery moves into
HostedPlugin;
- keep Single protocol layout/version unchanged;
- do not change scanner, OBS Properties, installer or state-file naming for Rack needs.
Acceptance
- all mandatory Single lifecycle/state/latency/parameter/process-context/recovery/protocol regressions green;
- deterministic engine/process characterization remains green;
- Windows helper/module + scanner smoke green;
- supported OBS compatibility/package gates green on the exact final source head;
- representative real-machine Single smoke required by ADR-0004 remains green before merge;
- fixed-point Standards + Spec review has no unresolved findings.
Non-goals
- no Rack protocol/helper;
- no multi-plugin runtime;
- no R1-1 work;
- no generic plugin-format abstraction;
- no MIDI/graph ports;
- no scanner redesign;
- no graphical Rack implementation;
- no Single protocol redesign.
Thread rule
Stop after R0-2 acceptance/evidence. R1-1 must start in a fresh thread.
Parent: #56
Blocked by: #63 R0-1 — completed / GO; merged main
bcddeb78e0b666d8ba2b4ae6d9ce355142181d5dPurpose
Extract the proven helper-side one-VST3 lifecycle/state/process behavior into one deep protocol-neutral
HostedPluginseam while preserving Single Host behavior and keeping Single transport/orchestration outside the extracted object.Fixed-point base for this thread:
bcddeb78e0b666d8ba2b4ae6d9ce355142181d5d.Vertical proof
One helper-side object owning one VST3 can be exercised independently of Single transport semantics while Single Host remains behaviorally equivalent.
Test first / characterization
Characterize and keep green:
ProcessBlockViewseam;Reuse deterministic existing seams where already covered; add the smallest missing characterization needed to prove the extraction itself.
Implementation
Vst3Engineresponsibilities into a deepHostedPluginseam;HostedPlugin;Acceptance
Non-goals
Thread rule
Stop after R0-2 acceptance/evidence. R1-1 must start in a fresh thread.