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.
- package/README.md +172 -0
- package/dist/__tests__/framework-pipeline.integration.test.d.ts +7 -0
- package/dist/__tests__/framework-pipeline.integration.test.d.ts.map +1 -0
- package/dist/__tests__/framework-pipeline.integration.test.js +413 -0
- package/dist/__tests__/framework-pipeline.integration.test.js.map +1 -0
- package/dist/__tests__/registry-executor.integration.test.d.ts +5 -0
- package/dist/__tests__/registry-executor.integration.test.d.ts.map +1 -0
- package/dist/__tests__/registry-executor.integration.test.js +349 -0
- package/dist/__tests__/registry-executor.integration.test.js.map +1 -0
- package/dist/__tests__/test-helpers.d.ts +94 -0
- package/dist/__tests__/test-helpers.d.ts.map +1 -0
- package/dist/__tests__/test-helpers.js +271 -0
- package/dist/__tests__/test-helpers.js.map +1 -0
- package/dist/aggregation/aggregators.d.ts +54 -0
- package/dist/aggregation/aggregators.d.ts.map +1 -0
- package/dist/aggregation/aggregators.js +228 -0
- package/dist/aggregation/aggregators.js.map +1 -0
- package/dist/aggregation/index.d.ts +8 -0
- package/dist/aggregation/index.d.ts.map +1 -0
- package/dist/aggregation/index.js +8 -0
- package/dist/aggregation/index.js.map +1 -0
- package/dist/aggregation/pipeline.d.ts +38 -0
- package/dist/aggregation/pipeline.d.ts.map +1 -0
- package/dist/aggregation/pipeline.js +198 -0
- package/dist/aggregation/pipeline.js.map +1 -0
- package/dist/claims/evaluator.d.ts +33 -0
- package/dist/claims/evaluator.d.ts.map +1 -0
- package/dist/claims/evaluator.js +174 -0
- package/dist/claims/evaluator.js.map +1 -0
- package/dist/claims/index.d.ts +7 -0
- package/dist/claims/index.d.ts.map +1 -0
- package/dist/claims/index.js +7 -0
- package/dist/claims/index.js.map +1 -0
- package/dist/collector/index.d.ts +8 -0
- package/dist/collector/index.d.ts.map +1 -0
- package/dist/collector/index.js +8 -0
- package/dist/collector/index.js.map +1 -0
- package/dist/collector/result-collector.d.ts +159 -0
- package/dist/collector/result-collector.d.ts.map +1 -0
- package/dist/collector/result-collector.js +213 -0
- package/dist/collector/result-collector.js.map +1 -0
- package/dist/collector/schema.d.ts +34 -0
- package/dist/collector/schema.d.ts.map +1 -0
- package/dist/collector/schema.js +145 -0
- package/dist/collector/schema.js.map +1 -0
- package/dist/executor/__tests__/checkpoint-hash-bug.diagnostic.test.d.ts +10 -0
- package/dist/executor/__tests__/checkpoint-hash-bug.diagnostic.test.d.ts.map +1 -0
- package/dist/executor/__tests__/checkpoint-hash-bug.diagnostic.test.js +122 -0
- package/dist/executor/__tests__/checkpoint-hash-bug.diagnostic.test.js.map +1 -0
- package/dist/executor/__tests__/checkpoint-manager.integration.test.d.ts +7 -0
- package/dist/executor/__tests__/checkpoint-manager.integration.test.d.ts.map +1 -0
- package/dist/executor/__tests__/checkpoint-manager.integration.test.js +330 -0
- package/dist/executor/__tests__/checkpoint-manager.integration.test.js.map +1 -0
- package/dist/executor/__tests__/checkpoint-manager.unit.test.d.ts +7 -0
- package/dist/executor/__tests__/checkpoint-manager.unit.test.d.ts.map +1 -0
- package/dist/executor/__tests__/checkpoint-manager.unit.test.js +449 -0
- package/dist/executor/__tests__/checkpoint-manager.unit.test.js.map +1 -0
- package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.d.ts +11 -0
- package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.d.ts.map +1 -0
- package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.js +224 -0
- package/dist/executor/__tests__/checkpoint-merge-bug.diagnostic.test.js.map +1 -0
- package/dist/executor/__tests__/checkpoint-merge-bug.unit.test.d.ts +8 -0
- package/dist/executor/__tests__/checkpoint-merge-bug.unit.test.d.ts.map +1 -0
- package/dist/executor/__tests__/checkpoint-merge-bug.unit.test.js +164 -0
- package/dist/executor/__tests__/checkpoint-merge-bug.unit.test.js.map +1 -0
- package/dist/executor/__tests__/checkpoint-storage.unit.test.d.ts +7 -0
- package/dist/executor/__tests__/checkpoint-storage.unit.test.d.ts.map +1 -0
- package/dist/executor/__tests__/checkpoint-storage.unit.test.js +386 -0
- package/dist/executor/__tests__/checkpoint-storage.unit.test.js.map +1 -0
- package/dist/executor/__tests__/executor.unit.test.d.ts +7 -0
- package/dist/executor/__tests__/executor.unit.test.d.ts.map +1 -0
- package/dist/executor/__tests__/executor.unit.test.js +134 -0
- package/dist/executor/__tests__/executor.unit.test.js.map +1 -0
- package/dist/executor/__tests__/parallel-checkpoint-merge.integration.test.d.ts +12 -0
- package/dist/executor/__tests__/parallel-checkpoint-merge.integration.test.d.ts.map +1 -0
- package/dist/executor/__tests__/parallel-checkpoint-merge.integration.test.js +196 -0
- package/dist/executor/__tests__/parallel-checkpoint-merge.integration.test.js.map +1 -0
- package/dist/executor/__tests__/parallel-executor.integration.test.d.ts +7 -0
- package/dist/executor/__tests__/parallel-executor.integration.test.d.ts.map +1 -0
- package/dist/executor/__tests__/parallel-executor.integration.test.js +249 -0
- package/dist/executor/__tests__/parallel-executor.integration.test.js.map +1 -0
- package/dist/executor/__tests__/parallel-executor.unit.test.d.ts +7 -0
- package/dist/executor/__tests__/parallel-executor.unit.test.d.ts.map +1 -0
- package/dist/executor/__tests__/parallel-executor.unit.test.js +203 -0
- package/dist/executor/__tests__/parallel-executor.unit.test.js.map +1 -0
- package/dist/executor/checkpoint-manager.d.ts +231 -0
- package/dist/executor/checkpoint-manager.d.ts.map +1 -0
- package/dist/executor/checkpoint-manager.js +395 -0
- package/dist/executor/checkpoint-manager.js.map +1 -0
- package/dist/executor/checkpoint-storage.d.ts +230 -0
- package/dist/executor/checkpoint-storage.d.ts.map +1 -0
- package/dist/executor/checkpoint-storage.js +370 -0
- package/dist/executor/checkpoint-storage.js.map +1 -0
- package/dist/executor/checkpoint-types.d.ts +48 -0
- package/dist/executor/checkpoint-types.d.ts.map +1 -0
- package/dist/executor/checkpoint-types.js +8 -0
- package/dist/executor/checkpoint-types.js.map +1 -0
- package/dist/executor/executor.d.ts +164 -0
- package/dist/executor/executor.d.ts.map +1 -0
- package/dist/executor/executor.js +408 -0
- package/dist/executor/executor.js.map +1 -0
- package/dist/executor/index.d.ts +11 -0
- package/dist/executor/index.d.ts.map +1 -0
- package/dist/executor/index.js +11 -0
- package/dist/executor/index.js.map +1 -0
- package/dist/executor/memory-monitor.d.ts +115 -0
- package/dist/executor/memory-monitor.d.ts.map +1 -0
- package/dist/executor/memory-monitor.js +168 -0
- package/dist/executor/memory-monitor.js.map +1 -0
- package/dist/executor/parallel-executor.d.ts +53 -0
- package/dist/executor/parallel-executor.d.ts.map +1 -0
- package/dist/executor/parallel-executor.js +194 -0
- package/dist/executor/parallel-executor.js.map +1 -0
- package/dist/executor/run-id.d.ts +71 -0
- package/dist/executor/run-id.d.ts.map +1 -0
- package/dist/executor/run-id.js +67 -0
- package/dist/executor/run-id.js.map +1 -0
- package/dist/executor/worker-entry.d.ts +8 -0
- package/dist/executor/worker-entry.d.ts.map +1 -0
- package/dist/executor/worker-entry.js +67 -0
- package/dist/executor/worker-entry.js.map +1 -0
- package/dist/index.cjs +11 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/registry/case-registry.d.ts +113 -0
- package/dist/registry/case-registry.d.ts.map +1 -0
- package/dist/registry/case-registry.js +160 -0
- package/dist/registry/case-registry.js.map +1 -0
- package/dist/registry/index.d.ts +8 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +8 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/sut-registry.d.ts +96 -0
- package/dist/registry/sut-registry.d.ts.map +1 -0
- package/dist/registry/sut-registry.js +126 -0
- package/dist/registry/sut-registry.js.map +1 -0
- package/dist/renderers/index.d.ts +10 -0
- package/dist/renderers/index.d.ts.map +1 -0
- package/dist/renderers/index.js +9 -0
- package/dist/renderers/index.js.map +1 -0
- package/dist/renderers/latex-renderer.d.ts +84 -0
- package/dist/renderers/latex-renderer.d.ts.map +1 -0
- package/dist/renderers/latex-renderer.js +208 -0
- package/dist/renderers/latex-renderer.js.map +1 -0
- package/dist/renderers/types.d.ts +106 -0
- package/dist/renderers/types.d.ts.map +1 -0
- package/dist/renderers/types.js +23 -0
- package/dist/renderers/types.js.map +1 -0
- package/dist/robustness/analyzer.d.ts +61 -0
- package/dist/robustness/analyzer.d.ts.map +1 -0
- package/dist/robustness/analyzer.js +191 -0
- package/dist/robustness/analyzer.js.map +1 -0
- package/dist/robustness/index.d.ts +8 -0
- package/dist/robustness/index.d.ts.map +1 -0
- package/dist/robustness/index.js +8 -0
- package/dist/robustness/index.js.map +1 -0
- package/dist/robustness/perturbations.d.ts +46 -0
- package/dist/robustness/perturbations.d.ts.map +1 -0
- package/dist/robustness/perturbations.js +184 -0
- package/dist/robustness/perturbations.js.map +1 -0
- package/dist/statistical/index.d.ts +8 -0
- package/dist/statistical/index.d.ts.map +1 -0
- package/dist/statistical/index.js +8 -0
- package/dist/statistical/index.js.map +1 -0
- package/dist/statistical/mann-whitney-u.d.ts +62 -0
- package/dist/statistical/mann-whitney-u.d.ts.map +1 -0
- package/dist/statistical/mann-whitney-u.js +127 -0
- package/dist/statistical/mann-whitney-u.js.map +1 -0
- package/dist/types/aggregate.d.ts +124 -0
- package/dist/types/aggregate.d.ts.map +1 -0
- package/dist/types/aggregate.js +9 -0
- package/dist/types/aggregate.js.map +1 -0
- package/dist/types/case.d.ts +105 -0
- package/dist/types/case.d.ts.map +1 -0
- package/dist/types/case.js +10 -0
- package/dist/types/case.js.map +1 -0
- package/dist/types/claims.d.ts +122 -0
- package/dist/types/claims.d.ts.map +1 -0
- package/dist/types/claims.js +14 -0
- package/dist/types/claims.js.map +1 -0
- package/dist/types/index.d.ts +12 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/perturbation.d.ts +105 -0
- package/dist/types/perturbation.d.ts.map +1 -0
- package/dist/types/perturbation.js +9 -0
- package/dist/types/perturbation.js.map +1 -0
- package/dist/types/result.d.ts +150 -0
- package/dist/types/result.d.ts.map +1 -0
- package/dist/types/result.js +12 -0
- package/dist/types/result.js.map +1 -0
- package/dist/types/sut.d.ts +128 -0
- package/dist/types/sut.d.ts.map +1 -0
- package/dist/types/sut.js +12 -0
- package/dist/types/sut.js.map +1 -0
- 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"}
|