Files
Hare c78f7f7d80 feat: replace revision counters with domain state contracts
Use content digests, key fingerprints, binding and trust identities, immutable mutation receipts, and observation tokens instead of state-update ordinals across API, storage, Runtime, and Web contracts.

Preserve historical replay and secret material through frozen migrations; preflight uncertain removals before cutover, resume provisioning receipts, validate encrypted migration candidates, and align fresh/upgraded schemas. Include reviewed regression fixes, generated artifacts, and validation evidence.
2026-10-10 15:55:20 +09:00

140 lines
4.8 KiB
TypeScript

// Synthetic API boundary only; the production route and shell own all rendering.
export function workdirFixture() {
let mountReleased = false;
const deleted = new Set<string>();
const requests: {
workspace: string;
method: string;
path: string;
body?: unknown;
}[] = [];
const summary = (
id: string,
status = "active",
cleanliness = "clean",
occupied = false,
) => ({
working_directory_id: id,
display_name: id === "retry-dir" ? "Cleanup retry — distributed development checkout" : id,
source: { kind: "repository", repository_key: "main" },
materializer_kind: "runtime_git_clone",
status,
cleanliness,
current_ref: "a".repeat(40),
current_selector: "develop",
occupied_by: occupied
? {
runtime_id: "fixture-runtime",
worker_id: "worker-1",
display_name: "Active Worker",
linked_at: "2026-01-01T00:00:00Z",
}
: null,
});
const items = (workspace: string) =>
workspace === "home-empty" ? [] : [
...(deleted.has(workspace) ? [] : [summary("retry-dir", "cleanup_pending", "unknown")]),
summary("dirty-dir", "active", "dirty"),
summary("occupied-dir", "active", "clean", true),
];
const plan = (workspace: string) => ({
workspace_id: workspace,
runtime_id: "fixture-runtime",
generated_at: "2026-01-01T00:00:00Z",
digest: "digest-1",
workers: [],
diagnostics: [],
workdirs: items(workspace).map((item) => ({
target_id: `workdir:${item.working_directory_id}`,
action: item.cleanliness === "dirty" ? "workdir_dirty_discard" : "workdir_clean_cleanup",
workdir_id: item.working_directory_id,
runtime_id: "fixture-runtime",
repository_key: "main",
reason: "Ordinary cleanup rechecks current conditions",
linked_worker_ids: item.occupied_by ? ["worker-1"] : [],
linked_running_worker_ids: item.occupied_by ? ["worker-1"] : [],
running_linked: Boolean(item.occupied_by),
pinned_linked: false,
file_status: item.status === "cleanup_pending" ? "pending" : "present",
cleanliness: item.cleanliness,
blocking_reason: item.occupied_by ? "Workdir is linked to a running Worker" : null,
})),
});
return async (request: Request): Promise<Response | null> => {
const url = new URL(request.url);
if (
url.pathname === "/fixture-workdirs-control" && request.method === "POST"
) {
const control = await request.json();
mountReleased = control.mountReleased === true;
if (control.reset) {
deleted.clear();
requests.length = 0;
}
return Response.json({ ok: true });
}
if (url.pathname === "/fixture-workdirs") {
return Response.json({ requests });
}
const match = url.pathname.match(/^\/api\/w\/([^/]+)(\/runtimes.*)$/);
if (!match) return null;
const [, workspace, path] = match;
if (path === "/runtimes") {
return Response.json({
workspace_id: workspace,
limit: 100,
source: "fixture",
diagnostics: [],
items: [],
});
}
if (!path.startsWith("/runtimes/fixture-runtime/")) return null;
const body = request.method !== "GET" ? await request.json() : undefined;
requests.push({ workspace, method: request.method, path, body });
if (path.endsWith("/working-directories")) {
return Response.json({
workspace_id: workspace,
items: items(workspace),
diagnostics: [],
});
}
if (path.endsWith("/cleanup-plan")) return Response.json(plan(workspace));
// Baseline route uses cleanup-executions; same retained outcome for before captures.
if (path.endsWith("/cleanup-executions")) {
return Response.json({
workspace_id: workspace,
runtime_id: "fixture-runtime",
executed_at: "2026-01-01T00:00:00Z",
diagnostics: [],
plan_after: plan(workspace),
results: [{
target_id: "workdir:retry-dir",
action: "workdir_clean_cleanup",
status: "retained",
message: "Provider cleanup failed",
}],
});
}
if (
path.endsWith("/working-directories/retry-dir") &&
request.method === "DELETE"
) {
if (workspace === "home-error") {
return Response.json({
message: "Synthetic private host path must not render",
}, { status: 503 });
}
if (mountReleased) deleted.add(workspace);
return Response.json({
working_directory_id: "retry-dir",
disposition: mountReleased ? "removed" : "attention_required",
retryable: !mountReleased,
failure_category: mountReleased ? null : "mount_present",
});
}
return Response.json({ error: "Unexpected fixture Workdir request" }, {
status: 404,
});
};
}