All paths for a single comparison run, rooted at ``run_dir``.
| 148 | |
| 149 | @dataclass |
| 150 | class RunPaths: |
| 151 | """All paths for a single comparison run, rooted at ``run_dir``.""" |
| 152 | |
| 153 | run_dir: Path |
| 154 | run_id: str |
| 155 | |
| 156 | @property |
| 157 | def predictions(self) -> dict[str, Path]: |
| 158 | return { |
| 159 | "clawcodex": self.run_dir / "clawcodex_preds.jsonl", |
| 160 | "openclaude": self.run_dir / "openclaude_preds.jsonl", |
| 161 | } |
| 162 | |
| 163 | @property |
| 164 | def server_logs(self) -> dict[str, Path]: |
| 165 | return { |
| 166 | "clawcodex": self.run_dir / "clawcodex_server.log", |
| 167 | "openclaude": self.run_dir / "openclaude_server.log", |
| 168 | } |
| 169 | |
| 170 | @property |
| 171 | def harness_logs(self) -> dict[str, Path]: |
| 172 | return { |
| 173 | "clawcodex": self.run_dir / "clawcodex_harness.log", |
| 174 | "openclaude": self.run_dir / "openclaude_harness.log", |
| 175 | } |
| 176 | |
| 177 | @property |
| 178 | def comparison(self) -> Path: |
| 179 | return self.run_dir / "comparison.md" |
| 180 | |
| 181 | |
| 182 | def _info(msg: str) -> None: |