Q108: deliverables under review are held until approved instead of written first

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ZacharyZhang-NYandClaude Opus 5.5 committed 2026-10-08 17:45:39 -04:00
1 parent 4765683b86
commit 34c5557a32
13 files changed
+325 -87

No files matched your search

+14 -20
View File
@@ -5,6 +5,7 @@ import type { DatabaseSync } from "node:sqlite";
import { FILE_SCAN_STATE, type FileScanState } from "../../../shared/domain";
import { createId } from "../../../shared/ids";
import { resolveWorkspacePath } from "./workspace-path";
import { withSavepoint } from "../../database/connection";
export interface FileScanResult {
state: FileScanState;
@@ -155,26 +156,19 @@ export function recordWorkspaceFile(db: DatabaseSync, input: {
const name = basename(input.relativePath);
const scan = scanFileContent(name, bytes);
const now = new Date().toISOString();
db.exec("begin immediate");
try {
const id = upsertFileObject(db, {
orgId: input.orgId,
name,
kind: fileKind(name),
sizeBytes: bytes.byteLength,
sha256: createHash("sha256").update(bytes).digest("hex"),
storagePath: absolute,
ownerType: input.ownerType,
ownerId: input.ownerId,
scan,
now,
});
db.exec("commit");
return id;
} catch (error) {
db.exec("rollback");
throw error;
}
// A savepoint, not a transaction: an approved deliverable is recorded inside the approval's own transaction.
return withSavepoint(db, "record_workspace_file", () => upsertFileObject(db, {
orgId: input.orgId,
name,
kind: fileKind(name),
sizeBytes: bytes.byteLength,
sha256: createHash("sha256").update(bytes).digest("hex"),
storagePath: absolute,
ownerType: input.ownerType,
ownerId: input.ownerId,
scan,
now,
}));
}
function grantWorkspaceAccess(db: DatabaseSync, orgId: string, fileId: string, now: string): void {