These nine runs are the coverage-driven control, not the headline experiment. They were generated with the original coverage-gated prompts (success = "exceed the baseline coverage %"), and mostly lose to the human baselines — that result is what motivated re-aiming the loop at the quality scorecard, where the regenerated suites beat their baseline on every run (see the top-level README and
results-quality-scorecard.md).
Nine runs, three repos, three policies. Each individual report compares one generated suite to the original (human-written) test suite of the same repo.
| Run | Coverage | Behavioral breadth | Mutation power* | Fragility resistance | Maintainability | Suite correctness | Overall |
|---|---|---|---|---|---|---|---|
| itsdangerous / oneshot | = | = | ⬇ | ⬇ | ⬇ | ⬇ | Worse |
| itsdangerous / iter2 | ⬆ | = | ⬇ | ⬇ | ⬇ | = | Worse |
| itsdangerous / iter20 | ⬆ | = | ⬇ | ⬇ | ⬇ | = | Worse (≈iter2) |
| httpx / oneshot | ⬇ | ⬇ | ❓ ⬇ | ❓ | ⬆ | = | Worse |
| httpx / iter2 | ⬇ | ⬇ | ❓ | ❓ | ⬆ | = | Worse |
| httpx / iter20 | ⬆ | ⚠ | ⚠ | ⬇ | = | = | ⚠ NOT A LEGITIMATE GENERATION — restored baseline from git + small supplement; see VERIFICATION.md |
| requests / oneshot | ⬇ | ⬇ | ❓ | ❓ | ⬆ | ⚠ | Worse |
| requests / iter2 | ⬆ | = | = | ❓ | ⬆ | = | Mixed / slightly better |
| requests / iter20 | ⬆ | ⬆ | ⬆ | ⬆ | ⬆ | = | Better |
Legend: ⬆ better than original · = equivalent · ⬇ worse than original · ⚠ mixed · ❓ insufficient evidence
* For itsdangerous, mutation power judgments are backed by deep audit findings (three independent agents). For httpx and requests, mutation power is inferred from structural signals (LOC ratio, mock count, test-vs-contract patterns visible in the SUMMARYs and spot-checked test files); a confirming audit would refine the verdicts marked ❓.
- itsdangerous / oneshot
- itsdangerous / iter2
- itsdangerous / iter20
- httpx / oneshot
- httpx / iter2
- httpx / iter20
- requests / oneshot
- requests / iter2
- requests / iter20
Companion documents:
- audit_itsdangerous.md — the deep cross-policy fragility synthesis for itsdangerous.
- baseline_summary.md — the measured coverage baselines for the three Python repos these runs were scored against.
Read this first: VERIFICATION.md — late-stage verification pass that re-ran all 9 suites, hash-compared generated files to baseline, and turned up the httpx/iter20 integrity issue (restored baseline tests from git history rather than generating).
All three itsdangerous suites land at or near 100 % line coverage, yet none materially improves on the 37-test, 481-LOC original. The original uses parametrize + fixture inheritance to cover ~four serializer classes with the same tests; the generated suites unroll every parametrize into explicit per-case tests (2.3–2.5× LOC) and add tautological constructor readbacks plus error-message substring matches.
| Run | Iter20 budget | Actually used |
|---|---|---|
| itsdangerous / iter20 | 20 | 2 |
| httpx / iter20 | 20 | 3 |
| requests / iter20 | 20 | 1 or 2 |
All three sessions stopped early. Coverage-gated iter20 → "reach 100 % fast, stop." The remaining budget didn't get spent on rigor improvements because the prompt frames success as "exceed the baseline %."
Originally targeted (Section 5 #4) as a quality signal. In practice:
- itsdangerous has no I/O — every suite has 0 mocks. Signal absent.
- httpx baseline already uses
httpx.MockTransportandmonkeypatchextensively (~140 matches across 8620 LOC). Generated suites use ~95 matches across 4147 LOC — roughly equivalent density. The metric flagged as "high" but isn't actually anomalous. - requests baseline uses pytest-httpbin + some
monkeypatch(~62 matches across 4902 LOC). Generated oneshot has 32 across 2587 LOC — again, roughly equivalent density. requests/iter20 uses zero mocks + pytest-httpbin like the baseline — the cleanest result of the nine.
Mock-LOC tells you about patterns in the suite, not directly about quality.
Of the nine runs, requests/iter20 is the only one that produced a suite
that is better than the original by multiple dimensions simultaneously:
beats baseline coverage by +3.85 pp line / +6.22 pp branch, uses zero
mock infrastructure, leans on pytest-httpbin (same pattern as the
baseline), and is shorter (~3767 LOC vs 4902). It used 1–2 of its 20
iterations.
Equivalent coverage to the original, but committed two failing tests
that misread urlsafe_b64decode's actual behavior. Both failures look
like coverage holes but are epistemic errors by the model. They'd merge
into a real codebase as flaky/wrong tests.
- The reports below give you the full per-run details. The verdict matrix above is the headline; the individual reports give you the evidence behind each cell.
- The itsdangerous reports cite specific files/lines from the audit agents. The httpx and requests reports are based on structural signals + spot-checked files; the cells marked ❓ would be sharpened by a deep fragility audit (same pattern as the itsdangerous one).
- Pending: Section 5 mutation-testing runs would convert the ⬇ mutation-power judgments from "inferred from patterns" to "measured against actual mutants."