Skip to content

R0-2: extract deep HostedPlugin lifecycle/state seam - #67

Draft
masarray wants to merge 3 commits into
mainfrom
rack/r0-2-hosted-plugin
Draft

R0-2: extract deep HostedPlugin lifecycle/state seam#67
masarray wants to merge 3 commits into
mainfrom
rack/r0-2-hosted-plugin

Conversation

@masarray

Copy link
Copy Markdown
Owner

Closes #66

Parent: #56

Fixed-point base: bcddeb78e0b666d8ba2b4ae6d9ce355142181d5d

Scope is R0-2 only: introduce the protocol-neutral one-VST3 HostedPlugin lifecycle/state/process seam while preserving Single Host behavior and protocol. No Rack protocol/helper, multi-plugin runtime, Rack filter, GUI, presets, scanner redesign, MIDI, or R1-1 work.

TDD history begins with a deterministic real-VST3 stateful processor/controller fixture and source-contract test before production implementation. Final qualification must include R0-2 characterization, mandatory Single CI, Compatibility Test Build, Standards + Spec review, and exact-candidate real-machine Single smoke per ADR-0004 before merge.

Copy link
Copy Markdown
Owner Author

R0-2 fixed-point Standards + Spec review

Reviewed exact source head: d9eb7a4af9d3e52ccbbe5587b8799d9e940fa583
Base: bcddeb78e0b666d8ba2b4ae6d9ce355142181d5d

Standards review

  • Scope is R0-2 only. Diff contains HostedPlugin seam/types, deterministic R0-2 fixture/tests/workflow, and a behavior-neutral relocation of EngineParameter / EngineParameterUpdate definitions.
  • No src/common/protocol.hpp change; Single protocol version/layout is unchanged.
  • No src/host/main.cpp, OBS module, scanner, installer, recovery/state persistence, Rack helper/protocol/filter/UI/preset or multi-plugin runtime change.
  • Existing Vst3Engine::process(AudioSlot&) remains the qualified Single compatibility adapter; R0-1 ProcessBlockView remains unchanged.
  • Native editor implementation/ownership is not moved; HostedPlugin exposes only the controller accessor required by the accepted helper-owned editor boundary.

Spec review

  • HostedPlugin is the new public protocol-neutral one-VST3 reuse seam. Its public header contains no AudioSlot, Single shared-memory layout, Rack topology/generation type, or protocol.hpp dependency; this is enforced by r0-2-hosted-plugin-source-contract.
  • Lifecycle/state/process/parameter/latency/restart/editor-access responsibilities delegate to the already-qualified Vst3Engine implementation through PIMPL. No vendor lifecycle ordering is rewritten.
  • The deterministic R0-2 fixture has a separated processor/controller, non-empty component and controller-private state, a parameter-driven observable processor state, and fixed latency. Characterization covers open/process, parameter catalog/change, component+controller state capture/restore and byte round-trip, latency restart, I/O restart, editor-controller accessor ownership, close/reopen and post-close process rejection.
  • The first runtime characterization exposed the strict component-handler requirement; the harness was corrected to provide a lifetime-valid minimal handler. Production code did not need a relaxation.
  • One heap allocation occurs only when constructing the control-plane HostedPlugin PIMPL; process(ProcessBlockView) adds no allocation or transport work.

Review outcome

No unresolved Standards/Spec code finding on d9eb7a4....

Qualification is still not merge-authorized until every exact-head automated gate is green and ADR-0004 item 11 real-machine Single smoke is recorded on the exact candidate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

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

1 participant