File size: 2,503 Bytes
e38d2c0
 
 
 
 
 
 
 
 
 
 
 
 
11c5c3c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9dc9b9a
 
e38d2c0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11c5c3c
 
9dc9b9a
6b5c34f
 
 
 
e38d2c0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11c5c3c
e38d2c0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
export type ImplementationMode = "local" | "nim" | "unavailable";

export type Implementation = {
  mode: ImplementationMode;
  model: string;
  runtime?: string;
  precision?: string;
  latencyMs?: number;
  vramGb?: number;
  throughput?: string;
  notes?: string;
};

export type FailureModeId = 1 | 2 | 3 | 4 | 5;

export const FAILURE_MODES: Record<FailureModeId, { name: string; description: string }> = {
  1: {
    name: "The Uncanny Valley",
    description:
      "Stiff upper facial regions, unnatural lack of global head movement, severe temporal jitter across frames.",
  },
  2: {
    name: "The End-of-Speech Pop",
    description:
      "The generated mouth region visibly clashes in color/saturation with the original static image on reverting to silence.",
  },
  3: {
    name: "Cascaded Latency",
    description:
      "ASR β†’ LLM β†’ TTS β†’ THG run fully serially, each adding sequential latency that caps responsiveness.",
  },
  4: {
    name: "VRAM Death",
    description: "Requires 32GB+ with no quantization path β€” measured, not theoretical.",
  },
  5: {
    name: "The VASA-1 Problem",
    description: "A brilliant claim with no repo and no reproduction. If there's no code, it doesn't count.",
  },
};

export type FailureVerdict = "pass" | "fail" | "at-risk" | "n/a";

export type FailureAudit = {
  mode: FailureModeId;
  verdict: FailureVerdict;
  note: string;
};

export type Tier = "A" | "B" | "C";

export type Confidence = "confirmed" | "inferred";

export type PipelineNode = {
  id: string;
  label: string;
  category:
    | "vision"
    | "asr"
    | "llm"
    | "tts"
    | "avatar"
    | "video"
    | "keyframer"
    | "orchestration";
  summary: string;
  handoffOut?: string;
  expertNote: string;
  implementations: Implementation[];
  children?: PipelineNode[];
  tier?: Tier;
  failureModeAudit?: FailureAudit[];
  confidence?: Confidence;
  // True for stages whose own output quality directly determines how human
  // this looks/sounds (Avatar, TTS, Video) β€” as opposed to stages that affect
  // correctness or latency but aren't themselves a realism bottleneck.
  realismCritical?: boolean;
};

export type EdgeKind = "data" | "hosts" | "loop";

export type PipelineEdge = {
  source: string;
  target: string;
  label?: string;
  kind: EdgeKind;
};

export type Pipeline = {
  id: string;
  name: string;
  description: string;
  sourceInput?: string;
  nodes: PipelineNode[];
  edges: PipelineEdge[];
  pipelineAudit?: FailureAudit[];
};