Ξ-W2-T1 remediation: print master gain into the bake, derive the window from the dialed sound, reset play mode to Trigger
This commit is contained in:
@@ -44,8 +44,9 @@ This directory owns two cross-artifact contracts specifically:
|
||||
namespace via `reaper_bridge::writeUsageExtState` — an entry point that is
|
||||
**prefix-guarded** (accepts only `rsusage_`-prefixed keys, refuses all others), so the
|
||||
read-only-bank invariant is structurally enforced. Direction: the instrument writes
|
||||
usage keys; the extension reads them — the one sanctioned instrument→ext-state write,
|
||||
a deliberate exception analogous to `assignment_request` on the other wire.
|
||||
usage keys; the extension reads them — one of the two sanctioned instrument→ext-state
|
||||
writes (`bake_wire`'s `rsbake_` request key is the other), a deliberate exception
|
||||
analogous to `assignment_request` on the other wire.
|
||||
Usage records are **never cleared by the instrument at teardown** (REAPER destroys the
|
||||
plugin instance when an FX chain is set offline, including Design View's CPU-park, so a
|
||||
terminate-time clear would strip a still-live instance's record); liveness is decided
|
||||
|
||||
@@ -26,6 +26,7 @@ BakeStatus statusFromWire(int raw) {
|
||||
case BakeStatus::StagedMissing:
|
||||
case BakeStatus::NoSource:
|
||||
case BakeStatus::IndexRejected:
|
||||
case BakeStatus::WrongProject:
|
||||
return static_cast<BakeStatus>(raw);
|
||||
}
|
||||
return BakeStatus::Failed;
|
||||
|
||||
@@ -2,14 +2,10 @@
|
||||
// bake_wire — the resample bake's request/outcome pair, on ONE per-instance ext-state key
|
||||
// ("rsbake_<instanceGuid>"). Pure: no REAPER/VST3/SWELL/vendor includes.
|
||||
//
|
||||
// The instrument writes a BakeRequest, invokes the extension's bake action synchronously,
|
||||
// and reads the BakeOutcome the action wrote back over the same key. That is a call and a
|
||||
// return in one UI tick — deliberately NOT the poller/nonce handshake this seam once
|
||||
// spiked; nothing here may grow a claim protocol.
|
||||
//
|
||||
// `generation` exists for the same reason it does on assignment_request: a repeat bake of
|
||||
// the same source is otherwise indistinguishable from a stale value, and an outcome whose
|
||||
// generation does not echo the request is a leftover, not an answer.
|
||||
// A call and a return in one UI tick — deliberately NOT the poller/nonce handshake this
|
||||
// seam once spiked; nothing here may grow a claim protocol. `generation` is a wall-clock
|
||||
// stamp: it distinguishes a repeat bake from a leftover, and dates a request the extension
|
||||
// must refuse rather than answer to nobody.
|
||||
|
||||
#include <cstdint>
|
||||
#include <optional>
|
||||
@@ -52,6 +48,7 @@ enum class BakeStatus : int {
|
||||
StagedMissing = 3, // the staged file was gone or unreadable
|
||||
NoSource = 4, // the source capture is not in any bank
|
||||
IndexRejected = 5, // the bank refused the add
|
||||
WrongProject = 6, // the request belongs to a project tab this extension has not loaded
|
||||
};
|
||||
|
||||
// What the extension did. On Ok the four sample fields describe the landed entry, so the
|
||||
|
||||
@@ -11,11 +11,11 @@
|
||||
// decisions (what to write on publish, which records count at prune time) are
|
||||
// pure and provable without a DAW; shells only move strings.
|
||||
//
|
||||
// The INSTRUMENT writes usage keys, the EXTENSION only reads them — the one
|
||||
// sanctioned instrument->ext-state write. It does not weaken the
|
||||
// read-only-bank invariant: the instrument publishes only its own
|
||||
// per-instance key, never banks/view/tail/assign; the bridge's write entry
|
||||
// point structurally accepts only "rsusage_"-prefixed keys.
|
||||
// The INSTRUMENT writes usage keys, the EXTENSION only reads them — one of the
|
||||
// two sanctioned instrument->ext-state writes (bake_wire's request key is the
|
||||
// other). It does not weaken the read-only-bank invariant: the instrument
|
||||
// publishes only its own per-instance key, never banks/view/tail/assign; the
|
||||
// bridge's write entry point structurally accepts only "rsusage_"-prefixed keys.
|
||||
//
|
||||
// Every failure, ambiguity, or uncertainty here fails safe toward PROTECT (the
|
||||
// territory-wide asymmetry, stated in core/tracking/CLAUDE.md). Three folds enforce
|
||||
|
||||
Reference in New Issue
Block a user