/*
TypeScript contracts for RFC-0566 immutable platform deploy with atomic rollback.
- Do not implement command logic — this file is types only.
- Do not define Leitstand types — those live in the leitstand module.
- RFC-0566: initial deploy type contracts.
- RFC-1097: step 6 — compass.migrate codemod run
Mechanical v1 to v2 header migration across the workspace: 942 files rewritten — CHANGE_SUMMARY windows collapsed into history, forbidden v1 blocks stripped, KEY_DECISIONS seeded from @ai-invariant comments (5 files) or TODO placeholders (103 files), blocks reordered to canonical order.
- RFC-1097: sweep — werkstatt-engine clean
Sweep batch 4: 73 Compass headers on headerless engine files (certification, component-runtime, isolation, evolution, testing), real KEY_DECISIONS on 75 files (kernel, cache, dht, swim, gitmesh, runtime), ~80 purpose expansions (CONTRACT-02/PURPOSE-02), non-goals on 13 CONTRACT-03 files, CS-07 history literal fix repo-wide (253 files). Policy: .template.ts/.template.astro excludedPaths. werkstatt-engine now 0 diagnostics.
*/
export interface PlatformArtifact {
hash: string;
gitSha: string;
builtAt: string;
buildHost: string;
manifest: ArtifactManifest;
}
export interface ArtifactManifest {
hash: string;
files: ArtifactFile[];
totalSize: number;
builtAt: string;
gitSha: string;
buildHost: string;
signature: string;
signatureAlgorithm: "Ed25519";
}
export interface ArtifactFile {
path: string;
hash: string;
size: number;
}
export interface DeployStatus {
currentHash: string | null;
previousHash: string | null;
currentGitSha: string | null;
deployedAt: string | null;
workshops: WorkshopDeployStatus[];
}
export interface WorkshopDeployStatus {
workshopId: string;
endpoint: string;
currentHash: string;
status: "prepared" | "committed" | "rolled-back" | "failed";
lastDeployAt: string;
}
export interface AtomicSwapResult {
swapped: boolean;
previousHash: string | null;
newHash: string;
swapTimeMs: number;
}
export interface TwoPhaseCommitResult {
phase: "prepare" | "commit" | "abort";
workshops: WorkshopDeployStatus[];
committed: boolean;
rolledBack: boolean;
}
export interface ArtifactGcResult {
dryRun: boolean;
examined: number;
deleted: number;
retained: number;
candidates: Array<{ hash: string; reason: string }>;
}
export interface ArtifactVerifyResult {
verified: boolean;
hash: string;
expectedHash: string;
signatureVerified: boolean;
}
export interface ArtifactBuildResult {
hash: string;
gitSha: string;
builtAt: string;
buildHost: string;
fileCount: number;
totalSize: number;
artifactPath: string;
}