ppef 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/README.md +172 -0
  2. package/dist/__tests__/framework-pipeline.integration.test.d.ts +7 -0
  3. package/dist/__tests__/framework-pipeline.integration.test.d.ts.map +1 -0
  4. package/dist/__tests__/framework-pipeline.integration.test.js +413 -0
  5. package/dist/__tests__/framework-pipeline.integration.test.js.map +1 -0
  6. package/dist/__tests__/registry-executor.integration.test.d.ts +5 -0
  7. package/dist/__tests__/registry-executor.integration.test.d.ts.map +1 -0
  8. package/dist/__tests__/registry-executor.integration.test.js +349 -0
  9. package/dist/__tests__/registry-executor.integration.test.js.map +1 -0
  10. package/dist/__tests__/test-helpers.d.ts +94 -0
  11. package/dist/__tests__/test-helpers.d.ts.map +1 -0
  12. package/dist/__tests__/test-helpers.js +271 -0
  13. package/dist/__tests__/test-helpers.js.map +1 -0
  14. package/dist/aggregation/aggregators.d.ts +54 -0
  15. package/dist/aggregation/aggregators.d.ts.map +1 -0
  16. package/dist/aggregation/aggregators.js +228 -0
  17. package/dist/aggregation/aggregators.js.map +1 -0
  18. package/dist/aggregation/index.d.ts +8 -0
  19. package/dist/aggregation/index.d.ts.map +1 -0
  20. package/dist/aggregation/index.js +8 -0
  21. package/dist/aggregation/index.js.map +1 -0
  22. package/dist/aggregation/pipeline.d.ts +38 -0
  23. package/dist/aggregation/pipeline.d.ts.map +1 -0
  24. package/dist/aggregation/pipeline.js +198 -0
  25. package/dist/aggregation/pipeline.js.map +1 -0
  26. package/dist/claims/evaluator.d.ts +33 -0
  27. package/dist/claims/evaluator.d.ts.map +1 -0
  28. package/dist/claims/evaluator.js +174 -0
  29. package/dist/claims/evaluator.js.map +1 -0
  30. package/dist/claims/index.d.ts +7 -0
  31. package/dist/claims/index.d.ts.map +1 -0
  32. package/dist/claims/index.js +7 -0
  33. package/dist/claims/index.js.map +1 -0
  34. package/dist/collector/index.d.ts +8 -0
  35. package/dist/collector/index.d.ts.map +1 -0
  36. package/dist/collector/index.js +8 -0
  37. package/dist/collector/index.js.map +1 -0
  38. package/dist/collector/result-collector.d.ts +159 -0
  39. package/dist/collector/result-collector.d.ts.map +1 -0
  40. package/dist/collector/result-collector.js +213 -0
  41. package/dist/collector/result-collector.js.map +1 -0
  42. package/dist/collector/schema.d.ts +34 -0
  43. package/dist/collector/schema.d.ts.map +1 -0
  44. package/dist/collector/schema.js +145 -0
  45. package/dist/collector/schema.js.map +1 -0
  46. package/dist/executor/__tests__/checkpoint-hash-bug.diagnostic.test.d.ts +10 -0
  47. package/dist/executor/__tests__/checkpoint-hash-bug.diagnostic.test.d.ts.map +1 -0
  48. package/dist/executor/__tests__/checkpoint-hash-bug.diagnostic.test.js +122 -0
  49. package/dist/executor/__tests__/checkpoint-hash-bug.diagnostic.test.js.map +1 -0
  50. package/dist/executor/__tests__/checkpoint-manager.integration.test.d.ts +7 -0
  51. package/dist/executor/__tests__/checkpoint-manager.integration.test.d.ts.map +1 -0
  52. package/dist/executor/__tests__/checkpoint-manager.integration.test.js +330 -0
  53. package/dist/executor/__tests__/checkpoint-manager.integration.test.js.map +1 -0
  54. package/dist/executor/__tests__/checkpoint-manager.unit.test.d.ts +7 -0
  55. package/dist/executor/__tests__/checkpoint-manager.unit.test.d.ts.map +1 -0
  56. package/dist/executor/__tests__/checkpoint-manager.unit.test.js +449 -0
  57. package/dist/executor/__tests__/checkpoint-manager.unit.test.js.map +1 -0
  58. package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.d.ts +11 -0
  59. package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.d.ts.map +1 -0
  60. package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.js +224 -0
  61. package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.js.map +1 -0
  62. package/dist/executor/__tests__/checkpoint-merge-bug.unit.test.d.ts +8 -0
  63. package/dist/executor/__tests__/checkpoint-merge-bug.unit.test.d.ts.map +1 -0
  64. package/dist/executor/__tests__/checkpoint-merge-bug.unit.test.js +164 -0
  65. package/dist/executor/__tests__/checkpoint-merge-bug.unit.test.js.map +1 -0
  66. package/dist/executor/__tests__/checkpoint-storage.unit.test.d.ts +7 -0
  67. package/dist/executor/__tests__/checkpoint-storage.unit.test.d.ts.map +1 -0
  68. package/dist/executor/__tests__/checkpoint-storage.unit.test.js +386 -0
  69. package/dist/executor/__tests__/checkpoint-storage.unit.test.js.map +1 -0
  70. package/dist/executor/__tests__/executor.unit.test.d.ts +7 -0
  71. package/dist/executor/__tests__/executor.unit.test.d.ts.map +1 -0
  72. package/dist/executor/__tests__/executor.unit.test.js +134 -0
  73. package/dist/executor/__tests__/executor.unit.test.js.map +1 -0
  74. package/dist/executor/__tests__/parallel-checkpoint-merge.integration.test.d.ts +12 -0
  75. package/dist/executor/__tests__/parallel-checkpoint-merge.integration.test.d.ts.map +1 -0
  76. package/dist/executor/__tests__/parallel-checkpoint-merge.integration.test.js +196 -0
  77. package/dist/executor/__tests__/parallel-checkpoint-merge.integration.test.js.map +1 -0
  78. package/dist/executor/__tests__/parallel-executor.integration.test.d.ts +7 -0
  79. package/dist/executor/__tests__/parallel-executor.integration.test.d.ts.map +1 -0
  80. package/dist/executor/__tests__/parallel-executor.integration.test.js +249 -0
  81. package/dist/executor/__tests__/parallel-executor.integration.test.js.map +1 -0
  82. package/dist/executor/__tests__/parallel-executor.unit.test.d.ts +7 -0
  83. package/dist/executor/__tests__/parallel-executor.unit.test.d.ts.map +1 -0
  84. package/dist/executor/__tests__/parallel-executor.unit.test.js +203 -0
  85. package/dist/executor/__tests__/parallel-executor.unit.test.js.map +1 -0
  86. package/dist/executor/checkpoint-manager.d.ts +231 -0
  87. package/dist/executor/checkpoint-manager.d.ts.map +1 -0
  88. package/dist/executor/checkpoint-manager.js +395 -0
  89. package/dist/executor/checkpoint-manager.js.map +1 -0
  90. package/dist/executor/checkpoint-storage.d.ts +230 -0
  91. package/dist/executor/checkpoint-storage.d.ts.map +1 -0
  92. package/dist/executor/checkpoint-storage.js +370 -0
  93. package/dist/executor/checkpoint-storage.js.map +1 -0
  94. package/dist/executor/checkpoint-types.d.ts +48 -0
  95. package/dist/executor/checkpoint-types.d.ts.map +1 -0
  96. package/dist/executor/checkpoint-types.js +8 -0
  97. package/dist/executor/checkpoint-types.js.map +1 -0
  98. package/dist/executor/executor.d.ts +164 -0
  99. package/dist/executor/executor.d.ts.map +1 -0
  100. package/dist/executor/executor.js +408 -0
  101. package/dist/executor/executor.js.map +1 -0
  102. package/dist/executor/index.d.ts +11 -0
  103. package/dist/executor/index.d.ts.map +1 -0
  104. package/dist/executor/index.js +11 -0
  105. package/dist/executor/index.js.map +1 -0
  106. package/dist/executor/memory-monitor.d.ts +115 -0
  107. package/dist/executor/memory-monitor.d.ts.map +1 -0
  108. package/dist/executor/memory-monitor.js +168 -0
  109. package/dist/executor/memory-monitor.js.map +1 -0
  110. package/dist/executor/parallel-executor.d.ts +53 -0
  111. package/dist/executor/parallel-executor.d.ts.map +1 -0
  112. package/dist/executor/parallel-executor.js +194 -0
  113. package/dist/executor/parallel-executor.js.map +1 -0
  114. package/dist/executor/run-id.d.ts +71 -0
  115. package/dist/executor/run-id.d.ts.map +1 -0
  116. package/dist/executor/run-id.js +67 -0
  117. package/dist/executor/run-id.js.map +1 -0
  118. package/dist/executor/worker-entry.d.ts +8 -0
  119. package/dist/executor/worker-entry.d.ts.map +1 -0
  120. package/dist/executor/worker-entry.js +67 -0
  121. package/dist/executor/worker-entry.js.map +1 -0
  122. package/dist/index.cjs +11 -0
  123. package/dist/index.d.ts +15 -0
  124. package/dist/index.d.ts.map +1 -0
  125. package/dist/index.js +24 -0
  126. package/dist/index.js.map +1 -0
  127. package/dist/registry/case-registry.d.ts +113 -0
  128. package/dist/registry/case-registry.d.ts.map +1 -0
  129. package/dist/registry/case-registry.js +160 -0
  130. package/dist/registry/case-registry.js.map +1 -0
  131. package/dist/registry/index.d.ts +8 -0
  132. package/dist/registry/index.d.ts.map +1 -0
  133. package/dist/registry/index.js +8 -0
  134. package/dist/registry/index.js.map +1 -0
  135. package/dist/registry/sut-registry.d.ts +96 -0
  136. package/dist/registry/sut-registry.d.ts.map +1 -0
  137. package/dist/registry/sut-registry.js +126 -0
  138. package/dist/registry/sut-registry.js.map +1 -0
  139. package/dist/renderers/index.d.ts +10 -0
  140. package/dist/renderers/index.d.ts.map +1 -0
  141. package/dist/renderers/index.js +9 -0
  142. package/dist/renderers/index.js.map +1 -0
  143. package/dist/renderers/latex-renderer.d.ts +84 -0
  144. package/dist/renderers/latex-renderer.d.ts.map +1 -0
  145. package/dist/renderers/latex-renderer.js +208 -0
  146. package/dist/renderers/latex-renderer.js.map +1 -0
  147. package/dist/renderers/types.d.ts +106 -0
  148. package/dist/renderers/types.d.ts.map +1 -0
  149. package/dist/renderers/types.js +23 -0
  150. package/dist/renderers/types.js.map +1 -0
  151. package/dist/robustness/analyzer.d.ts +61 -0
  152. package/dist/robustness/analyzer.d.ts.map +1 -0
  153. package/dist/robustness/analyzer.js +191 -0
  154. package/dist/robustness/analyzer.js.map +1 -0
  155. package/dist/robustness/index.d.ts +8 -0
  156. package/dist/robustness/index.d.ts.map +1 -0
  157. package/dist/robustness/index.js +8 -0
  158. package/dist/robustness/index.js.map +1 -0
  159. package/dist/robustness/perturbations.d.ts +46 -0
  160. package/dist/robustness/perturbations.d.ts.map +1 -0
  161. package/dist/robustness/perturbations.js +184 -0
  162. package/dist/robustness/perturbations.js.map +1 -0
  163. package/dist/statistical/index.d.ts +8 -0
  164. package/dist/statistical/index.d.ts.map +1 -0
  165. package/dist/statistical/index.js +8 -0
  166. package/dist/statistical/index.js.map +1 -0
  167. package/dist/statistical/mann-whitney-u.d.ts +62 -0
  168. package/dist/statistical/mann-whitney-u.d.ts.map +1 -0
  169. package/dist/statistical/mann-whitney-u.js +127 -0
  170. package/dist/statistical/mann-whitney-u.js.map +1 -0
  171. package/dist/types/aggregate.d.ts +124 -0
  172. package/dist/types/aggregate.d.ts.map +1 -0
  173. package/dist/types/aggregate.js +9 -0
  174. package/dist/types/aggregate.js.map +1 -0
  175. package/dist/types/case.d.ts +105 -0
  176. package/dist/types/case.d.ts.map +1 -0
  177. package/dist/types/case.js +10 -0
  178. package/dist/types/case.js.map +1 -0
  179. package/dist/types/claims.d.ts +122 -0
  180. package/dist/types/claims.d.ts.map +1 -0
  181. package/dist/types/claims.js +14 -0
  182. package/dist/types/claims.js.map +1 -0
  183. package/dist/types/index.d.ts +12 -0
  184. package/dist/types/index.d.ts.map +1 -0
  185. package/dist/types/index.js +7 -0
  186. package/dist/types/index.js.map +1 -0
  187. package/dist/types/perturbation.d.ts +105 -0
  188. package/dist/types/perturbation.d.ts.map +1 -0
  189. package/dist/types/perturbation.js +9 -0
  190. package/dist/types/perturbation.js.map +1 -0
  191. package/dist/types/result.d.ts +150 -0
  192. package/dist/types/result.d.ts.map +1 -0
  193. package/dist/types/result.js +12 -0
  194. package/dist/types/result.js.map +1 -0
  195. package/dist/types/sut.d.ts +128 -0
  196. package/dist/types/sut.d.ts.map +1 -0
  197. package/dist/types/sut.js +12 -0
  198. package/dist/types/sut.js.map +1 -0
  199. package/package.json +283 -7
@@ -0,0 +1,84 @@
1
+ /**
2
+ * LaTeX Renderer
3
+ *
4
+ * Pure transformation from aggregated results to LaTeX tables.
5
+ * NO aggregation logic allowed here - only formatting and rendering.
6
+ */
7
+ import type { AggregatedResult } from "../types/aggregate.js";
8
+ import type { ClaimEvaluation } from "../types/claims.js";
9
+ import type { ClaimStatusDisplay, Renderer, RenderOutput, TableRenderSpec } from "./types.js";
10
+ /**
11
+ * Options for LaTeX rendering.
12
+ */
13
+ export interface LaTeXRendererOptions {
14
+ /** Claim status symbols */
15
+ claimStatus?: ClaimStatusDisplay;
16
+ /** Whether to use booktabs package */
17
+ booktabs?: boolean;
18
+ /** Default number format decimals */
19
+ defaultDecimals?: number;
20
+ }
21
+ /**
22
+ * LaTeX table renderer.
23
+ */
24
+ export declare class LaTeXRenderer implements Renderer {
25
+ private readonly options;
26
+ constructor(options?: Partial<LaTeXRendererOptions>);
27
+ /**
28
+ * Render a single table.
29
+ * @param aggregates
30
+ * @param spec
31
+ */
32
+ renderTable(aggregates: AggregatedResult[], spec: TableRenderSpec): RenderOutput;
33
+ /**
34
+ * Render all tables.
35
+ * @param aggregates
36
+ * @param specs
37
+ */
38
+ renderAll(aggregates: AggregatedResult[], specs: TableRenderSpec[]): RenderOutput[];
39
+ /**
40
+ * Render claim evaluation summary.
41
+ * @param evaluations
42
+ */
43
+ renderClaimSummary(evaluations: ClaimEvaluation[]): RenderOutput;
44
+ /**
45
+ * Build a LaTeX table from data.
46
+ * @param data
47
+ * @param columns
48
+ * @param caption
49
+ * @param label
50
+ */
51
+ private buildTable;
52
+ /**
53
+ * Format a value for LaTeX.
54
+ * @param value
55
+ */
56
+ private formatValue;
57
+ /**
58
+ * Format a number with configurable decimals.
59
+ * @param n
60
+ * @param decimals
61
+ */
62
+ formatNumber(n: number, decimals?: number): string;
63
+ /**
64
+ * Format a speedup ratio.
65
+ * @param ratio
66
+ */
67
+ formatSpeedup(ratio: number): string;
68
+ /**
69
+ * Format a percentage.
70
+ * @param n
71
+ */
72
+ formatPercentage(n: number): string;
73
+ }
74
+ /**
75
+ * Escape special LaTeX characters.
76
+ * @param text
77
+ */
78
+ export declare const escapeLatex: (text: string) => string;
79
+ /**
80
+ * Create a LaTeX renderer with default options.
81
+ * @param options
82
+ */
83
+ export declare const createLatexRenderer: (options?: Partial<LaTeXRendererOptions>) => LaTeXRenderer;
84
+ //# sourceMappingURL=latex-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latex-renderer.d.ts","sourceRoot":"","sources":["../../src/renderers/latex-renderer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EACX,kBAAkB,EAElB,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,MAAM,YAAY,CAAC;AAGpB;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC,2BAA2B;IAC3B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAEjC,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,qCAAqC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAWD;;GAEG;AACH,qBAAa,aAAc,YAAW,QAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;gBAEnC,OAAO,GAAE,OAAO,CAAC,oBAAoB,CAAM;IAIvD;;;;OAIG;IACH,WAAW,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,eAAe,GAAG,YAAY;IAgChF;;;;OAIG;IACH,SAAS,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,YAAY,EAAE;IAInF;;;OAGG;IACH,kBAAkB,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,YAAY;IAmDhE;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IAwClB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAanB;;;;OAIG;IACH,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAOlD;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAOpC;;;OAGG;IACH,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;CAMnC;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,MAKO,CAAC;AAEnD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,UAAU,OAAO,CAAC,oBAAoB,CAAC,KAAG,aACnD,CAAC"}
@@ -0,0 +1,208 @@
1
+ /**
2
+ * LaTeX Renderer
3
+ *
4
+ * Pure transformation from aggregated results to LaTeX tables.
5
+ * NO aggregation logic allowed here - only formatting and rendering.
6
+ */
7
+ import { LATEX_CLAIM_STATUS } from "./types.js";
8
+ /**
9
+ * Default LaTeX renderer options.
10
+ */
11
+ const DEFAULT_OPTIONS = {
12
+ claimStatus: LATEX_CLAIM_STATUS,
13
+ booktabs: true,
14
+ defaultDecimals: 2,
15
+ };
16
+ /**
17
+ * LaTeX table renderer.
18
+ */
19
+ export class LaTeXRenderer {
20
+ options;
21
+ constructor(options = {}) {
22
+ this.options = { ...DEFAULT_OPTIONS, ...options };
23
+ }
24
+ /**
25
+ * Render a single table.
26
+ * @param aggregates
27
+ * @param spec
28
+ */
29
+ renderTable(aggregates, spec) {
30
+ // Extract and transform data
31
+ let data = spec.extractData(aggregates);
32
+ // Apply filter if specified
33
+ // Note: filter is for aggregates, not extracted data
34
+ // This is handled in extractData
35
+ // Apply sort if specified
36
+ if (spec.sort) {
37
+ data = [...data].sort(spec.sort);
38
+ }
39
+ // Compute caption placeholders
40
+ let caption = spec.caption;
41
+ if (spec.captionPlaceholders) {
42
+ for (const [placeholder, compute] of Object.entries(spec.captionPlaceholders)) {
43
+ caption = caption.replace(`{${placeholder}}`, compute(aggregates));
44
+ }
45
+ }
46
+ // Build LaTeX
47
+ const content = this.buildTable(data, spec.columns, caption, spec.label);
48
+ return {
49
+ id: spec.id,
50
+ filename: spec.filename,
51
+ content,
52
+ format: "latex",
53
+ };
54
+ }
55
+ /**
56
+ * Render all tables.
57
+ * @param aggregates
58
+ * @param specs
59
+ */
60
+ renderAll(aggregates, specs) {
61
+ return specs.map((spec) => this.renderTable(aggregates, spec));
62
+ }
63
+ /**
64
+ * Render claim evaluation summary.
65
+ * @param evaluations
66
+ */
67
+ renderClaimSummary(evaluations) {
68
+ const statusSymbol = (status) => {
69
+ return this.options.claimStatus?.[status] ?? status;
70
+ };
71
+ // Build table rows
72
+ const rows = [];
73
+ for (const evaluation of evaluations) {
74
+ const symbol = statusSymbol(evaluation.status);
75
+ const delta = this.formatNumber(evaluation.evidence.delta, 3);
76
+ const pValue = evaluation.evidence.pValue === undefined
77
+ ? "--"
78
+ : this.formatNumber(evaluation.evidence.pValue, 4);
79
+ rows.push(` ${escapeLatex(evaluation.claim.claimId)} & ` +
80
+ `${escapeLatex(evaluation.claim.description)} & ` +
81
+ `$${symbol}$ & ${delta} & ${pValue} \\\\`);
82
+ }
83
+ // Count summary
84
+ const satisfied = evaluations.filter((e) => e.status === "satisfied").length;
85
+ const violated = evaluations.filter((e) => e.status === "violated").length;
86
+ const inconclusive = evaluations.filter((e) => e.status === "inconclusive").length;
87
+ const caption = `Claim evaluation summary. ${satisfied} satisfied, ${violated} violated, ${inconclusive} inconclusive.`;
88
+ const content = String.raw `\begin{table}[htbp]
89
+ \centering
90
+ \caption{${caption}}
91
+ \label{tab:claim-summary}
92
+ \begin{tabular}{llccc}
93
+ \toprule
94
+ Claim & Description & Status & Delta & p-value \\
95
+ \midrule
96
+ ${rows.join("\n")}
97
+ \bottomrule
98
+ \end{tabular}
99
+ \end{table}
100
+ `;
101
+ return {
102
+ id: "claim-summary",
103
+ filename: "claim-summary.tex",
104
+ content,
105
+ format: "latex",
106
+ };
107
+ }
108
+ /**
109
+ * Build a LaTeX table from data.
110
+ * @param data
111
+ * @param columns
112
+ * @param caption
113
+ * @param label
114
+ */
115
+ buildTable(data, columns, caption, label) {
116
+ const columnSpec = columns.map((c) => c.align).join("");
117
+ const headers = columns.map((c) => c.header).join(" & ");
118
+ const rows = data.map((row) => {
119
+ const cells = columns.map((col) => {
120
+ const value = row[col.key];
121
+ let formatted = col.format ? col.format(value) : this.formatValue(value);
122
+ if (col.bold) {
123
+ formatted = String.raw `\textbf{${formatted}}`;
124
+ }
125
+ return formatted;
126
+ });
127
+ return ` ${cells.join(" & ")} \\\\`;
128
+ });
129
+ const rules = this.options.booktabs
130
+ ? { top: String.raw `\toprule`, mid: String.raw `\midrule`, bottom: String.raw `\bottomrule` }
131
+ : { top: String.raw `\hline`, mid: String.raw `\hline`, bottom: String.raw `\hline` };
132
+ return String.raw `\begin{table}[htbp]
133
+ \centering
134
+ \caption{${caption}}
135
+ \label{${label}}
136
+ \begin{tabular}{${columnSpec}}
137
+ ${rules.top}
138
+ ${headers} \\
139
+ ${rules.mid}
140
+ ${rows.join("\n")}
141
+ ${rules.bottom}
142
+ \end{tabular}
143
+ \end{table}
144
+ `;
145
+ }
146
+ /**
147
+ * Format a value for LaTeX.
148
+ * @param value
149
+ */
150
+ formatValue(value) {
151
+ if (value === null || value === undefined) {
152
+ return "--";
153
+ }
154
+ if (typeof value === "number") {
155
+ return this.formatNumber(value);
156
+ }
157
+ if (typeof value === "string") {
158
+ return escapeLatex(value);
159
+ }
160
+ return escapeLatex(JSON.stringify(value));
161
+ }
162
+ /**
163
+ * Format a number with configurable decimals.
164
+ * @param n
165
+ * @param decimals
166
+ */
167
+ formatNumber(n, decimals) {
168
+ if (!Number.isFinite(n)) {
169
+ return "--";
170
+ }
171
+ return n.toFixed(decimals ?? this.options.defaultDecimals ?? 2);
172
+ }
173
+ /**
174
+ * Format a speedup ratio.
175
+ * @param ratio
176
+ */
177
+ formatSpeedup(ratio) {
178
+ if (!Number.isFinite(ratio)) {
179
+ return "--";
180
+ }
181
+ return String.raw `$${ratio.toFixed(2)}\times$`;
182
+ }
183
+ /**
184
+ * Format a percentage.
185
+ * @param n
186
+ */
187
+ formatPercentage(n) {
188
+ if (!Number.isFinite(n)) {
189
+ return "--";
190
+ }
191
+ return String.raw `${Math.round(n)}\%`;
192
+ }
193
+ }
194
+ /**
195
+ * Escape special LaTeX characters.
196
+ * @param text
197
+ */
198
+ export const escapeLatex = (text) => text
199
+ .replaceAll("\\", String.raw `\textbackslash{}`)
200
+ .replaceAll(/[&%$#_{}]/g, String.raw `\$&`)
201
+ .replaceAll("~", String.raw `\textasciitilde{}`)
202
+ .replaceAll("^", String.raw `\textasciicircum{}`);
203
+ /**
204
+ * Create a LaTeX renderer with default options.
205
+ * @param options
206
+ */
207
+ export const createLatexRenderer = (options) => new LaTeXRenderer(options);
208
+ //# sourceMappingURL=latex-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latex-renderer.js","sourceRoot":"","sources":["../../src/renderers/latex-renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Renderer Type Definitions
3
+ *
4
+ * Types for the rendering layer that transforms aggregated results
5
+ * into human-readable output formats (LaTeX, Markdown, etc.).
6
+ */
7
+ import type { AggregatedResult } from "../types/aggregate.js";
8
+ import type { ClaimEvaluation } from "../types/claims.js";
9
+ /**
10
+ * Column specification for a table.
11
+ */
12
+ export interface ColumnSpec {
13
+ /** Column key (matches field in data) */
14
+ key: string;
15
+ /** Column header text */
16
+ header: string;
17
+ /** LaTeX column alignment (l, r, c) */
18
+ align: "l" | "r" | "c";
19
+ /** Format function for values */
20
+ format?: (value: unknown) => string;
21
+ /** Whether to bold this column's values */
22
+ bold?: boolean;
23
+ /** Whether this column is sortable */
24
+ sortable?: boolean;
25
+ }
26
+ /**
27
+ * Table render specification.
28
+ */
29
+ export interface TableRenderSpec {
30
+ /** Table identifier */
31
+ id: string;
32
+ /** Output filename */
33
+ filename: string;
34
+ /** LaTeX label */
35
+ label: string;
36
+ /** Table caption (can include placeholders like {SPEEDUP}) */
37
+ caption: string;
38
+ /** Column specifications */
39
+ columns: ColumnSpec[];
40
+ /** Data extraction function */
41
+ extractData: (aggregates: AggregatedResult[]) => Record<string, unknown>[];
42
+ /** Optional filter predicate */
43
+ filter?: (aggregate: AggregatedResult) => boolean;
44
+ /** Optional sort function */
45
+ sort?: (a: Record<string, unknown>, b: Record<string, unknown>) => number;
46
+ /** Caption placeholders to compute */
47
+ captionPlaceholders?: Record<string, (aggregates: AggregatedResult[]) => string>;
48
+ }
49
+ /**
50
+ * Render output.
51
+ */
52
+ export interface RenderOutput {
53
+ /** Table/document identifier */
54
+ id: string;
55
+ /** Filename for output */
56
+ filename: string;
57
+ /** Rendered content */
58
+ content: string;
59
+ /** Format type */
60
+ format: "latex" | "markdown" | "json";
61
+ }
62
+ /**
63
+ * Renderer interface.
64
+ */
65
+ export interface Renderer {
66
+ /**
67
+ * Render a single table.
68
+ *
69
+ * @param aggregates - Aggregated results
70
+ * @param spec - Table specification
71
+ * @returns Rendered output
72
+ */
73
+ renderTable(aggregates: AggregatedResult[], spec: TableRenderSpec): RenderOutput;
74
+ /**
75
+ * Render all tables from specifications.
76
+ *
77
+ * @param aggregates - Aggregated results
78
+ * @param specs - Table specifications
79
+ * @returns Array of rendered outputs
80
+ */
81
+ renderAll(aggregates: AggregatedResult[], specs: TableRenderSpec[]): RenderOutput[];
82
+ /**
83
+ * Render claim evaluation summary.
84
+ *
85
+ * @param evaluations - Claim evaluations
86
+ * @returns Rendered output
87
+ */
88
+ renderClaimSummary(evaluations: ClaimEvaluation[]): RenderOutput;
89
+ }
90
+ /**
91
+ * Claim status display configuration.
92
+ */
93
+ export interface ClaimStatusDisplay {
94
+ satisfied: string;
95
+ violated: string;
96
+ inconclusive: string;
97
+ }
98
+ /**
99
+ * Default claim status symbols for LaTeX.
100
+ */
101
+ export declare const LATEX_CLAIM_STATUS: ClaimStatusDisplay;
102
+ /**
103
+ * Default claim status symbols for Unicode.
104
+ */
105
+ export declare const UNICODE_CLAIM_STATUS: ClaimStatusDisplay;
106
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/renderers/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IAEZ,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IAEf,uCAAuC;IACvC,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAEvB,iCAAiC;IACjC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IAEpC,2CAA2C;IAC3C,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC/B,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC;IAEX,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IAEjB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IAEd,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAEhB,4BAA4B;IAC5B,OAAO,EAAE,UAAU,EAAE,CAAC;IAEtB,+BAA+B;IAC/B,WAAW,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAE3E,gCAAgC;IAChC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,OAAO,CAAC;IAElD,6BAA6B;IAC7B,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IAE1E,sCAAsC;IACtC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,MAAM,CAAC,CAAC;CACjF;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IAEX,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IAEjB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAEhB,kBAAkB;IAClB,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACxB;;;;;;OAMG;IACH,WAAW,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,eAAe,GAAG,YAAY,CAAC;IAEjF;;;;;;OAMG;IACH,SAAS,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,YAAY,EAAE,CAAC;IAEpF;;;;;OAKG;IACH,kBAAkB,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,YAAY,CAAC;CACjE;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,kBAIhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAIlC,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Renderer Type Definitions
3
+ *
4
+ * Types for the rendering layer that transforms aggregated results
5
+ * into human-readable output formats (LaTeX, Markdown, etc.).
6
+ */
7
+ /**
8
+ * Default claim status symbols for LaTeX.
9
+ */
10
+ export const LATEX_CLAIM_STATUS = {
11
+ satisfied: String.raw `\checkmark`,
12
+ violated: String.raw `\times`,
13
+ inconclusive: "?",
14
+ };
15
+ /**
16
+ * Default claim status symbols for Unicode.
17
+ */
18
+ export const UNICODE_CLAIM_STATUS = {
19
+ satisfied: "✓",
20
+ violated: "✗",
21
+ inconclusive: "?",
22
+ };
23
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/renderers/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqHH;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAuB;IACrD,SAAS,EAAE,MAAM,CAAC,GAAG,CAAA,YAAY;IACjC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAA,QAAQ;IAC5B,YAAY,EAAE,GAAG;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAuB;IACvD,SAAS,EAAE,GAAG;IACd,QAAQ,EAAE,GAAG;IACb,YAAY,EAAE,GAAG;CACjB,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Robustness Analyzer
3
+ *
4
+ * Analyzes algorithm robustness under perturbations.
5
+ * Computes variance, stability, and degradation metrics.
6
+ */
7
+ import type { RobustnessAnalysisOutput, RobustnessMetrics } from "../types/perturbation.js";
8
+ import type { EvaluationResult } from "../types/result.js";
9
+ /**
10
+ * Options for robustness analysis.
11
+ */
12
+ export interface RobustnessAnalysisOptions {
13
+ /** Metrics to analyze */
14
+ metrics: string[];
15
+ /** Perturbations applied */
16
+ perturbations: string[];
17
+ /** Intensity levels tested (if applicable) */
18
+ intensityLevels?: number[];
19
+ /** Number of runs per perturbation level */
20
+ runsPerLevel?: number;
21
+ }
22
+ /**
23
+ * Analyze robustness of a SUT under perturbation.
24
+ *
25
+ * @param baseResults - Results without perturbation
26
+ * @param perturbedResults - Results with perturbation, keyed by perturbation name
27
+ * @param metric - Metric to analyze
28
+ * @returns Robustness metrics
29
+ */
30
+ export declare const analyzeRobustnessForMetric: (baseResults: EvaluationResult[], perturbedResults: EvaluationResult[], metric: string) => RobustnessMetrics;
31
+ /**
32
+ * Analyze robustness across multiple perturbation levels.
33
+ *
34
+ * @param results - All results including perturbed ones
35
+ * @param metric - Metric to analyze
36
+ * @param intensityLevels - Perturbation intensity levels
37
+ * @returns Robustness metrics with degradation curve
38
+ */
39
+ export declare const analyzeRobustnessWithCurve: (results: EvaluationResult[], metric: string, intensityLevels: number[]) => RobustnessMetrics;
40
+ /**
41
+ * Compare robustness between two SUTs.
42
+ *
43
+ * @param sutAResults - Results for SUT A (including perturbed)
44
+ * @param sutBResults - Results for SUT B (including perturbed)
45
+ * @param metric - Metric to compare
46
+ * @returns Object with comparison metrics
47
+ */
48
+ export declare const compareRobustness: (sutAResults: EvaluationResult[], sutBResults: EvaluationResult[], metric: string) => {
49
+ sutAVariance: number;
50
+ sutBVariance: number;
51
+ relativeRobustness: number;
52
+ };
53
+ /**
54
+ * Create a full robustness analysis output.
55
+ *
56
+ * @param results - All evaluation results (base and perturbed)
57
+ * @param options - Analysis options
58
+ * @returns Complete robustness analysis output
59
+ */
60
+ export declare const createRobustnessAnalysis: (results: EvaluationResult[], options: RobustnessAnalysisOptions) => RobustnessAnalysisOutput;
61
+ //# sourceMappingURL=analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/robustness/analyzer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACX,wBAAwB,EAExB,iBAAiB,EACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACzC,yBAAyB;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,4BAA4B;IAC5B,aAAa,EAAE,MAAM,EAAE,CAAC;IAExB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,GACtC,aAAa,gBAAgB,EAAE,EAC/B,kBAAkB,gBAAgB,EAAE,EACpC,QAAQ,MAAM,KACZ,iBAwCF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,GACtC,SAAS,gBAAgB,EAAE,EAC3B,QAAQ,MAAM,EACd,iBAAiB,MAAM,EAAE,KACvB,iBA2EF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAC7B,aAAa,gBAAgB,EAAE,EAC/B,aAAa,gBAAgB,EAAE,EAC/B,QAAQ,MAAM,KACZ;IACF,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;CAyB3B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,GACpC,SAAS,gBAAgB,EAAE,EAC3B,SAAS,yBAAyB,KAChC,wBAqDF,CAAC"}