Skip to content

v2.38.0

Choose a tag to compare

@samuelgursky samuelgursky released this 10 Jun 00:05

v2.38.0

Busy gate for long DaVinci Resolve operations — the first piece of the concurrency design for the documented stdio + networked two-instance setup.

Added

  • Long synchronous Resolve calls (timeline export/import, scene-cut detection, subtitle generation, Dolby Vision analysis, folder/clip audio transcription) now register themselves in a cross-process sidecar, so both server instances see each other's work. A tool call that arrives while one is running waits up to 5 seconds and then returns a structured RESOLVE_BUSY error — new busy error category, retryable, with state.busy_with and state.age_seconds — instead of hanging silently inside the scripting bridge. Stale registrations (crashed process, or older than 2 hours) are ignored automatically, and an operation never gates its own thread.

Design decisions (recorded for future phases)

  • Supported concurrency target: a single editor running multiple clients (stdio + networked instance + control panel), not multi-user.
  • Confirm tokens remain per-instance; a cross-instance token failure will get a clearer message in a follow-up.
  • Actor identity in destructive-op records and the AI-ops ledger is deferred to the governance-tiers phase.

Validation

  • Offline unit suite: 1,032 tests, 0 failures, 0 errors. 9 new tests cover registration, owner-thread exemption, cross-thread gating, timeout/recovery, dead-pid and stale/corrupt sidecar handling, and the _check() envelope.
  • Live-validated read-only against DaVinci Resolve Studio 21: free path passes through, simulated long op returns the structured busy envelope, gate releases cleanly afterward. No project state was modified.