fix(studio): enforce optimistic file concurrency (#2156)

* fix(studio): enforce optimistic file concurrency

* fix(studio): harden conditional file writes

* fix(studio): honor explicit file preconditions

* test(producer): allow zero-ms encode timing
This commit is contained in:
James Russo
2026-07-15 18:07:04 -04:00
committed by GitHub
parent 35e623b4f3
commit 2417293dab
34 changed files with 838 additions and 72 deletions
@@ -1,5 +1,6 @@
import { describe, expect, it, vi } from "vitest";
import {
StudioFileConflictError,
StudioSaveHttpError,
StudioSaveNetworkError,
buildStudioSaveFailureProperties,
@@ -8,6 +9,23 @@ import {
} from "./studioSaveDiagnostics";
describe("studio save diagnostics", () => {
it("preserves conflict versions and both sides for explicit recovery UI", () => {
const error = new StudioFileConflictError({
filePath: "index.html",
currentVersion: '"sha256:new"',
currentContent: "external",
attemptedContent: "local",
});
expect(getStudioSaveStatusCode(error)).toBe(409);
expect(error).toMatchObject({
filePath: "index.html",
currentVersion: '"sha256:new"',
currentContent: "external",
attemptedContent: "local",
});
});
it("builds save_failure properties with stable diagnostics", () => {
const error = new StudioSaveHttpError("Failed to save index.html (503)", 503);