Skip to content

VST3 Rack v2.0 — execution parent / evidence ledger #56

Description

@masarray

Mission

Build the separate VST3 Rack OBS filter as a professional graphical serial multi-VST3 system without weakening the existing Single Host crash-isolation/realtime contract.

This is the parent/evidence ledger for Rack work. Implementation proceeds as small vertical tracer bullets, one fresh context/ticket at a time.

Authoritative read order

  1. AGENTS.md
  2. docs/CODEX_EXECUTION_CONTRACT.md
  3. Rack sections of docs/NORTH_STAR_PRD.md
  4. docs/rack/ADR-0002-RACK-RUNTIME-ARCHITECTURE.md
  5. docs/rack/ADR-0003-ISOLATED-RACK-EDITOR.md
  6. docs/rack/VST3_RACK_RESEARCH.md
  7. docs/rack/RACK_EDITOR_SPEC.md
  8. docs/rack/VST3_RACK_EXECUTION_SPEC.md
  9. docs/rack/VST3_RACK_TICKETS.md
  10. docs/rack/CURRENT_STATUS.md
  11. current child ticket + exact repository fixed point

Do not use prior chat as architecture authority when repository docs exist.

Locked v2 shape

  • separate OBS VST3 Rack filter;
  • separate Rack helper executable and independent Rack protocol;
  • one isolated Rack helper process per Rack filter;
  • serial effects chain first, not free-form graph;
  • protocol-neutral deep HostedPlugin seam extracted from proven Single behavior;
  • immutable chain-generation swaps off realtime path;
  • preallocated ping-pong serial processing;
  • whole-block wet validity: active-chain failure => original dry block;
  • stable slot IDs independent of order;
  • evidence-based crash breadcrumb + bounded recovery/quarantine;
  • automatic Session Snapshot != named reusable Rack Preset;
  • dedicated graphical Rack Editor owned by the isolated Rack helper;
  • OBS Properties is only a thin launcher/status surface with Open Rack;
  • vendor editors remain floating helper-owned native windows in v2;
  • default GUI candidate after UI-0 proof: pinned Dear ImGui + Win32 + DirectX 11, helper-only;
  • initial qualification scope: max 8 mono/stereo Float32 VST3 effects.

The previous stock-OBS-Properties-as-full-editor plan is superseded by ADR-0003. Do not reintroduce private OBS Qt/widget injection.

First gate

REG-0 must complete before Rack production code.

The existing normative contract historically requires Single v1.0 lock before Rack, while current product direction makes Rack the next major target. REG-0 resolves that explicitly with evidence/ADR; do not silently pretend S6 passed and do not silently ignore the contract.

If REG-0 returns GO, the next fresh ticket is UI-0, a short helper-only GUI dependency/window proof. UI-0 loads no VST3 and does not implement Rack runtime. It must finish with GO IMGUI or BLOCKED before R0-1 begins.

Dependency spine

REG-0
  -> UI-0 helper-only graphical dependency proof
  -> R0-1 protocol-neutral process seam
  -> R0-2 HostedPlugin extraction
  -> R1-1 two-plugin separate Rack helper
  -> R1-2 bypass + latency + whole-block fail-dry
  -> R1-3 immutable topology generations
  -> R1-4 crash breadcrumb + restart
  -> R2-1 Rack Session Snapshot
       |-> R2-2 missing/quarantine recovery
       `-> R2-3 Preset Save/Load independent reuse
  -> R3-0 production Rack Editor shell + command/snapshot bridge
  -> R3-1 native OBS Rack thin launcher/status filter
  -> R3-2 graphical slot editing + plug-in browser
  -> R3-3 vendor editor orchestration
  -> R3-4 complete preset management UX
  -> R4-1 deterministic runtime/UI stress matrix
  -> R4-2 package + OBS + representative commercial compatibility
  -> R5-1 v2.0 exact-head lock

Full ticket bodies are in docs/rack/VST3_RACK_TICKETS.md. Create child GitHub issues only when approaching unblocked state so issue text does not drift from accepted architecture.

Parent evidence ledger

For each merged child ticket, append:

Ticket:
Fixed-point base SHA:
Final source SHA:
PR:
Tests added/executed:
CI/compat run IDs:
Manual evidence (if required):
Review findings resolved:
Next unblocked ticket:

v2 non-goals

No sidechain, arbitrary graph/patchbay, parallel routing, MIDI, VST3 instruments, nested racks, embedded vendor editors, private OBS Qt integration, per-slot worker processes, Float64, arbitrary multichannel or cross-platform Rack in v2.

Those are post-v2 phases.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions