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
AGENTS.md
docs/CODEX_EXECUTION_CONTRACT.md
- Rack sections of
docs/NORTH_STAR_PRD.md
docs/rack/ADR-0002-RACK-RUNTIME-ARCHITECTURE.md
docs/rack/ADR-0003-ISOLATED-RACK-EDITOR.md
docs/rack/VST3_RACK_RESEARCH.md
docs/rack/RACK_EDITOR_SPEC.md
docs/rack/VST3_RACK_EXECUTION_SPEC.md
docs/rack/VST3_RACK_TICKETS.md
docs/rack/CURRENT_STATUS.md
- 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.
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
AGENTS.mddocs/CODEX_EXECUTION_CONTRACT.mddocs/NORTH_STAR_PRD.mddocs/rack/ADR-0002-RACK-RUNTIME-ARCHITECTURE.mddocs/rack/ADR-0003-ISOLATED-RACK-EDITOR.mddocs/rack/VST3_RACK_RESEARCH.mddocs/rack/RACK_EDITOR_SPEC.mddocs/rack/VST3_RACK_EXECUTION_SPEC.mddocs/rack/VST3_RACK_TICKETS.mddocs/rack/CURRENT_STATUS.mdDo not use prior chat as architecture authority when repository docs exist.
Locked v2 shape
VST3 Rackfilter;Open Rack;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 IMGUIorBLOCKEDbefore R0-1 begins.Dependency spine
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:
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.