Research Question: RQ-prompt-known-kata
Does the prompt style (prose/user-story/example-mapping) influence correctness and code quality on a training-known kata (Game of Life) — and is this effect model-dependent?
game-of-life-cli-prose
| n, run dates | Correctness | Code quality | Size | Cost | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ↑ | ○ | ○ | ↑ | ↑ | ↓ | ↓ | ↓ | ↓ | ↓ | ○ | ↓ | ↓ | ↓ | |
| model: opus-4-6-portkey-no-thinkingn = 5, 2026-05-12 → 05-13 | 100% ± 0 🏆 | 15.0 ± 0.00 | 15.0 ± 0.00 | 100% 🏆5/5 | 100%5/5 | 249 ± 60.96 🏆 | 3.80 ± 0.45 🏆 | 23.4 ± 2.51 🏆 | 9.20 ± 2.49 🏆 | 14.4 ± 3.71 🏆 | 43.6 ± 12.10 | 10.3 ± 2.3 min 🏆 | 12.1M ± 3.7M | $24.94 ± 7.13 |
| model: sonnet-4-6-portkey-no-thinkingn = 5, 2026-05-12 → 05-13 | 100% ± 0 🏆 | 15.0 ± 0.00 | 15.0 ± 0.00 | 100% 🏆5/5 | 100%5/5 | 238 ± 8.88 🏆 | 3.00 ± 1.00 🏆 | 21.8 ± 3.77 🏆 | 8.80 ± 1.64 🏆 | 11.4 ± 3.91 🏆 | 39.6 ± 3.29 | 8.1 ± 0.6 min 🏆 | 8.4M ± 1.4M 🏆 | $3.64 ± 0.50 🏆 |
| model: haiku-4-5-portkey-no-thinkingn = 5, 2026-05-12 → 05-13 | 32% ± 39 | 4.80 ± 5.85 | 15.0 ± 0.00 | 40%2/5 | 100%5/5 | 82.8 ± 123.83 | 1.40 ± 2.19 | 5.60 ± 5.03 | 2.60 ± 4.34 | 2.80 ± 4.76 | 25.6 ± 34.32 | 2.5 ± 3.0 min | 5.1M ± 6.8M | $0.77 ± 0.95 |
Runs behind this table
- 2026-05-12_22-34-20_game-of-life-cli-prose_v5-exact-single-context_haiku-4-5-portkey-no-thinking
- 2026-05-12_22-43-03_game-of-life-cli-prose_v5-exact-single-context_opus-4-6-portkey-no-thinking
- 2026-05-12_22-43-03_game-of-life-cli-prose_v5-exact-single-context_opus-4-6-portkey-no-thinking-2
- 2026-05-12_22-53-00_game-of-life-cli-prose_v5-exact-single-context_opus-4-6-portkey-no-thinking
- 2026-05-12_22-56-10_game-of-life-cli-prose_v5-exact-single-context_sonnet-4-6-portkey-no-thinking
- 2026-05-12_23-01-51_game-of-life-cli-prose_v5-exact-single-context_sonnet-4-6-portkey-no-thinking
- 2026-05-12_23-04-47_game-of-life-cli-prose_v5-exact-single-context_sonnet-4-6-portkey-no-thinking
- 2026-05-12_23-10-28_game-of-life-cli-prose_v5-exact-single-context_haiku-4-5-portkey-no-thinking
- 2026-05-12_23-12-53_game-of-life-cli-prose_v5-exact-single-context_haiku-4-5-portkey-no-thinking
- 2026-05-12_23-16-59_game-of-life-cli-prose_v5-exact-single-context_haiku-4-5-portkey-no-thinking
- 2026-05-13_05-58-56_game-of-life-cli-prose_v5-exact-single-context_opus-4-6-portkey-no-thinking
- 2026-05-13_05-58-56_game-of-life-cli-prose_v5-exact-single-context_opus-4-6-portkey-no-thinking-2
- 2026-05-13_05-58-56_game-of-life-cli-prose_v5-exact-single-context_sonnet-4-6-portkey-no-thinking
- 2026-05-13_06-07-11_game-of-life-cli-prose_v5-exact-single-context_sonnet-4-6-portkey-no-thinking
- 2026-05-13_06-11-48_game-of-life-cli-prose_v5-exact-single-context_haiku-4-5-portkey-no-thinking
game-of-life-cli-user-story
| n, run dates | Correctness | Code quality | Size | Cost | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ↑ | ○ | ○ | ↑ | ↑ | ↓ | ↓ | ↓ | ↓ | ↓ | ○ | ↓ | ↓ | ↓ | |
| model: opus-4-6-portkey-no-thinkingn = 5, 2026-05-12 → 05-13 | 100% ± 0 🏆 | 15.0 ± 0.00 | 15.0 ± 0.00 | 100% 🏆5/5 | 100%5/5 | 230 ± 32.27 🏆 | 4.40 ± 0.89 | 24.2 ± 2.17 🏆 | 10.6 ± 0.89 🏆 | 17.2 ± 0.45 🏆 | 39.4 ± 7.64 | 12.1 ± 2.2 min 🏆 | 13.8M ± 3.2M 🏆 | $28.38 ± 5.82 |
| model: sonnet-4-6-portkey-no-thinkingn = 5, 2026-05-12 → 05-13 | 100% ± 0 🏆 | 15.0 ± 0.00 | 15.0 ± 0.00 | 100% 🏆5/5 | 100%5/5 | 250 ± 35.17 🏆 | 3.20 ± 0.84 🏆 | 19.0 ± 8.12 🏆 | 8.40 ± 3.78 🏆 | 12.0 ± 6.00 🏆 | 43.8 ± 8.23 | 11.5 ± 3.7 min 🏆 | 13.0M ± 4.8M 🏆 | $5.44 ± 1.86 🏆 |
| model: haiku-4-5-portkey-no-thinkingn = 5, 2026-05-12 → 05-13 | 1% ± 3 | 0.20 ± 0.45 | 15.0 ± 0.00 | 0%0/5 | 100%5/5 | 2.00 ± 2.74 | 0.00 ± 0.00 | 1.60 ± 2.19 | 0.00 ± 0.00 | 0.00 ± 0.00 | 1.80 ± 2.68 | 0.3 ± 0.0 min | 320k ± 46k | $0.11 ± 0.04 |
Runs behind this table
- 2026-05-12_23-13-18_game-of-life-cli-user-story_v5-exact-single-context_opus-4-6-portkey-no-thinking
- 2026-05-12_23-17-33_game-of-life-cli-user-story_v5-exact-single-context_opus-4-6-portkey-no-thinking
- 2026-05-12_23-26-22_game-of-life-cli-user-story_v5-exact-single-context_opus-4-6-portkey-no-thinking
- 2026-05-12_23-26-53_game-of-life-cli-user-story_v5-exact-single-context_sonnet-4-6-portkey-no-thinking
- 2026-05-12_23-39-06_game-of-life-cli-user-story_v5-exact-single-context_sonnet-4-6-portkey-no-thinking
- 2026-05-12_23-40-50_game-of-life-cli-user-story_v5-exact-single-context_sonnet-4-6-portkey-no-thinking
- 2026-05-12_23-50-11_game-of-life-cli-user-story_v5-exact-single-context_haiku-4-5-portkey-no-thinking
- 2026-05-12_23-56-27_game-of-life-cli-user-story_v5-exact-single-context_haiku-4-5-portkey-no-thinking
- 2026-05-12_23-57-05_game-of-life-cli-user-story_v5-exact-single-context_haiku-4-5-portkey-no-thinking
- 2026-05-13_05-43-50_game-of-life-cli-user-story_v5-exact-single-context_opus-4-6-portkey-no-thinking
- 2026-05-13_05-43-51_game-of-life-cli-user-story_v5-exact-single-context_haiku-4-5-portkey-no-thinking
- 2026-05-13_05-43-51_game-of-life-cli-user-story_v5-exact-single-context_sonnet-4-6-portkey-no-thinking
- 2026-05-13_06-08-05_game-of-life-cli-user-story_v5-exact-single-context_opus-4-6-portkey-no-thinking
- 2026-05-13_06-12-21_game-of-life-cli-user-story_v5-exact-single-context_haiku-4-5-portkey-no-thinking
- 2026-05-13_06-14-40_game-of-life-cli-user-story_v5-exact-single-context_sonnet-4-6-portkey-no-thinking
game-of-life-cli-example-mapping
| n, run dates | Correctness | Code quality | Size | Cost | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ↑ | ○ | ○ | ↑ | ↑ | ↓ | ↓ | ↓ | ↓ | ↓ | ○ | ↓ | ↓ | ↓ | |
| model: opus-4-6-portkey-no-thinkingn = 5, 2026-05-12 → 05-13 | 100% ± 0 🏆 | 15.0 ± 0.00 | 15.0 ± 0.00 | 100% 🏆5/5 | 100%5/5 | 222 ± 48.71 🏆 | 4.00 ± 1.22 🏆 | 20.0 ± 8.00 🏆 | 7.40 ± 3.21 🏆 | 12.2 ± 5.76 🏆 | 36.2 ± 9.26 | 11.3 ± 2.3 min | 13.3M ± 3.9M | $27.47 ± 7.48 |
| model: sonnet-4-6-portkey-no-thinkingn = 5, 2026-05-13 | 100% ± 0 🏆 | 15.0 ± 0.00 | 15.0 ± 0.00 | 100% 🏆5/5 | 100%5/5 | 223 ± 26.63 🏆 | 3.40 ± 1.67 🏆 | 19.4 ± 4.72 🏆 | 8.60 ± 1.95 🏆 | 12.8 ± 3.96 🏆 | 39.6 ± 4.88 | 9.0 ± 1.6 min 🏆 | 9.3M ± 1.9M 🏆 | $4.08 ± 0.85 🏆 |
| model: haiku-4-5-portkey-no-thinkingn = 5, 2026-05-13 | 63% ± 51 🏆 | 9.40 ± 7.70 | 15.0 ± 0.00 | 80%4/5 | 100%5/5 | 224 ± 127.59 | 4.80 ± 4.44 | 16.8 ± 14.53 | 6.80 ± 4.09 | 8.80 ± 5.26 | 41.6 ± 25.77 | 6.5 ± 4.3 min | 10.8M ± 6.5M | $1.56 ± 0.90 |
Runs behind this table
- 2026-05-12_23-50-37_game-of-life-cli-example-mapping_v5-exact-single-context_opus-4-6-portkey-no-thinking
- 2026-05-12_23-57-28_game-of-life-cli-example-mapping_v5-exact-single-context_opus-4-6-portkey-no-thinking
- 2026-05-13_00-05-51_game-of-life-cli-example-mapping_v5-exact-single-context_opus-4-6-portkey-no-thinking
- 2026-05-13_00-08-37_game-of-life-cli-example-mapping_v5-exact-single-context_sonnet-4-6-portkey-no-thinking
- 2026-05-13_00-17-32_game-of-life-cli-example-mapping_v5-exact-single-context_sonnet-4-6-portkey-no-thinking
- 2026-05-13_00-19-14_game-of-life-cli-example-mapping_v5-exact-single-context_sonnet-4-6-portkey-no-thinking
- 2026-05-13_00-24-43_game-of-life-cli-example-mapping_v5-exact-single-context_haiku-4-5-portkey-no-thinking
- 2026-05-13_00-27-13_game-of-life-cli-example-mapping_v5-exact-single-context_haiku-4-5-portkey-no-thinking
- 2026-05-13_00-29-59_game-of-life-cli-example-mapping_v5-exact-single-context_haiku-4-5-portkey-no-thinking
- 2026-05-13_05-43-50_game-of-life-cli-example-mapping_v5-exact-single-context_sonnet-4-6-portkey-no-thinking
- 2026-05-13_05-43-51_game-of-life-cli-example-mapping_v5-exact-single-context_haiku-4-5-portkey-no-thinking
- 2026-05-13_05-43-51_game-of-life-cli-example-mapping_v5-exact-single-context_opus-4-6-portkey-no-thinking
- 2026-05-13_06-12-48_game-of-life-cli-example-mapping_v5-exact-single-context_haiku-4-5-portkey-no-thinking
- 2026-05-13_08-15-34_game-of-life-cli-example-mapping_v5-exact-single-context_opus-4-6-portkey-no-thinking
- 2026-05-13_08-15-34_game-of-life-cli-example-mapping_v5-exact-single-context_sonnet-4-6-portkey-no-thinking
Findings
RQ-prompt-known-kata Findings
Persistent collection of the insights on the question: Does the prompt style influence correctness and code quality on a training-known kata (Game of Life) — and is this effect model-dependent?
Data basis: 45 runs (9 cells × n=5), as of 2026-05-13. External correctness via the verification adapter (imports the agent function directly, no CLI contract needed).
Overview: verification_pct by Prompt Style × Model
| Model | prose | user-story | example-mapping |
|---|---|---|---|
| opus-4-6-portkey-no-thinking | 1.00 🏆 (σ=0) | 1.00 🏆 (σ=0) | 1.00 🏆 (σ=0) |
| sonnet-4-6-portkey-no-thinking | 1.00 🏆 (σ=0) | 1.00 🏆 (σ=0) | 1.00 🏆 (σ=0) |
| haiku-4-5-portkey-no-thinking | 0.32 (σ=0.39) | 0.01 (σ=0.03) | 0.63 🏆 (σ=0.51) |
Higher = better; 🏆 = best style per row (Opus/Sonnet: all three styles tied at 1.00 → ties, all 🏆).
F-prompt-known-kata.1 — Opus and Sonnet Deliver Perfect Correctness Regardless of Style
Statement: Opus 4.6 and Sonnet 4.6 (no-thinking) reach
verification_pct = 1.00 on game-of-life across all three prompt styles,
without exception (30/30 runs). The spread between styles is 0 pp.
Data basis: 15 Opus runs (5 × 3 styles), 15 Sonnet runs (5 × 3 styles), all vpct=1.00.
Interpretation: On training-known katas, strong models fully compensate for style differences from their prior knowledge. The Conway rules are omnipresent in the training — no prompt style can improve or degrade that.
Evidence: n=30, σ=0
F-prompt-known-kata.2 — Haiku Fails Due to Capacity, Not Style
Statement: Haiku 4.5 (no-thinking) shows two distinct modes on game-of-life:
- Immediate quitters (dur=12–17s, code_mass=0–5): the agent writes only a spec file and gives up. Affects all user-story runs (5/5) and 3 of 5 prose runs. A quitter's stub still passes the trivial scenarios (empty board, a single cell dying, a block after 0 steps): two prose quitters reach vpct=0.20, one user-story quitter 0.07.
- Completers (dur=299–710s, code_mass=129–318): the agent works through the task completely. With example mapping 3/5 runs are perfect (vpct=1.00), with prose 1/5.
| Style | n | vpct mean | Completers | Immediate quitters |
|---|---|---|---|---|
| prose | 5 | 0.32 | 2 (1× vpct=1, 1× vpct=0.2) | 3 (2× vpct=0.2) |
| user-story | 5 | 0.01 | 0 | 5 (1× vpct=0.07) |
| example-mapping | 5 | 0.63 🏆 | 4 (3× vpct=1, 1× vpct=0.13) | 1 |
Higher = better (vpct mean); 🏆 = best style. The remaining columns are descriptive counts, not a competition.
Interpretation: The difference is not rule correctness, but whether Haiku starts the task at all. Example mapping gives the weakest model enough concrete context to get into working mode. User story (abstract, no examples) supplies too few anchors — Haiku does not recognize the task as feasible.
Evidence: bimodal pattern reproducible across n=5
F-prompt-known-kata.3 — H1 Confirmed: Prompt Style Does Not Differentiate on Strong Models
Statement: H1 ("per model, the verification_pct spread between styles is < 10 pp") is fully confirmed for Opus and Sonnet (spread = 0 pp). For Haiku, H1 is trivially falsified (spread = 62 pp), but the cause is not style sensitivity but capacity-related instability (F-prompt-known-kata.2).
Implication for code-quality RQs: Prompt style can be fixed as a control on game-of-life (e.g. prose or example mapping) without a correctness confound on Opus/Sonnet.
F-prompt-known-kata.4 — H4 Confirmed: The Ambiguity Mechanism Does Not Apply on a Training-Known Kata
Statement: In RQ-prompt-correctness (claim-office, domain-novel), example mapping improves correctness because concrete examples resolve domain-specific ambiguities. In RQ-prompt-known-kata (game-of-life, training-known) there are no such ambiguities — the Conway rules are unambiguous and present in the prior knowledge. Example mapping acts here via a different mechanism:
- Strong models (Opus, Sonnet): No effect — they do not need the examples. All styles deliver vpct=1.00.
- Weak model (Haiku): Example mapping acts as an activation anchor — not because it resolves ambiguities, but because concrete input/output pairs show the model that the task is feasible and what the solution should look like.
Falsification of H4: H4 is not falsified. Example mapping does not improve correctness on training-known katas for strong models. On Haiku it helps, but via a different mechanism (activation, not disambiguation).
Caveat: the Haiku finding is robust, but the mechanistic explanation "activation anchor" is a hypothesis, not a measured effect.
F-prompt-known-kata.5 — H2 Cannot Be Assessed: Code Quality Comparable Only on Working Runs
Statement: Code-quality outcomes (code_mass, smell_total, longest_function, mccabe_max, cognitive_max) are meaningful only on runs on runs that implemented something. On Haiku, 9 of 15 runs are quitters (code_mass 0–5, the agent implemented nothing); vpct > 0 does not separate them, because a stub passes the trivial scenarios. For Opus and Sonnet (all vpct=1.00):
| Model | prose mass | user-story mass | ex-mapping mass |
|---|---|---|---|
| opus-4-6 | 249 (σ=61) | 230 (σ=32) | 222 (σ=49) |
| sonnet-4-6 | 238 (σ=9) | 250 (σ=35) | 223 (σ=27) |
No consistent style ranking: Opus has the highest mass with prose, Sonnet with user story. Differences lie within the range of run-to-run variance. H2 qualitatively confirmed: on training-known katas, prompt style induces no systematic code-quality ranking.
Caveat: only Opus/Sonnet, n=5 per cell.
F-prompt-known-kata.6 — RQ-prompt-correctness Prediction Confirmed: Prompt Style Does Not Differentiate on a Training-Known Kata
Statement: The prediction in RQ-prompt-correctness ("game-of-life is not usable as an ambiguity revealer for prompt styles") is fully confirmed for Opus and Sonnet: verification_pct = 1.00 across all styles, code quality does not vary systematically.
Consequence for subsequent RQs: Code-quality RQs on game-of-life can fix prompt style as a control without risking a style confound — provided Haiku is excluded or handled separately.
F-prompt-known-kata.7 — The Verification Adapter Eliminates Interface Artifacts
Statement: Before the verification adapter was introduced, Opus
and Sonnet showed apparent correctness errors that were actually
interface problems: a missing src/cli.ts (the agent fell back to
library mode) or a multi-step bug (the CLI iterated only 1×). The
adapter (imports the agent function directly, iterates and
sorts on its own) eliminates these artifacts completely.
Data basis: Before the adapter: Opus×EM 0.60, Sonnet×prose 0.93. After the adapter: both 1.00.
Methodological consequence: For training-known katas in which
the task core (implementing the rules) is separable from the interface contract
(CLI, JSON IO, sorting), the
verification suite should test the core directly — not the
interface wrapper. Otherwise verification_pct measures
interface compliance, not rule correctness.
Evidence: methodological insight.