Research Question: RQ-tdd-correctness
Does external correctness (verification_pct) differ between TDD workflow variants on the novel claim-office kata?
claim-office-example-mapping
| n, run dates | Correctness | TDD discipline | Cost | |||||
|---|---|---|---|---|---|---|---|---|
| ↑ | ○ | ○ | ↑ | ↑ | ↓ | ↓ | ↓ | |
| baseline-inline-tdd-v1-ccad hocn = 5, 2026-05-08 → 05-16 | 100% ± 0 🏆 | 15.0 ± 0.00 | 15.0 ± 0.00 | 100%5/5 | n/c | 5.2 ± 0.9 min 🏆 | 3.3M ± 546k 🏆 | $2.92 ± 0.52 🏆 |
| exact-subagents-v2-testlist-fix-cctest listn = 5, 2026-05-20 → 05-22 | 96% ± 9 🏆 | 14.4 ± 1.34 | 15.0 ± 0.00 | 100%5/5 | 93%302/325 | 53.8 ± 15.3 min | 34.9M ± 6.1M | $36.26 ± 5.76 |
| exact-single-context-v2-testlist-fix-cctest listn = 6, 2026-05-22 | 100% ± 0 🏆 | 15.0 ± 0.00 | 15.0 ± 0.00 | 100%6/6 | 100% 🏆39/39 | 10.7 ± 2.0 min | 18.7M ± 5.4M | $12.72 ± 3.59 |
| exact-hybrid-v2-testlist-fix-cctest listn = 7, 2026-05-22 → 05-24 | 100% ± 0 🏆 | 15.0 ± 0.00 | 15.0 ± 0.00 | 100%7/7 | 96%292/303 | 26.1 ± 8.7 min | 37.9M ± 13.5M | $29.28 ± 9.93 |
| exact-green-refactor-v2-testlist-fix-cctest listn = 3, 2026-05-22 | 98% ± 4 🏆 | 14.7 ± 0.58 | 15.0 ± 0.00 | 100%3/3 | 100% 🏆99/99 | 32.8 ± 11.9 min | 35.7M ± 10.5M | $34.23 ± 11.67 |
| baseline-end-refactor-only-v1-agent-ccad hocn = 5, 2026-05-25 | 100% ± 0 🏆 | 15.0 ± 0.00 | 15.0 ± 0.00 | 100%5/5 | n/c | 5.1 ± 0.6 min 🏆 | 3.6M ± 808k 🏆 | $4.02 ± 0.75 |
| baseline-end-refactor-only-v1-native-ccad hocn = 5, 2026-05-25 | 97% ± 6 🏆 | 14.6 ± 0.89 | 15.0 ± 0.00 | 100%5/5 | n/c | 4.6 ± 0.9 min 🏆 | 3.4M ± 1.1M 🏆 | $3.53 ± 0.61 🏆 |
Runs behind this table
- 2026-05-08_11-36-07_claim-office-example-mapping_v3-basic-tdd_opus-4-7-no-thinking
- 2026-05-08_11-42-20_claim-office-example-mapping_v3-basic-tdd_opus-4-7-no-thinking
- 2026-05-08_11-46-55_claim-office-example-mapping_v3-basic-tdd_opus-4-7-no-thinking
- 2026-05-16_09-56-09_claim-office-example-mapping_v3-basic-tdd_opus-4-7-no-thinking
- 2026-05-16_10-01-04_claim-office-example-mapping_v3-basic-tdd_opus-4-7-no-thinking
- 2026-05-20_21-58-27_claim-office-example-mapping_v4.1-testlist-scope-fix_opus-4-7-no-thinking
- 2026-05-20_22-41-54_claim-office-example-mapping_v4.1-testlist-scope-fix_opus-4-7-no-thinking
- 2026-05-20_23-32-48_claim-office-example-mapping_v4.1-testlist-scope-fix_opus-4-7-no-thinking
- 2026-05-21_08-35-47_claim-office-example-mapping_v4.1-testlist-scope-fix_opus-4-7-no-thinking
- 2026-05-22_08-52-17_claim-office-example-mapping_v4.1-testlist-scope-fix_opus-4-7-portkey-no-thinking
- 2026-05-22_19-29-21_claim-office-example-mapping_v6.1-hybrid-testlist-scope-fix_opus-4-7-portkey-no-thinking
- 2026-05-22_19-43-46_claim-office-example-mapping_v6.1-hybrid-testlist-scope-fix_opus-4-7-portkey-no-thinking
- 2026-05-22_19-44-03_claim-office-example-mapping_v6.1-hybrid-testlist-scope-fix_opus-4-7-portkey-no-thinking
- 2026-05-22_19-44-24_claim-office-example-mapping_v5.1-testlist-scope-fix_opus-4-7-portkey-no-thinking
- 2026-05-22_19-44-26_claim-office-example-mapping_v5.1-testlist-scope-fix_opus-4-7-portkey-no-thinking
- 2026-05-22_19-47-05_claim-office-example-mapping_v5.1-testlist-scope-fix_opus-4-7-portkey-no-thinking
- 2026-05-22_19-48-07_claim-office-example-mapping_v5.1-testlist-scope-fix_opus-4-7-portkey-no-thinking
- 2026-05-22_19-55-03_claim-office-example-mapping_v5.1-testlist-scope-fix_opus-4-7-portkey-no-thinking
- 2026-05-22_20-01-47_claim-office-example-mapping_v5.1-testlist-scope-fix_opus-4-7-portkey-no-thinking
- 2026-05-22_21-54-21_claim-office-example-mapping_v7.1-hybrid-green-refactor-testlist-scope-fix_opus-4-7-portkey-no-thinking
- 2026-05-22_22-25-01_claim-office-example-mapping_v7.1-hybrid-green-refactor-testlist-scope-fix_opus-4-7-portkey-no-thinking
- 2026-05-22_22-47-39_claim-office-example-mapping_v7.1-hybrid-green-refactor-testlist-scope-fix_opus-4-7-portkey-no-thinking
- 2026-05-23_09-06-31_claim-office-example-mapping_v6.1-hybrid-testlist-scope-fix_opus-4-7-portkey-no-thinking
- 2026-05-23_11-00-44_claim-office-example-mapping_v6.1-hybrid-testlist-scope-fix_opus-4-7-portkey-no-thinking
- 2026-05-24_03-09-37_claim-office-example-mapping_v6.1-hybrid-testlist-scope-fix_opus-4-7-portkey-no-thinking
- 2026-05-24_03-09-37_claim-office-example-mapping_v6.1-hybrid-testlist-scope-fix_opus-4-7-portkey-no-thinking-2
- 2026-05-25_18-36-34_claim-office-example-mapping_v8a-delayed-refactor-agent_opus-4-7-portkey-no-thinking
- 2026-05-25_18-38-19_claim-office-example-mapping_v8a-delayed-refactor-agent_opus-4-7-portkey-no-thinking
- 2026-05-25_18-39-36_claim-office-example-mapping_v8a-delayed-refactor-agent_opus-4-7-portkey-no-thinking
- 2026-05-25_18-41-56_claim-office-example-mapping_v8a-delayed-refactor-agent_opus-4-7-portkey-no-thinking
- 2026-05-25_18-43-17_claim-office-example-mapping_v8a-delayed-refactor-agent_opus-4-7-portkey-no-thinking
- 2026-05-25_18-49-39_claim-office-example-mapping_v8b-delayed-refactor-native_opus-4-7-portkey-no-thinking
- 2026-05-25_18-51-36_claim-office-example-mapping_v8b-delayed-refactor-native_opus-4-7-portkey-no-thinking
- 2026-05-25_18-51-39_claim-office-example-mapping_v8b-delayed-refactor-native_opus-4-7-portkey-no-thinking
- 2026-05-25_18-54-44_claim-office-example-mapping_v8b-delayed-refactor-native_opus-4-7-portkey-no-thinking
- 2026-05-25_18-58-01_claim-office-example-mapping_v8b-delayed-refactor-native_opus-4-7-portkey-no-thinking
Findings
RQ-tdd-correctness Findings
Kata: claim-office-example-mapping (novel). Model: opus-4-7-no-thinking (Portkey OR direct, OR-match). 5 TDD workflow variants, n=22 runs. end-refactor-only-v1-agent/end-refactor-only-v1-native (non-TDD control group) still without runs.
Overview — Correctness per Workflow
🏆 = best value per column (also multiple times in case of a tie). verification_pct/tests_passing: higher = better.
| Workflow | n | verification_pct (mean ± std) |
verification_passed / 15 (min – max) |
tests_passing |
|---|---|---|---|---|
| baseline-inline-tdd-v1-cc | 5 | 1.00 ± 0 🏆 | 15 – 15 | 100 % 🏆 |
| exact-subagents-v2-testlist-fix-cc | 5 | 0.96 ± 0.09 | 12 – 15 | 100 % 🏆 |
| exact-single-context-v2-testlist-fix-cc | 6 | 1.00 ± 0 🏆 | 15 – 15 | 100 % 🏆 |
| v6.1-hybrid-… | 3 | 1.00 ± 0 🏆 | 15 – 15 | 100 % 🏆 |
| v7.1-hybrid-green-refactor-… | 3 | 0.98 ± 0.04 | 14 – 15 | 100 % 🏆 |
completed_within_budget is 100 % in all cells.
F-tdd-correctness.1 — Three of Five TDD Workflows Solve claim-office Perfectly; subagents-v2 and green-refactor-v2 Lose Isolated Scenarios
On the novel claim-office kata that is not contained in the training data, inline-tdd-v1 (n=5), single-context-v2 (n=6) and hybrid-v2 (n=3) reach the full acceptance suite (15/15 verification scenarios) in every single run. subagents-v2 shows one outlier (4/5 runs perfect, 1 run at 12/15 → 0.96), green-refactor-v2 a smaller one (2/3 runs perfect, 1 run at 14/15 → 0.98). Notably: the two workflows with an isolated green subagent (subagents-v2, green-refactor-v2) each carry one correctness outlier; the three workflows with green in the shared context (inline-tdd-v1, single-context-v2, hybrid-v2) are perfect. Plausible mechanic: an isolated green subagent sees neither the test-list discussion nor earlier cycle discussions and can overlook edge cases that are implicitly present in the shared context.
Hypothesis H1 ("phase-structured workflows reach higher correctness than minimal TDD") is therefore not confirmed — minimal TDD (inline-tdd-v1) is on a par with the structured workflows. H3 (null hypothesis: all workflows similarly high >0.8) is confirmed.
F-tdd-correctness.2 — subagents-v2 Reaches Correctness Only via Drastically Higher Effort per Cycle
The effort profiles per workflow. 🏆 = best value per column. Directions: predictions_correct_rate higher = better; duration_seconds/total_tokens/tests_passed_immediately lower = better; cycle_count and refactorings_applied are ambivalent (no trophy).
| Workflow | cycle_count |
refactorings_applied |
predictions_correct_rate |
tests_passed_immediately |
duration_seconds |
total_tokens |
|---|---|---|---|---|---|---|
| baseline-inline-tdd-v1-cc | 3.8 | 1.8 | — | 0.6 🏆 | 312 🏆 | 3.28 M 🏆 |
| exact-subagents-v2-testlist-fix-cc | 44.6 | 6.8 | 92.9 % | 22.2 | 3 229 | 34.87 M |
| exact-single-context-v2-testlist-fix-cc | 5.5 | 2.2 | 100.0 % 🏆 | 1.7 | 641 | 18.73 M |
| v6.1-hybrid-… | 28.0 | 11.0 | 96.4 % | 13.6 | 1 569 | 37.88 M |
| v7.1-hybrid-green-refactor-… | 18.3 | 14.0 | 100.0 % 🏆 | 6.3 | 1 970 | 35.74 M |
subagents-v2 runs on average 44.6 TDD cycles per run (vs. 3.8 for inline-tdd-v1, 5.5 for single-context-v2), at comparable correctness. The wallclock is at ~54 min per run against ~10 min for single-context-v2 and ~5 min for inline-tdd-v1. Tokens 34.9 M (subagents-v2) vs. 3.3 M (inline-tdd-v1), a factor of 10.6. Despite this effort, subagents-v2 is the only setup with a 0.8 outlier.
The token column counts subagent consumption; until 2026-09-30 it did not, and the three isolating arms here were the ones it understated — subagents-v2 most of all, at 14.10 M against a true 34.87 M (RQ-old-vs-new-exact-line-opus55 F-4.12.5). The finding's own point is sharpened by it: the effort subagents-v2 spends for its correctness is 2.5× what was recorded.
hybrid-v2 and green-refactor-v2 both run considerably more refactor steps than single-context-v2 (11.0 / 14.0 vs. 2.2) — the isolated refactor subagent visibly "works" more; green-refactor-v2 reaches the highest refactor rate of all workflows. Despite the hybrid constructions, both pay for stability, not for a better correctness mean.
F-tdd-correctness.3 — The Predictions Rate Comparison Is Distorted by an Unequal Prediction Base
predictions_correct_rate is at 100 % for single-context-v2 (39/39) and green-refactor-v2 (99/99), 94.9 % for hybrid-v2 (131/138), 92.9 % for subagents-v2 (302/325). The denominators differ drastically: single-context-v2 ~6.5, green-refactor-v2 ~33, hybrid-v2 ~46, subagents-v2 ~65 predictions/run. The predictions rate here does not primarily measure discipline but is dominated by the task size per cycle — subagents-v2 decomposes most finely and uses more predictions, thereby also having more opportunities for errors.
Hypothesis H3 from RQ-tdd-quality ("subagents-v2 has higher prediction_accuracy") is not confirmed under this reading. The comparison only becomes robust once the predictions are normalized per cycle — currently not directly derivable from the metrics.
F-tdd-correctness.4 — The Wallclock Range Is 10×, the Token Range 12×; No Correlation with Correctness
Across the five TDD workflows:
- cheapest workflow by tokens: inline-tdd-v1 (3.28 M) — at 100 % correctness
- cheapest workflow by wallclock: inline-tdd-v1 (5 min)
- most expensive workflow by tokens: hybrid-v2 (37.88 M, σ=13.5 M) — at 100 % correctness
- most expensive workflow by wallclock: subagents-v2 (54 min, σ=15 min) — at 0.96 correctness
The three arms that isolate a phase are a token tie at the top of the range (34.87 / 35.74 / 37.88 M, every pairwise gap inside its σ), so the range is really two steps rather than five: 3.3–3.6 M without isolation, 18.7 M with a shared context, and ~35 M once any phase is isolated. green-refactor-v2 slots in on wallclock (33 min) but not on tokens (35.74 M, level with the other isolating arms). For claim-office under Opus 4.7, correctness is not a scarce good; the workflow choice determines almost exclusively effort and spread. inline-tdd-v1 dominates the correctness-per-token rating on this kata. Structured workflows do not justify themselves on claim-office through correctness — their value lies in code quality (see RQ-context F-context.1/2 for the complexity and smell differences on the same kata).