fix(pS-usage): fail-safe prune protection — in-wire owner nonce + sticky union poison, protect-all on zero identified, abort on unreadable record, rsusage_ prefix
This commit is contained in:
+9
-6
@@ -70,17 +70,20 @@ inline constexpr const char* kProjExtBankGenKey = "bank_generation";
|
||||
inline constexpr const char* kProjExtAssignKey = "assign_request";
|
||||
|
||||
// The pS-usage PER-INSTANCE USAGE-RECORD key prefix. The INSTRUMENT writes one key per
|
||||
// instance — "usage_<instanceGuid>" — carrying the sample_usage wire record of every
|
||||
// instance — "rsusage_<instanceGuid>" — carrying the sample_usage wire record of every
|
||||
// capture that instance holds; the EXTENSION enumerates the prefix at prune-scan time
|
||||
// and folds live instances' holds into the prune's `referenced` set so a held capture
|
||||
// can never be pruned. This is the ONE sanctioned instrument-side ext-state write
|
||||
// (Daniel's ruling — the VST publishes its OWN usage; it never mutates banks/view/
|
||||
// tail/assign, and the bridge's write entry point structurally accepts only this
|
||||
// prefix). WIRE-SHARED in the write->read direction the other keys reverse. FOREVER-
|
||||
// STABLE once shipped: changing the prefix strands every saved project's usage records
|
||||
// (prune falls back to bank-references-only until instances republish — graceful, but
|
||||
// the instance-hold protection lapses for stale-saved projects).
|
||||
inline constexpr const char* kProjExtUsageKeyPrefix = "usage_";
|
||||
// prefix). WIRE-SHARED in the write->read direction the other keys reverse. The "rs"
|
||||
// qualifier is deliberate: a future key that happens to start with "usage_" must never
|
||||
// be swept into the FX-liveness fold (whose abort-on-unreadable rule would then halt
|
||||
// every prune), so the prefix is namespaced like the wire magics (rsusage1/rsassign1).
|
||||
// FOREVER-STABLE once shipped: changing the prefix strands every saved project's usage
|
||||
// records (prune falls back to bank-references-only until instances republish —
|
||||
// graceful, but the instance-hold protection lapses for stale-saved projects).
|
||||
inline constexpr const char* kProjExtUsageKeyPrefix = "rsusage_";
|
||||
|
||||
// The full per-instance usage key for a minted instance GUID (the one composition
|
||||
// point, shared by the instrument's writer and the extension's enumerator).
|
||||
|
||||
Reference in New Issue
Block a user