|
21 | 21 | "chapters/desensitized_section.md", |
22 | 22 | "requirements/multi_turn_requirements.md", |
23 | 23 | "requirements/consolidated_prompt.md", |
| 24 | + "baselines/baseline_a_edited_section.md", |
24 | 25 | "baselines/baseline_a_review.md", |
| 26 | + "baselines/baseline_b_edited_section.md", |
25 | 27 | "baselines/baseline_b_review.md", |
| 28 | + "comparison_report.md", |
26 | 29 | "treatment/source_excerpts/lost-conversation-section.md", |
27 | 30 | "treatment/edited_section.md", |
28 | 31 | "treatment/review_report.md", |
|
45 | 48 | "## Control Finding", |
46 | 49 | ] |
47 | 50 |
|
| 51 | +REQUIRED_COMPARISON_HEADINGS = [ |
| 52 | + "## Summary", |
| 53 | + "## Three-Way Metric Comparison", |
| 54 | + "## Human Review Decision", |
| 55 | +] |
| 56 | + |
48 | 57 |
|
49 | 58 | def read_text(path: Path) -> str: |
50 | 59 | return path.read_text(encoding="utf-8") |
@@ -99,6 +108,23 @@ def validate_review(path: Path, root: Path, issues: List[dict]) -> None: |
99 | 108 | add_issue(issues, "missing-review-metric", rel, f"review does not address {metric}") |
100 | 109 |
|
101 | 110 |
|
| 111 | +def validate_comparison_report(root: Path, issues: List[dict]) -> None: |
| 112 | + path = root / "comparison_report.md" |
| 113 | + if not path.is_file(): |
| 114 | + return |
| 115 | + text = read_text(path) |
| 116 | + rel = str(path.relative_to(root)) |
| 117 | + for heading in REQUIRED_COMPARISON_HEADINGS: |
| 118 | + if heading not in text: |
| 119 | + add_issue(issues, "missing-comparison-heading", rel, f"comparison report is missing heading {heading}") |
| 120 | + for workflow in ["Baseline A", "Baseline B", "Treatment"]: |
| 121 | + if workflow not in text: |
| 122 | + add_issue(issues, "missing-comparison-workflow", rel, f"comparison report does not address {workflow}") |
| 123 | + for metric in REQUIRED_METRICS: |
| 124 | + if metric not in text: |
| 125 | + add_issue(issues, "missing-comparison-metric", rel, f"comparison report does not address {metric}") |
| 126 | + |
| 127 | + |
102 | 128 | def validate_treatment_packet(root: Path, issues: List[dict]) -> None: |
103 | 129 | treatment = root / "treatment" |
104 | 130 | spine_path = treatment / "thesis_control" / "spine_cards.csv" |
@@ -137,6 +163,7 @@ def validate_bench(root: Path) -> dict: |
137 | 163 | validate_review(root / "baselines" / "baseline_a_review.md", root, issues) |
138 | 164 | validate_review(root / "baselines" / "baseline_b_review.md", root, issues) |
139 | 165 | validate_review(root / "treatment" / "review_report.md", root, issues) |
| 166 | + validate_comparison_report(root, issues) |
140 | 167 | validate_treatment_packet(root, issues) |
141 | 168 | return { |
142 | 169 | "schema_version": 1, |
|
0 commit comments