Skip to content

R0-2 — extract one deep HostedPlugin lifecycle/state seam #66

Description

@masarray

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.

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