|
| 1 | +# AEF Public Benchmarks |
| 2 | + |
| 3 | +This directory documents the reproducible benchmark harnesses included with the Agentic Epistemology Framework. |
| 4 | + |
| 5 | +The benchmark code lives in `examples/` so it can run directly against the TypeScript source without a package publish step. |
| 6 | + |
| 7 | +## Benchmarks |
| 8 | + |
| 9 | +### 1. Generic root-cause benchmark |
| 10 | + |
| 11 | +Tests whether structured epistemic traces recover injected agent failure causes. |
| 12 | + |
| 13 | +```bash |
| 14 | +npx ts-node --transpile-only examples/root-cause-benchmark.ts --seed=42 --cases=160 |
| 15 | +``` |
| 16 | + |
| 17 | +Outputs: |
| 18 | + |
| 19 | +```text |
| 20 | +results/root-cause-benchmark/ |
| 21 | +├── cases.json |
| 22 | +├── metrics.json |
| 23 | +├── metrics.csv |
| 24 | +├── metrics-table.tex |
| 25 | +├── confusion-full.json |
| 26 | +├── confusion-event-only.json |
| 27 | +├── qualitative-example.json |
| 28 | +└── accuracy-by-condition.svg |
| 29 | +``` |
| 30 | + |
| 31 | +Primary metric: diagnosis accuracy by trace condition. |
| 32 | + |
| 33 | +### 2. Facet-frame faithfulness benchmark |
| 34 | + |
| 35 | +Tests whether facet-aware traces improve diagnosis of synthetic persona failures such as facet omission, facet misweighting, facet conflict, persona drift, and response-style violation. |
| 36 | + |
| 37 | +```bash |
| 38 | +npx ts-node --transpile-only examples/facet-frame-faithfulness-benchmark.ts --seed=42 --cases=200 |
| 39 | +``` |
| 40 | + |
| 41 | +Outputs: |
| 42 | + |
| 43 | +```text |
| 44 | +results/facet-frame-faithfulness/ |
| 45 | +├── cases.json |
| 46 | +├── metrics.json |
| 47 | +├── metrics.csv |
| 48 | +├── metrics-table.tex |
| 49 | +├── qualitative-example.json |
| 50 | +└── accuracy-by-condition.svg |
| 51 | +``` |
| 52 | + |
| 53 | +Primary metric: diagnosis accuracy and macro F1 by trace condition. |
| 54 | + |
| 55 | +### 3. Facet faithfulness audit service experiment |
| 56 | + |
| 57 | +Tests the implemented `FacetFaithfulnessAuditService` on Vurvey-style persona cases with prompt provenance, marker coverage, contradictions, counterfactual sensitivity, calibration, and signal-to-noise scoring. |
| 58 | + |
| 59 | +```bash |
| 60 | +npx ts-node --transpile-only examples/facet-faithfulness-audit-experiment.ts |
| 61 | +``` |
| 62 | + |
| 63 | +Outputs: |
| 64 | + |
| 65 | +```text |
| 66 | +results/facet-faithfulness-audit-experiment/ |
| 67 | +├── cases.json |
| 68 | +├── audits.json |
| 69 | +├── metrics.json |
| 70 | +├── metrics-table.tex |
| 71 | +└── diagnosis-accuracy.svg |
| 72 | +``` |
| 73 | + |
| 74 | +Primary metric: diagnosis accuracy by evidence condition. |
| 75 | + |
| 76 | +## Reproducibility notes |
| 77 | + |
| 78 | +- All public benchmark inputs are synthetic fixtures. |
| 79 | +- The harnesses require no Vurvey credentials, no private database, and no model API calls. |
| 80 | +- The Vurvey real-generation counterfactual results included in the paper are reported only as sanitized aggregates under `results/vurvey-*`; raw persona text and raw database fixture rows are intentionally excluded. |
| 81 | + |
| 82 | +## Current reference results |
| 83 | + |
| 84 | +### Generic root-cause benchmark |
| 85 | + |
| 86 | +| Condition | Accuracy | Macro F1 | Coverage | |
| 87 | +|---|---:|---:|---:| |
| 88 | +| full | 1.000 | 1.000 | 1.000 | |
| 89 | +| no_frame | 0.750 | 0.750 | 0.750 | |
| 90 | +| no_justification | 0.500 | 0.500 | 0.500 | |
| 91 | +| event_only | 0.000 | 0.000 | 0.000 | |
| 92 | + |
| 93 | +### Facet-frame faithfulness benchmark |
| 94 | + |
| 95 | +| Condition | Accuracy | Macro F1 | Coverage | |
| 96 | +|---|---:|---:|---:| |
| 97 | +| full | 0.665 | 0.680 | 0.725 | |
| 98 | +| no_facet_weights | 0.465 | 0.466 | 0.595 | |
| 99 | +| no_facet_prompts | 0.200 | 0.200 | 0.200 | |
| 100 | +| event_only | 0.000 | 0.000 | 0.000 | |
| 101 | + |
| 102 | +### Facet faithfulness audit service experiment |
| 103 | + |
| 104 | +| Condition | Accuracy | Faithfulness | SNR | |
| 105 | +|---|---:|---:|---:| |
| 106 | +| prompt_only | 0.125 | 0.162 | 0.17 | |
| 107 | +| facet_list | 0.125 | 0.382 | 0.83 | |
| 108 | +| facet_weights | 0.750 | 0.526 | 2.20 | |
| 109 | +| full_aef | 1.000 | 0.536 | 4.11 | |
| 110 | + |
| 111 | +## How to add a new benchmark |
| 112 | + |
| 113 | +1. Add a new `examples/<benchmark-name>.ts` runner. |
| 114 | +2. Make it deterministic by accepting `--seed`. |
| 115 | +3. Write outputs under `results/<benchmark-name>/`. |
| 116 | +4. Include at least `cases.json`, `metrics.json`, and a qualitative example. |
| 117 | +5. Add a short section to this README with the command and expected outputs. |
0 commit comments