loop-benchmarking

Controlled experiments across agentic coding configurations. Same task, one variable, what actually works.
git clone https://git.shiptheloop.com/loop-benchmarking.git
Log | Files | Refs | README

commit f944fc2552eac32747f26c24e00b9d8f8cc7829f
parent b241132d53c797268ea9ef86f6a0984a5a99e723
Author: Brian Graham <brian@buildingbetterteams.de>
Date:   Sat,  4 Apr 2026 08:59:58 +0200

Re-evaluate all 67 runs with new eval pipeline

All runs now have code_analysis (function length, nesting depth, naming
consistency, separation of concerns, duplication, HTML validation),
transcript_analysis (productivity ratio, wasted turns, self-testing),
and gameplay_bot scores.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Diffstat:
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=javascript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json | 216++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=javascript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=javascript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json | 224++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=javascript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=javascript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json | 221++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=javascript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json | 125+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=off_tool_edit=off_tool_glob=off_tool_grep=off_tool_read=off_tool_write=off_web_search=off_run1/eval_results.json | 215++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=off_tool_edit=off_tool_glob=off_tool_grep=off_tool_read=off_tool_write=off_web_search=off_run1/gameplay-bot-report.json | 127+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=off_tool_edit=off_tool_glob=off_tool_grep=off_tool_read=off_tool_write=off_web_search=off_run2/eval_results.json | 224+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=off_tool_edit=off_tool_glob=off_tool_grep=off_tool_read=off_tool_write=off_web_search=off_run2/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=off_tool_edit=off_tool_glob=off_tool_grep=off_tool_read=off_tool_write=off_web_search=off_run3/eval_results.json | 213+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=off_tool_edit=off_tool_glob=off_tool_grep=off_tool_read=off_tool_write=off_web_search=off_run3/gameplay-bot-report.json | 117+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json | 216++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json | 224+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json | 127+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json | 215++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json | 127+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json | 85++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json | 120+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json | 223+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json | 217++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json | 216+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json | 118+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json | 217++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json | 216++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json | 217++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json | 223++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json | 127+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json | 216++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json | 218++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json | 129+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=off_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json | 224+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=off_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=off_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json | 216++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=off_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json | 127+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=off_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json | 226+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=off_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=off_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json | 216++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=off_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=off_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json | 214++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=off_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json | 125+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=off_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json | 219++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=off_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json | 204++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json | 118+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json | 205++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json | 119+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json | 217++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json | 223+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json | 127+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json | 215++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json | 127+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json | 216++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json | 127+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=off_tool_write=on_web_search=on_run1/eval_results.json | 216++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=off_tool_write=on_web_search=on_run1/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=off_tool_write=on_web_search=on_run2/eval_results.json | 215+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=off_tool_write=on_web_search=on_run2/gameplay-bot-report.json | 118+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=off_tool_write=on_web_search=on_run3/eval_results.json | 214+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=off_tool_write=on_web_search=on_run3/gameplay-bot-report.json | 117+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=off_web_search=on_run1/eval_results.json | 217++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=off_web_search=on_run1/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=off_web_search=on_run2/eval_results.json | 223+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=off_web_search=on_run2/gameplay-bot-report.json | 127+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=off_web_search=on_run3/eval_results.json | 215++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=off_web_search=on_run3/gameplay-bot-report.json | 127+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=off_run1/eval_results.json | 209++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=off_run1/gameplay-bot-report.json | 117+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=off_run2/eval_results.json | 217++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=off_run2/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=off_run3/eval_results.json | 85++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=off_run3/gameplay-bot-report.json | 120+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json | 88++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json | 125+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json | 217++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json | 215++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json | 127+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=opus_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json | 85++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=opus_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json | 120+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=opus_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json | 203++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=opus_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json | 117+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=opus_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json | 214++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=opus_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json | 222+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json | 91+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json | 120+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json | 85++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json | 120+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json | 85++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json | 125+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json | 85++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json | 120+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json | 85++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json | 120+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json | 209++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json | 120+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json | 224+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Aresults/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json | 216+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Aresults/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json | 118+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json | 220++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json | 134+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json | 215++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json | 129+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json | 216++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json | 127+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json | 222+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Aresults/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json | 218++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json | 222+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Aresults/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json | 217++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json | 129+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json | 221+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Aresults/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json | 125+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json | 216++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json | 227+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Aresults/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json | 129+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json | 205++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json | 115+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mresults/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json | 213++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Aresults/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json | 125+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
134 files changed, 21588 insertions(+), 156 deletions(-)

diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=javascript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=javascript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json @@ -36,10 +36,222 @@ "note": "not applicable for javascript" }, "performance": { - "bundle_size_bytes": 53769, + "bundle_size_bytes": 113783, "size_under_512kb": true }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 5, + "code": 2, + "docs": 0, + "unnecessary": 0, + "unnecessary_list": [] + }, + "lines_of_code": 694, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "minimal", + "console_logs": 0, + "magic_numbers": { + "count": 3, + "excessive": false + }, + "function_length": { + "count": 27, + "average": 7.8, + "max": 36, + "long_functions": 0 + }, + "max_nesting_depth": 14, + "global_declarations": 5, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 261, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 15, + "source_lines": 364, + "ratio_pct": 4.1 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 1, + "files_with_logic": 1, + "files_with_both": 1 + }, + "html_validation": { + "valid": false, + "errors": 1 + }, + "duplication_percentage": 0.0, + "score": 0.9 + }, + "transcript_analysis": { + "total_events": 22, + "tool_calls": { + "total": 4, + "bash": 4, + "write": 0, + "edit": 0, + "read": 0 + }, + "wasted_turns": { + "total": 0, + "docs": 0, + "ascii_art": 0, + "server_starts": 0 + }, + "errors_encountered": 0, + "thinking_blocks": 5, + "text_blocks": 5, + "productivity_ratio": 1.0, + "self_tested": false, + "score": 1.0 + }, + "gameplay_bot": { + "pass": false, + "score": 0.94, + "total": 16, + "passed": 15, + "failed": 1, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "x", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 16 -> 40" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [160] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 79 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 130, + "lines_cleared": 1, + "max_score_observed": 182, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 30 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.753 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=javascript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=javascript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "x", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 16 -> 40" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [160] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 79 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 130, + "lines_cleared": 1, + "max_score_observed": 182, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 30 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=javascript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=javascript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json @@ -1,11 +1,11 @@ { "structural": { - "pass": false, + "pass": true, "checks": [ { "name": "entry_point_exists", - "pass": false, - "detail": "no index.html found in workspace root, dist/, or public/" + "pass": true, + "detail": "index.html found" }, { "name": "package_json_exists", @@ -18,7 +18,7 @@ "detail": "no build script defined (static project)" } ], - "score": 0.67 + "score": 1.0 }, "functional": { "pass": false, @@ -36,10 +36,222 @@ "note": "not applicable for javascript" }, "performance": { - "bundle_size_bytes": 0, + "bundle_size_bytes": 76399, "size_under_512kb": true }, "score": 0.67 }, - "score": 0.335 + "code_analysis": { + "files": { + "total": 4, + "code": 2, + "docs": 0, + "unnecessary": 0, + "unnecessary_list": [] + }, + "lines_of_code": 1264, + "dependencies": { + "production": 0, + "dev": 3, + "total": 3 + }, + "complexity": "minimal", + "console_logs": 0, + "magic_numbers": { + "count": 0, + "excessive": false + }, + "function_length": { + "count": 0, + "average": 0, + "max": 0, + "long_functions": 0 + }, + "max_nesting_depth": 0, + "global_declarations": 0, + "naming": { + "dominant_style": "unknown", + "consistency_pct": 100.0, + "camel_case": 0, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 0, + "source_lines": 0, + "ratio_pct": 0.0 + }, + "separation_of_concerns": { + "verdict": "unclear", + "files_with_rendering": 0, + "files_with_logic": 0, + "files_with_both": 0 + }, + "html_validation": { + "valid": false, + "errors": 3 + }, + "duplication_percentage": 0.0, + "score": 0.95 + }, + "transcript_analysis": { + "total_events": 13, + "tool_calls": { + "total": 2, + "bash": 2, + "write": 0, + "edit": 0, + "read": 0 + }, + "wasted_turns": { + "total": 0, + "docs": 0, + "ascii_art": 0, + "server_starts": 0 + }, + "errors_encountered": 0, + "thinking_blocks": 3, + "text_blocks": 2, + "productivity_ratio": 1.0, + "self_tested": false, + "score": 1.0 + }, + "gameplay_bot": { + "pass": false, + "score": 0.44, + "total": 16, + "passed": 7, + "failed": 9, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "space", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via space" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 78 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 7, + "failed": 9, + "score": 0.44 + }, + "gameplay": { + "pieces_placed": 188, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 29 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.7155 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=javascript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=javascript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "space", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via space" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 78 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 7, + "failed": 9, + "score": 0.44 + }, + "gameplay": { + "pieces_placed": 188, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 29 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=javascript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=javascript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json @@ -1,11 +1,11 @@ { "structural": { - "pass": false, + "pass": true, "checks": [ { "name": "entry_point_exists", - "pass": false, - "detail": "no index.html found in workspace root, dist/, or public/" + "pass": true, + "detail": "index.html found" }, { "name": "package_json_exists", @@ -18,7 +18,7 @@ "detail": "no build script defined (static project)" } ], - "score": 0.67 + "score": 1.0 }, "functional": { "pass": false, @@ -36,10 +36,219 @@ "note": "not applicable for javascript" }, "performance": { - "bundle_size_bytes": 0, + "bundle_size_bytes": 77621, "size_under_512kb": true }, "score": 0.67 }, - "score": 0.335 + "code_analysis": { + "files": { + "total": 4, + "code": 2, + "docs": 0, + "unnecessary": 0, + "unnecessary_list": [] + }, + "lines_of_code": 1362, + "dependencies": { + "production": 0, + "dev": 3, + "total": 3 + }, + "complexity": "minimal", + "console_logs": 0, + "magic_numbers": { + "count": 0, + "excessive": false + }, + "function_length": { + "count": 0, + "average": 0, + "max": 0, + "long_functions": 0 + }, + "max_nesting_depth": 0, + "global_declarations": 0, + "naming": { + "dominant_style": "unknown", + "consistency_pct": 100.0, + "camel_case": 0, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 0, + "source_lines": 0, + "ratio_pct": 0.0 + }, + "separation_of_concerns": { + "verdict": "unclear", + "files_with_rendering": 0, + "files_with_logic": 0, + "files_with_both": 0 + }, + "html_validation": { + "valid": false, + "errors": 4 + }, + "duplication_percentage": 0.0, + "score": 0.95 + }, + "transcript_analysis": { + "total_events": 13, + "tool_calls": { + "total": 2, + "bash": 2, + "write": 0, + "edit": 0, + "read": 0 + }, + "wasted_turns": { + "total": 0, + "docs": 0, + "ascii_art": 0, + "server_starts": 0 + }, + "errors_encountered": 0, + "thinking_blocks": 3, + "text_blocks": 2, + "productivity_ratio": 1.0, + "self_tested": false, + "score": 1.0 + }, + "gameplay_bot": { + "pass": false, + "score": 0.75, + "total": 16, + "passed": 12, + "failed": 4, + "report": { + "implementation": { + "renderer": "dom", + "grid_detected": true, + "grid_bounds": { + "x": 362.5, + "y": 125, + "width": 325, + "height": 635 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "pixels changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "game still responding after 10 piece drops" + }, + { + "name": "line_clear", + "pass": false, + "detail": "could not trigger or detect a line clear" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": false, + "detail": "could not trigger or detect game over" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 16s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 12, + "failed": 4, + "score": 0.75 + }, + "gameplay": { + "pieces_placed": 210, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 16, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 30 + }, + "accessibility": { + "issues": [], + "issue_count": 0, + "pass": true + } + } + }, + "score": 0.7465 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=javascript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=javascript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json @@ -0,0 +1,124 @@ +{ + "implementation": { + "renderer": "dom", + "grid_detected": true, + "grid_bounds": { + "x": 362.5, + "y": 125, + "width": 325, + "height": 635 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "pixels changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "game still responding after 10 piece drops" + }, + { + "name": "line_clear", + "pass": false, + "detail": "could not trigger or detect a line clear" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": false, + "detail": "could not trigger or detect game over" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 16s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 12, + "failed": 4, + "score": 0.75 + }, + "gameplay": { + "pieces_placed": 210, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 16, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 30 + }, + "accessibility": { + "issues": [], + "issue_count": 0, + "pass": true + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=off_tool_edit=off_tool_glob=off_tool_grep=off_tool_read=off_tool_write=off_web_search=off_run1/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=off_tool_edit=off_tool_glob=off_tool_grep=off_tool_read=off_tool_write=off_web_search=off_run1/eval_results.json @@ -46,5 +46,218 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 12, + "code": 3, + "docs": 6, + "unnecessary": 1, + "unnecessary_list": [ + "README.md" + ] + }, + "lines_of_code": 867, + "dependencies": { + "production": 0, + "dev": 4, + "total": 4 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 12, + "excessive": false + }, + "function_length": { + "count": 46, + "average": 7.0, + "max": 25, + "long_functions": 0 + }, + "max_nesting_depth": 14, + "global_declarations": 10, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 385, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 16, + "source_lines": 707, + "ratio_pct": 2.3 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": true, + "errors": 0 + }, + "duplication_percentage": 0.0, + "score": 0.85 + }, + "transcript_analysis": { + "total_events": 107, + "tool_calls": { + "total": 28, + "bash": 19, + "write": 0, + "edit": 4, + "read": 5 + }, + "wasted_turns": { + "total": 11, + "docs": 3, + "ascii_art": 2, + "server_starts": 6 + }, + "errors_encountered": 0, + "thinking_blocks": 29, + "text_blocks": 18, + "productivity_ratio": 0.61, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.69, + "total": 16, + "passed": 11, + "failed": 5, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "x", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "rotated: [] failed: [other] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 16 -> 30" + }, + { + "name": "line_clear", + "pass": true, + "detail": "9 line(s) cleared during AI play" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [122] -> no change after polling" + }, + { + "name": "game_over", + "pass": false, + "detail": "could not trigger or detect game over" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 88 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 11, + "failed": 5, + "score": 0.69 + }, + "gameplay": { + "pieces_placed": 129, + "lines_cleared": 42, + "max_score_observed": 166, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 38 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } + } + }, + "score": 0.5725 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=off_tool_edit=off_tool_glob=off_tool_grep=off_tool_read=off_tool_write=off_web_search=off_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=off_tool_edit=off_tool_glob=off_tool_grep=off_tool_read=off_tool_write=off_web_search=off_run1/gameplay-bot-report.json @@ -0,0 +1,126 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "x", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "rotated: [] failed: [other] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 16 -> 30" + }, + { + "name": "line_clear", + "pass": true, + "detail": "9 line(s) cleared during AI play" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [122] -> no change after polling" + }, + { + "name": "game_over", + "pass": false, + "detail": "could not trigger or detect game over" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 88 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 11, + "failed": 5, + "score": 0.69 + }, + "gameplay": { + "pieces_placed": 129, + "lines_cleared": 42, + "max_score_observed": 166, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 38 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=off_tool_edit=off_tool_glob=off_tool_grep=off_tool_read=off_tool_write=off_web_search=off_run2/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=off_tool_edit=off_tool_glob=off_tool_grep=off_tool_read=off_tool_write=off_web_search=off_run2/eval_results.json @@ -4,8 +4,8 @@ "checks": [ { "name": "entry_point_exists", - "pass": false, - "detail": "no index.html found in workspace root, dist/, or public/" + "pass": true, + "detail": "index.html found" }, { "name": "package_json_exists", @@ -23,7 +23,7 @@ "detail": "TypeScript files found but no tsconfig.json" } ], - "score": 0.5 + "score": 0.75 }, "functional": { "pass": false, @@ -41,10 +41,224 @@ "error": "no tsconfig.json" }, "performance": { - "bundle_size_bytes": 0, + "bundle_size_bytes": 126027, "size_under_512kb": true }, "score": 0.33 }, - "score": 0.1905 + "code_analysis": { + "files": { + "total": 11, + "code": 4, + "docs": 5, + "unnecessary": 1, + "unnecessary_list": [ + "README.md" + ] + }, + "lines_of_code": 2018, + "dependencies": { + "production": 0, + "dev": 4, + "total": 4 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 10, + "excessive": false + }, + "function_length": { + "count": 43, + "average": 5.9, + "max": 30, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 10, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 437, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 18, + "source_lines": 680, + "ratio_pct": 2.6 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 1 + }, + "duplication_percentage": 0.0, + "score": 0.8 + }, + "transcript_analysis": { + "total_events": 80, + "tool_calls": { + "total": 19, + "bash": 16, + "write": 0, + "edit": 0, + "read": 3 + }, + "wasted_turns": { + "total": 4, + "docs": 1, + "ascii_art": 3, + "server_starts": 0 + }, + "errors_encountered": 0, + "thinking_blocks": 20, + "text_blocks": 18, + "productivity_ratio": 0.79, + "self_tested": false, + "score": 0.8 + }, + "gameplay_bot": { + "pass": false, + "score": 0.69, + "total": 16, + "passed": 11, + "failed": 5, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 240, + "height": 400 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [240] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 87 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 11, + "failed": 5, + "score": 0.69 + }, + "gameplay": { + "pieces_placed": 197, + "lines_cleared": 1, + "max_score_observed": 232, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 25 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.57 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=off_tool_edit=off_tool_glob=off_tool_grep=off_tool_read=off_tool_write=off_web_search=off_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=off_tool_edit=off_tool_glob=off_tool_grep=off_tool_read=off_tool_write=off_web_search=off_run2/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 240, + "height": 400 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [240] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 87 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 11, + "failed": 5, + "score": 0.69 + }, + "gameplay": { + "pieces_placed": 197, + "lines_cleared": 1, + "max_score_observed": 232, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 25 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=off_tool_edit=off_tool_glob=off_tool_grep=off_tool_read=off_tool_write=off_web_search=off_run3/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=off_tool_edit=off_tool_glob=off_tool_grep=off_tool_read=off_tool_write=off_web_search=off_run3/eval_results.json @@ -4,8 +4,8 @@ "checks": [ { "name": "entry_point_exists", - "pass": false, - "detail": "no index.html found in workspace root, dist/, or public/" + "pass": true, + "detail": "index.html found" }, { "name": "package_json_exists", @@ -23,7 +23,7 @@ "detail": "TypeScript files found but no tsconfig.json" } ], - "score": 0.5 + "score": 0.75 }, "functional": { "pass": false, @@ -41,10 +41,213 @@ "error": "no tsconfig.json" }, "performance": { - "bundle_size_bytes": 0, + "bundle_size_bytes": 107536, "size_under_512kb": true }, "score": 0.33 }, - "score": 0.1905 + "code_analysis": { + "files": { + "total": 15, + "code": 5, + "docs": 5, + "unnecessary": 1, + "unnecessary_list": [ + "README.md" + ] + }, + "lines_of_code": 1249, + "dependencies": { + "production": 0, + "dev": 4, + "total": 4 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 20, + "excessive": false + }, + "function_length": { + "count": 45, + "average": 6.7, + "max": 40, + "long_functions": 0 + }, + "max_nesting_depth": 14, + "global_declarations": 10, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 439, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 39, + "source_lines": 786, + "ratio_pct": 5.0 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 7 + }, + "duplication_percentage": 0.0, + "score": 0.8 + }, + "transcript_analysis": { + "total_events": 154, + "tool_calls": { + "total": 43, + "bash": 35, + "write": 0, + "edit": 5, + "read": 3 + }, + "wasted_turns": { + "total": 16, + "docs": 5, + "ascii_art": 3, + "server_starts": 8 + }, + "errors_encountered": 1, + "thinking_blocks": 44, + "text_blocks": 20, + "productivity_ratio": 0.63, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0, + "total": 15, + "passed": 0, + "failed": 15, + "report": { + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": false, + "detail": "1 console error(s): Unexpected token '<'" + }, + { + "name": "game_starts", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_left", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_right", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_down", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "rotate", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "line_clear", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "score_changes", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "game_over", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "skipped: page did not load" + } + ], + "summary": { + "total": 15, + "passed": 0, + "failed": 15, + "score": 0 + }, + "gameplay": { + "pieces_placed": 0, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 35 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } + } + }, + "score": 0.491 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=off_tool_edit=off_tool_glob=off_tool_grep=off_tool_read=off_tool_write=off_web_search=off_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=off_tool_edit=off_tool_glob=off_tool_grep=off_tool_read=off_tool_write=off_web_search=off_run3/gameplay-bot-report.json @@ -0,0 +1,116 @@ +{ + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": false, + "detail": "1 console error(s): Unexpected token '<'" + }, + { + "name": "game_starts", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_left", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_right", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_down", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "rotate", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "line_clear", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "score_changes", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "game_over", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "skipped: page did not load" + } + ], + "summary": { + "total": 15, + "passed": 0, + "failed": 15, + "score": 0 + }, + "gameplay": { + "pieces_placed": 0, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 35 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json @@ -45,5 +45,219 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 17, + "code": 5, + "docs": 6, + "unnecessary": 1, + "unnecessary_list": [ + "README.md" + ] + }, + "lines_of_code": 1206, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 10, + "excessive": false + }, + "function_length": { + "count": 52, + "average": 6.4, + "max": 29, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 8, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 515, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 29, + "source_lines": 853, + "ratio_pct": 3.4 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 3, + "files_with_logic": 3, + "files_with_both": 3 + }, + "html_validation": { + "valid": false, + "errors": 1 + }, + "duplication_percentage": 0.0, + "score": 0.8 + }, + "transcript_analysis": { + "total_events": 98, + "tool_calls": { + "total": 26, + "bash": 22, + "write": 0, + "edit": 1, + "read": 3 + }, + "wasted_turns": { + "total": 18, + "docs": 4, + "ascii_art": 3, + "server_starts": 11 + }, + "errors_encountered": 0, + "thinking_blocks": 27, + "text_blocks": 15, + "productivity_ratio": 0.31, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.31, + "total": 16, + "passed": 5, + "failed": 11, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 60, + "height": 120 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "pixels changed after 5s with no input" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "rotated: [] failed: [unknown] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "3 line(s) cleared during AI play" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": false, + "detail": "could not trigger or detect game over" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 87 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 5, + "failed": 11, + "score": 0.31 + }, + "gameplay": { + "pieces_placed": 187, + "lines_cleared": 6, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 32 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.615 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 60, + "height": 120 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "pixels changed after 5s with no input" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "rotated: [] failed: [unknown] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "3 line(s) cleared during AI play" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": false, + "detail": "could not trigger or detect game over" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 87 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 5, + "failed": 11, + "score": 0.31 + }, + "gameplay": { + "pieces_placed": 187, + "lines_cleared": 6, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 32 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json @@ -4,8 +4,8 @@ "checks": [ { "name": "entry_point_exists", - "pass": false, - "detail": "no index.html found in workspace root, dist/, or public/" + "pass": true, + "detail": "index.html found" }, { "name": "package_json_exists", @@ -23,7 +23,7 @@ "detail": "TypeScript files found but no tsconfig.json" } ], - "score": 0.5 + "score": 0.75 }, "functional": { "pass": false, @@ -41,10 +41,224 @@ "error": "no tsconfig.json" }, "performance": { - "bundle_size_bytes": 0, + "bundle_size_bytes": 143840, "size_under_512kb": true }, "score": 0.33 }, - "score": 0.1905 + "code_analysis": { + "files": { + "total": 30, + "code": 14, + "docs": 10, + "unnecessary": 2, + "unnecessary_list": [ + "README.md", + "README.md" + ] + }, + "lines_of_code": 1708, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "over-engineered", + "console_logs": 0, + "magic_numbers": { + "count": 24, + "excessive": true + }, + "function_length": { + "count": 89, + "average": 5.6, + "max": 22, + "long_functions": 0 + }, + "max_nesting_depth": 10, + "global_declarations": 12, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 710, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 44, + "source_lines": 1441, + "ratio_pct": 3.1 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 4, + "files_with_logic": 9, + "files_with_both": 4 + }, + "html_validation": { + "valid": false, + "errors": 2 + }, + "duplication_percentage": 0.0, + "score": 0.55 + }, + "transcript_analysis": { + "total_events": 112, + "tool_calls": { + "total": 35, + "bash": 34, + "write": 0, + "edit": 0, + "read": 1 + }, + "wasted_turns": { + "total": 16, + "docs": 4, + "ascii_art": 3, + "server_starts": 9 + }, + "errors_encountered": 0, + "thinking_blocks": 36, + "text_blocks": 2, + "productivity_ratio": 0.54, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.25, + "total": 16, + "passed": 4, + "failed": 12, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 350, + "height": 700 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": false, + "detail": "could not start game with any mechanism" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "no score element found and no number changed" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 78 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 4, + "failed": 12, + "score": 0.25 + }, + "gameplay": { + "pieces_placed": 188, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 25 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } + } + }, + "score": 0.4535 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json @@ -0,0 +1,126 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 350, + "height": 700 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": false, + "detail": "could not start game with any mechanism" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "no score element found and no number changed" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 78 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 4, + "failed": 12, + "score": 0.25 + }, + "gameplay": { + "pieces_placed": 188, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 25 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json @@ -45,5 +45,218 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 15, + "code": 5, + "docs": 5, + "unnecessary": 1, + "unnecessary_list": [ + "README.md" + ] + }, + "lines_of_code": 1195, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 10, + "magic_numbers": { + "count": 20, + "excessive": false + }, + "function_length": { + "count": 54, + "average": 5.9, + "max": 17, + "long_functions": 0 + }, + "max_nesting_depth": 14, + "global_declarations": 18, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 543, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 56, + "source_lines": 844, + "ratio_pct": 6.6 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 3, + "files_with_logic": 4, + "files_with_both": 3 + }, + "html_validation": { + "valid": false, + "errors": 8 + }, + "duplication_percentage": 0.0, + "score": 0.7 + }, + "transcript_analysis": { + "total_events": 62, + "tool_calls": { + "total": 18, + "bash": 15, + "write": 0, + "edit": 0, + "read": 3 + }, + "wasted_turns": { + "total": 5, + "docs": 2, + "ascii_art": 0, + "server_starts": 3 + }, + "errors_encountered": 0, + "thinking_blocks": 19, + "text_blocks": 3, + "productivity_ratio": 0.72, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.94, + "total": 16, + "passed": 15, + "failed": 1, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [I, unknown] failed: [] (tested 2 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "game still responding after 10 piece drops" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 79 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 189, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 31 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } + } + }, + "score": 0.653 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json @@ -0,0 +1,126 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [I, unknown] failed: [] (tested 2 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "game still responding after 10 piece drops" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 79 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 189, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 31 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json @@ -46,5 +46,88 @@ }, "score": 0.33 }, - "score": 0.1905 + "code_analysis": { + "files": { + "total": 3, + "code": 0, + "docs": 0, + "unnecessary": 0, + "unnecessary_list": [] + }, + "lines_of_code": 0, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "minimal", + "console_logs": 0, + "magic_numbers": { + "count": 0, + "excessive": false + }, + "function_length": { + "count": 0, + "average": 0, + "max": 0, + "long_functions": 0 + }, + "max_nesting_depth": 0, + "global_declarations": 0, + "naming": { + "dominant_style": "unknown", + "consistency_pct": 100.0, + "camel_case": 0, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 0, + "source_lines": 0, + "ratio_pct": 0.0 + }, + "separation_of_concerns": { + "verdict": "single-file", + "files_with_rendering": 0, + "files_with_logic": 0, + "files_with_both": 0 + }, + "html_validation": { + "valid": false, + "errors": 0 + }, + "duplication_percentage": 0.0, + "score": 1.0 + }, + "transcript_analysis": { + "total_events": 21, + "tool_calls": { + "total": 5, + "bash": 4, + "write": 0, + "edit": 0, + "read": 1 + }, + "wasted_turns": { + "total": 0, + "docs": 0, + "ascii_art": 0, + "server_starts": 0 + }, + "errors_encountered": 0, + "thinking_blocks": 4, + "text_blocks": 3, + "productivity_ratio": 1.0, + "self_tested": false, + "score": 1.0 + }, + "gameplay_bot": { + "pass": false, + "score": 0, + "error": "Gameplay bot timed out after 180 seconds" + }, + "score": 0.566 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=off_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json @@ -0,0 +1,119 @@ +{ + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": false, + "detail": "could not start game with any mechanism" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": false, + "detail": "could not trigger or detect a line clear" + }, + { + "name": "score_changes", + "pass": false, + "detail": "no score element found and no number changed" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 11 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 4, + "failed": 12, + "score": 0.25 + }, + "gameplay": { + "pieces_placed": 102, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 45 + }, + "accessibility": { + "issues": [], + "issue_count": 0, + "pass": true + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json @@ -14,8 +14,8 @@ }, { "name": "build_succeeds", - "pass": true, - "detail": "npm run build completed successfully" + "pass": false, + "detail": "npm run build failed" }, { "name": "typescript_compiles", @@ -23,7 +23,7 @@ "detail": "TypeScript files found but no tsconfig.json" } ], - "score": 0.75 + "score": 0.5 }, "functional": { "pass": false, @@ -46,5 +46,220 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 17, + "code": 5, + "docs": 10, + "unnecessary": 2, + "unnecessary_list": [ + "server.js", + "README.md" + ] + }, + "lines_of_code": 1183, + "dependencies": { + "production": 0, + "dev": 4, + "total": 4 + }, + "complexity": "moderate", + "console_logs": 3, + "magic_numbers": { + "count": 16, + "excessive": false + }, + "function_length": { + "count": 45, + "average": 6.0, + "max": 22, + "long_functions": 0 + }, + "max_nesting_depth": 14, + "global_declarations": 15, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 537, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 17, + "source_lines": 822, + "ratio_pct": 2.1 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 4 + }, + "duplication_percentage": 0.0, + "score": 0.64 + }, + "transcript_analysis": { + "total_events": 112, + "tool_calls": { + "total": 29, + "bash": 26, + "write": 0, + "edit": 1, + "read": 2 + }, + "wasted_turns": { + "total": 17, + "docs": 3, + "ascii_art": 3, + "server_starts": 11 + }, + "errors_encountered": 0, + "thinking_blocks": 30, + "text_blocks": 20, + "productivity_ratio": 0.41, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.56, + "total": 16, + "passed": 9, + "failed": 7, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 60, + "height": 120 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "9 line(s) cleared during AI play" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 26s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 9, + "failed": 7, + "score": 0.56 + }, + "gameplay": { + "pieces_placed": 200, + "lines_cleared": 11, + "max_score_observed": 0, + "play_duration_seconds": 26, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 25 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.482 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 60, + "height": 120 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "9 line(s) cleared during AI play" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 26s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 9, + "failed": 7, + "score": 0.56 + }, + "gameplay": { + "pieces_placed": 200, + "lines_cleared": 11, + "max_score_observed": 0, + "play_duration_seconds": 26, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 25 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json @@ -46,5 +46,220 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 15, + "code": 4, + "docs": 7, + "unnecessary": 2, + "unnecessary_list": [ + "README.md", + "IMPLEMENTATION.md" + ] + }, + "lines_of_code": 989, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 22, + "excessive": true + }, + "function_length": { + "count": 45, + "average": 6.8, + "max": 37, + "long_functions": 0 + }, + "max_nesting_depth": 10, + "global_declarations": 10, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 537, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 20, + "source_lines": 687, + "ratio_pct": 2.9 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 3 + }, + "duplication_percentage": 0.0, + "score": 0.65 + }, + "transcript_analysis": { + "total_events": 99, + "tool_calls": { + "total": 27, + "bash": 22, + "write": 0, + "edit": 0, + "read": 5 + }, + "wasted_turns": { + "total": 18, + "docs": 5, + "ascii_art": 3, + "server_starts": 10 + }, + "errors_encountered": 0, + "thinking_blocks": 28, + "text_blocks": 13, + "productivity_ratio": 0.33, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.69, + "total": 16, + "passed": 11, + "failed": 5, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other, unknown] failed: [] (tested 2 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 26s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 11, + "failed": 5, + "score": 0.69 + }, + "gameplay": { + "pieces_placed": 210, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 26, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 28 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.5225 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other, unknown] failed: [] (tested 2 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 26s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 11, + "failed": 5, + "score": 0.69 + }, + "gameplay": { + "pieces_placed": 210, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 26, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 28 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json @@ -4,8 +4,8 @@ "checks": [ { "name": "entry_point_exists", - "pass": false, - "detail": "no index.html found in workspace root, dist/, or public/" + "pass": true, + "detail": "index.html found" }, { "name": "package_json_exists", @@ -23,7 +23,7 @@ "detail": "TypeScript files found but no tsconfig.json" } ], - "score": 0.5 + "score": 0.75 }, "functional": { "pass": false, @@ -41,10 +41,216 @@ "error": "no tsconfig.json" }, "performance": { - "bundle_size_bytes": 0, + "bundle_size_bytes": 180317, "size_under_512kb": true }, "score": 0.33 }, - "score": 0.1905 + "code_analysis": { + "files": { + "total": 31, + "code": 20, + "docs": 6, + "unnecessary": 3, + "unnecessary_list": [ + "FEATURES.md", + "server.js", + "README.md" + ] + }, + "lines_of_code": 2694, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "over-engineered", + "console_logs": 3, + "magic_numbers": { + "count": 33, + "excessive": true + }, + "function_length": { + "count": 148, + "average": 5.8, + "max": 24, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 11, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 1213, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 55, + "source_lines": 1988, + "ratio_pct": 2.8 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 6, + "files_with_logic": 15, + "files_with_both": 6 + }, + "html_validation": { + "valid": false, + "errors": 5 + }, + "duplication_percentage": 0.0, + "score": 0.39 + }, + "transcript_analysis": { + "total_events": 107, + "tool_calls": { + "total": 32, + "bash": 32, + "write": 0, + "edit": 0, + "read": 0 + }, + "wasted_turns": { + "total": 23, + "docs": 4, + "ascii_art": 11, + "server_starts": 8 + }, + "errors_encountered": 0, + "thinking_blocks": 33, + "text_blocks": 6, + "productivity_ratio": 0.28, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0, + "total": 15, + "passed": 0, + "failed": 15, + "report": { + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": false, + "detail": "1 console error(s): Unexpected token '<'" + }, + { + "name": "game_starts", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_left", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_right", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_down", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "rotate", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "line_clear", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "score_changes", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "game_over", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "skipped: page did not load" + } + ], + "summary": { + "total": 15, + "passed": 0, + "failed": 15, + "score": 0 + }, + "gameplay": { + "pieces_placed": 0, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 23 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.3885 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json @@ -0,0 +1,117 @@ +{ + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": false, + "detail": "1 console error(s): Unexpected token '<'" + }, + { + "name": "game_starts", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_left", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_right", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_down", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "rotate", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "line_clear", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "score_changes", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "game_over", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "skipped: page did not load" + } + ], + "summary": { + "total": 15, + "passed": 0, + "failed": 15, + "score": 0 + }, + "gameplay": { + "pieces_placed": 0, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 23 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json @@ -45,5 +45,220 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 16, + "code": 4, + "docs": 6, + "unnecessary": 2, + "unnecessary_list": [ + "FEATURES.md", + "README.md" + ] + }, + "lines_of_code": 1100, + "dependencies": { + "production": 0, + "dev": 4, + "total": 4 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 10, + "excessive": false + }, + "function_length": { + "count": 52, + "average": 6.9, + "max": 29, + "long_functions": 0 + }, + "max_nesting_depth": 10, + "global_declarations": 5, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 638, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 56, + "source_lines": 756, + "ratio_pct": 7.4 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 3, + "files_with_logic": 3, + "files_with_both": 3 + }, + "html_validation": { + "valid": false, + "errors": 1 + }, + "duplication_percentage": 0.0, + "score": 0.7 + }, + "transcript_analysis": { + "total_events": 116, + "tool_calls": { + "total": 33, + "bash": 27, + "write": 0, + "edit": 3, + "read": 3 + }, + "wasted_turns": { + "total": 11, + "docs": 3, + "ascii_art": 2, + "server_starts": 6 + }, + "errors_encountered": 0, + "thinking_blocks": 34, + "text_blocks": 12, + "productivity_ratio": 0.67, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.88, + "total": 16, + "passed": 14, + "failed": 2, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [I, unknown] failed: [] (tested 2 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "game still responding after 10 piece drops" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 79 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 14, + "failed": 2, + "score": 0.88 + }, + "gameplay": { + "pieces_placed": 189, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 23 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.647 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [I, unknown] failed: [] (tested 2 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "game still responding after 10 piece drops" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 79 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 14, + "failed": 2, + "score": 0.88 + }, + "gameplay": { + "pieces_placed": 189, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 23 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json @@ -46,5 +46,219 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 13, + "code": 3, + "docs": 7, + "unnecessary": 1, + "unnecessary_list": [ + "README.md" + ] + }, + "lines_of_code": 1097, + "dependencies": { + "production": 0, + "dev": 4, + "total": 4 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 8, + "excessive": false + }, + "function_length": { + "count": 50, + "average": 6.7, + "max": 28, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 4, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 452, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 14, + "source_lines": 689, + "ratio_pct": 2.0 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": true, + "errors": 0 + }, + "duplication_percentage": 0.0, + "score": 0.85 + }, + "transcript_analysis": { + "total_events": 100, + "tool_calls": { + "total": 25, + "bash": 22, + "write": 0, + "edit": 0, + "read": 3 + }, + "wasted_turns": { + "total": 12, + "docs": 4, + "ascii_art": 3, + "server_starts": 5 + }, + "errors_encountered": 0, + "thinking_blocks": 26, + "text_blocks": 20, + "productivity_ratio": 0.52, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.94, + "total": 16, + "passed": 15, + "failed": 1, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [I] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 16 -> 38" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 26s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 151, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 26, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 47 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.5975 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [I] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 16 -> 38" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 26s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 151, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 26, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 47 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json @@ -45,5 +45,220 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 20, + "code": 5, + "docs": 10, + "unnecessary": 2, + "unnecessary_list": [ + "FEATURES.md", + "README.md" + ] + }, + "lines_of_code": 1373, + "dependencies": { + "production": 0, + "dev": 4, + "total": 4 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 14, + "excessive": false + }, + "function_length": { + "count": 63, + "average": 7.3, + "max": 44, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 11, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 516, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 48, + "source_lines": 983, + "ratio_pct": 4.9 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 4, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 3 + }, + "duplication_percentage": 0.0, + "score": 0.7 + }, + "transcript_analysis": { + "total_events": 119, + "tool_calls": { + "total": 35, + "bash": 28, + "write": 0, + "edit": 3, + "read": 4 + }, + "wasted_turns": { + "total": 18, + "docs": 4, + "ascii_art": 1, + "server_starts": 13 + }, + "errors_encountered": 0, + "thinking_blocks": 36, + "text_blocks": 9, + "productivity_ratio": 0.49, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.44, + "total": 16, + "passed": 7, + "failed": 9, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 75, + "height": 150 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 78 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 7, + "failed": 9, + "score": 0.44 + }, + "gameplay": { + "pieces_placed": 188, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 19 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.603 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=off_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 75, + "height": 150 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 78 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 7, + "failed": 9, + "score": 0.44 + }, + "gameplay": { + "pieces_placed": 188, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 19 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json @@ -1,11 +1,11 @@ { "structural": { - "pass": false, + "pass": true, "checks": [ { "name": "entry_point_exists", - "pass": false, - "detail": "no index.html found in workspace root, dist/, or public/" + "pass": true, + "detail": "index.html found" }, { "name": "package_json_exists", @@ -18,7 +18,7 @@ "detail": "no build script defined (static project)" } ], - "score": 0.67 + "score": 1.0 }, "functional": { "pass": false, @@ -36,10 +36,221 @@ "error": "no tsconfig.json" }, "performance": { - "bundle_size_bytes": 0, + "bundle_size_bytes": 86640, "size_under_512kb": true }, "score": 0.33 }, - "score": 0.216 + "code_analysis": { + "files": { + "total": 4, + "code": 2, + "docs": 0, + "unnecessary": 0, + "unnecessary_list": [] + }, + "lines_of_code": 1522, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "minimal", + "console_logs": 0, + "magic_numbers": { + "count": 0, + "excessive": false + }, + "function_length": { + "count": 0, + "average": 0, + "max": 0, + "long_functions": 0 + }, + "max_nesting_depth": 0, + "global_declarations": 0, + "naming": { + "dominant_style": "unknown", + "consistency_pct": 100.0, + "camel_case": 0, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 0, + "source_lines": 0, + "ratio_pct": 0.0 + }, + "separation_of_concerns": { + "verdict": "unclear", + "files_with_rendering": 0, + "files_with_logic": 0, + "files_with_both": 0 + }, + "html_validation": { + "valid": false, + "errors": 1 + }, + "duplication_percentage": 0.0, + "score": 0.95 + }, + "transcript_analysis": { + "total_events": 16, + "tool_calls": { + "total": 3, + "bash": 3, + "write": 0, + "edit": 0, + "read": 0 + }, + "wasted_turns": { + "total": 1, + "docs": 0, + "ascii_art": 1, + "server_starts": 0 + }, + "errors_encountered": 0, + "thinking_blocks": 4, + "text_blocks": 2, + "productivity_ratio": 0.67, + "self_tested": false, + "score": 0.95 + }, + "gameplay_bot": { + "pass": false, + "score": 0.38, + "total": 16, + "passed": 6, + "failed": 10, + "report": { + "implementation": { + "renderer": "dom", + "grid_detected": true, + "grid_bounds": { + "x": 360.5, + "y": 50, + "width": 329, + "height": 639 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "z", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": false, + "detail": "could not trigger or detect a line clear" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "100 console errors, 0 play errors during 16s" + } + ], + "summary": { + "total": 16, + "passed": 6, + "failed": 10, + "score": 0.38 + }, + "gameplay": { + "pieces_placed": 210, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 16, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 27 + }, + "accessibility": { + "issues": [ + "no headings found" + ], + "issue_count": 1, + "pass": false + } + } + }, + "score": 0.6315 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json @@ -0,0 +1,126 @@ +{ + "implementation": { + "renderer": "dom", + "grid_detected": true, + "grid_bounds": { + "x": 360.5, + "y": 50, + "width": 329, + "height": 639 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "z", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": false, + "detail": "could not trigger or detect a line clear" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "100 console errors, 0 play errors during 16s" + } + ], + "summary": { + "total": 16, + "passed": 6, + "failed": 10, + "score": 0.38 + }, + "gameplay": { + "pieces_placed": 210, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 16, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 27 + }, + "accessibility": { + "issues": [ + "no headings found" + ], + "issue_count": 1, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json @@ -46,5 +46,219 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 11, + "code": 3, + "docs": 6, + "unnecessary": 1, + "unnecessary_list": [ + "README.md" + ] + }, + "lines_of_code": 1346, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 16, + "excessive": false + }, + "function_length": { + "count": 55, + "average": 6.2, + "max": 31, + "long_functions": 0 + }, + "max_nesting_depth": 10, + "global_declarations": 2, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 610, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 25, + "source_lines": 913, + "ratio_pct": 2.7 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 1 + }, + "duplication_percentage": 0.0, + "score": 0.8 + }, + "transcript_analysis": { + "total_events": 91, + "tool_calls": { + "total": 22, + "bash": 19, + "write": 0, + "edit": 0, + "read": 3 + }, + "wasted_turns": { + "total": 15, + "docs": 5, + "ascii_art": 3, + "server_starts": 7 + }, + "errors_encountered": 0, + "thinking_blocks": 23, + "text_blocks": 20, + "productivity_ratio": 0.32, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.88, + "total": 16, + "passed": 14, + "failed": 2, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "z", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [I] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 16 -> 44" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 93 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 14, + "failed": 2, + "score": 0.88 + }, + "gameplay": { + "pieces_placed": 144, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 36 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.579 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "z", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [I] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 16 -> 44" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 93 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 14, + "failed": 2, + "score": 0.88 + }, + "gameplay": { + "pieces_placed": 144, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 36 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json @@ -46,5 +46,221 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 12, + "code": 3, + "docs": 6, + "unnecessary": 2, + "unnecessary_list": [ + "FEATURES.md", + "README.md" + ] + }, + "lines_of_code": 1352, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 12, + "excessive": false + }, + "function_length": { + "count": 69, + "average": 6.6, + "max": 29, + "long_functions": 0 + }, + "max_nesting_depth": 10, + "global_declarations": 10, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 599, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 67, + "source_lines": 914, + "ratio_pct": 7.3 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 2 + }, + "duplication_percentage": 0.0, + "score": 0.7 + }, + "transcript_analysis": { + "total_events": 73, + "tool_calls": { + "total": 22, + "bash": 17, + "write": 1, + "edit": 0, + "read": 4 + }, + "wasted_turns": { + "total": 9, + "docs": 4, + "ascii_art": 1, + "server_starts": 4 + }, + "errors_encountered": 0, + "thinking_blocks": 23, + "text_blocks": 2, + "productivity_ratio": 0.59, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.88, + "total": 16, + "passed": 14, + "failed": 2, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "z", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [I] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "game still responding after 10 piece drops" + }, + { + "name": "line_clear", + "pass": true, + "detail": "9 line(s) cleared during AI play" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": false, + "detail": "could not trigger or detect game over" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 26s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 14, + "failed": 2, + "score": 0.88 + }, + "gameplay": { + "pieces_placed": 141, + "lines_cleared": 43, + "max_score_observed": 0, + "play_duration_seconds": 26, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 25 + }, + "accessibility": { + "issues": [ + "no headings found", + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 3, + "pass": false + } + } + }, + "score": 0.554 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json @@ -0,0 +1,128 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "z", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [I] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "game still responding after 10 piece drops" + }, + { + "name": "line_clear", + "pass": true, + "detail": "9 line(s) cleared during AI play" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": false, + "detail": "could not trigger or detect game over" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 26s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 14, + "failed": 2, + "score": 0.88 + }, + "gameplay": { + "pieces_placed": 141, + "lines_cleared": 43, + "max_score_observed": 0, + "play_duration_seconds": 26, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 25 + }, + "accessibility": { + "issues": [ + "no headings found", + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 3, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=off_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=off_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json @@ -1,6 +1,6 @@ { "structural": { - "pass": false, + "pass": true, "checks": [ { "name": "entry_point_exists", @@ -19,11 +19,11 @@ }, { "name": "typescript_compiles", - "pass": false, - "detail": "tsc --noEmit failed" + "pass": true, + "detail": "tsc --noEmit passed" } ], - "score": 0.75 + "score": 1.0 }, "functional": { "pass": false, @@ -46,5 +46,219 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 9, + "code": 4, + "docs": 2, + "unnecessary": 1, + "unnecessary_list": [ + "README.md" + ] + }, + "lines_of_code": 1214, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 14, + "excessive": false + }, + "function_length": { + "count": 53, + "average": 6.4, + "max": 30, + "long_functions": 0 + }, + "max_nesting_depth": 14, + "global_declarations": 12, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 652, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 21, + "source_lines": 775, + "ratio_pct": 2.7 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 7 + }, + "duplication_percentage": 0.0, + "score": 0.8 + }, + "transcript_analysis": { + "total_events": 70, + "tool_calls": { + "total": 21, + "bash": 15, + "write": 0, + "edit": 3, + "read": 3 + }, + "wasted_turns": { + "total": 3, + "docs": 1, + "ascii_art": 0, + "server_starts": 2 + }, + "errors_encountered": 0, + "thinking_blocks": 22, + "text_blocks": 2, + "productivity_ratio": 0.86, + "self_tested": false, + "score": 0.85 + }, + "gameplay_bot": { + "pass": false, + "score": 0.44, + "total": 16, + "passed": 7, + "failed": 9, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 79 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 7, + "failed": 9, + "score": 0.44 + }, + "gameplay": { + "pieces_placed": 189, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 121 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.58 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=off_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=off_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 79 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 7, + "failed": 9, + "score": 0.44 + }, + "gameplay": { + "pieces_placed": 189, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 121 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=off_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=off_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json @@ -45,5 +45,219 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 15, + "code": 3, + "docs": 8, + "unnecessary": 2, + "unnecessary_list": [ + "FEATURES.md", + "README.md" + ] + }, + "lines_of_code": 1171, + "dependencies": { + "production": 0, + "dev": 3, + "total": 3 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 18, + "excessive": false + }, + "function_length": { + "count": 57, + "average": 6.7, + "max": 26, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 18, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 440, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 59, + "source_lines": 824, + "ratio_pct": 7.2 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 4 + }, + "duplication_percentage": 0.0, + "score": 0.7 + }, + "transcript_analysis": { + "total_events": 85, + "tool_calls": { + "total": 26, + "bash": 24, + "write": 0, + "edit": 0, + "read": 2 + }, + "wasted_turns": { + "total": 12, + "docs": 4, + "ascii_art": 0, + "server_starts": 8 + }, + "errors_encountered": 0, + "thinking_blocks": 27, + "text_blocks": 2, + "productivity_ratio": 0.54, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.81, + "total": 16, + "passed": 13, + "failed": 3, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 16 -> 45" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 88 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 13, + "failed": 3, + "score": 0.81 + }, + "gameplay": { + "pieces_placed": 139, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 26 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } + } + }, + "score": 0.64 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=off_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=off_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json @@ -0,0 +1,126 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 16 -> 45" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 88 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 13, + "failed": 3, + "score": 0.81 + }, + "gameplay": { + "pieces_placed": 139, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 26 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=off_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=off_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json @@ -1,6 +1,6 @@ { "structural": { - "pass": false, + "pass": true, "checks": [ { "name": "entry_point_exists", @@ -19,11 +19,11 @@ }, { "name": "typescript_compiles", - "pass": false, - "detail": "tsc --noEmit failed" + "pass": true, + "detail": "tsc --noEmit passed" } ], - "score": 0.75 + "score": 1.0 }, "functional": { "pass": false, @@ -46,5 +46,221 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 15, + "code": 4, + "docs": 8, + "unnecessary": 3, + "unnecessary_list": [ + "FEATURES.md", + "server.js", + "README.md" + ] + }, + "lines_of_code": 1268, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 1, + "magic_numbers": { + "count": 16, + "excessive": false + }, + "function_length": { + "count": 43, + "average": 7.7, + "max": 30, + "long_functions": 0 + }, + "max_nesting_depth": 14, + "global_declarations": 15, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 623, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 37, + "source_lines": 834, + "ratio_pct": 4.4 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 3, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 4 + }, + "duplication_percentage": 0.0, + "score": 0.58 + }, + "transcript_analysis": { + "total_events": 117, + "tool_calls": { + "total": 32, + "bash": 24, + "write": 0, + "edit": 0, + "read": 8 + }, + "wasted_turns": { + "total": 17, + "docs": 7, + "ascii_art": 1, + "server_starts": 9 + }, + "errors_encountered": 0, + "thinking_blocks": 33, + "text_blocks": 16, + "productivity_ratio": 0.47, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.44, + "total": 16, + "passed": 7, + "failed": 9, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "space", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via space" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 79 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 7, + "failed": 9, + "score": 0.44 + }, + "gameplay": { + "pieces_placed": 189, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 30 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.505 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=off_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=off_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "space", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via space" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 79 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 7, + "failed": 9, + "score": 0.44 + }, + "gameplay": { + "pieces_placed": 189, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 30 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=off_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=off_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json @@ -46,5 +46,219 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 14, + "code": 3, + "docs": 8, + "unnecessary": 1, + "unnecessary_list": [ + "README.md" + ] + }, + "lines_of_code": 1024, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 16, + "excessive": false + }, + "function_length": { + "count": 39, + "average": 7.6, + "max": 38, + "long_functions": 0 + }, + "max_nesting_depth": 10, + "global_declarations": 0, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 394, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 16, + "source_lines": 675, + "ratio_pct": 2.4 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 1 + }, + "duplication_percentage": 0.0, + "score": 0.8 + }, + "transcript_analysis": { + "total_events": 115, + "tool_calls": { + "total": 28, + "bash": 24, + "write": 0, + "edit": 1, + "read": 3 + }, + "wasted_turns": { + "total": 28, + "docs": 5, + "ascii_art": 8, + "server_starts": 15 + }, + "errors_encountered": 0, + "thinking_blocks": 29, + "text_blocks": 26, + "productivity_ratio": 0.0, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.94, + "total": 16, + "passed": 15, + "failed": 1, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 16 -> 39" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 80 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 131, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 31 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.585 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=off_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=off_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 16 -> 39" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 80 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 131, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 31 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=off_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=off_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json @@ -46,5 +46,217 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 16, + "code": 4, + "docs": 8, + "unnecessary": 2, + "unnecessary_list": [ + "server.js", + "README.md" + ] + }, + "lines_of_code": 1056, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 2, + "magic_numbers": { + "count": 10, + "excessive": false + }, + "function_length": { + "count": 48, + "average": 6.6, + "max": 53, + "long_functions": 1 + }, + "max_nesting_depth": 14, + "global_declarations": 6, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 519, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 16, + "source_lines": 710, + "ratio_pct": 2.3 + }, + "separation_of_concerns": { + "verdict": "unclear", + "files_with_rendering": 0, + "files_with_logic": 2, + "files_with_both": 0 + }, + "html_validation": { + "valid": false, + "errors": 3 + }, + "duplication_percentage": 0.0, + "score": 0.66 + }, + "transcript_analysis": { + "total_events": 101, + "tool_calls": { + "total": 24, + "bash": 22, + "write": 0, + "edit": 0, + "read": 2 + }, + "wasted_turns": { + "total": 21, + "docs": 5, + "ascii_art": 4, + "server_starts": 12 + }, + "errors_encountered": 0, + "thinking_blocks": 25, + "text_blocks": 24, + "productivity_ratio": 0.12, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.69, + "total": 16, + "passed": 11, + "failed": 5, + "report": { + "implementation": { + "renderer": "dom", + "grid_detected": true, + "grid_bounds": { + "x": 375, + "y": 30, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "x", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "pixels changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": false, + "detail": "could not trigger or detect a line clear" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 16s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 11, + "failed": 5, + "score": 0.69 + }, + "gameplay": { + "pieces_placed": 210, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 16, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 22 + }, + "accessibility": { + "issues": [], + "issue_count": 0, + "pass": true + } + } + }, + "score": 0.525 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=off_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=off_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json @@ -0,0 +1,124 @@ +{ + "implementation": { + "renderer": "dom", + "grid_detected": true, + "grid_bounds": { + "x": 375, + "y": 30, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "x", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "pixels changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": false, + "detail": "could not trigger or detect a line clear" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 16s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 11, + "failed": 5, + "score": 0.69 + }, + "gameplay": { + "pieces_placed": 210, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 16, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 22 + }, + "accessibility": { + "issues": [], + "issue_count": 0, + "pass": true + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=off_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=off_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json @@ -46,5 +46,222 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 12, + "code": 3, + "docs": 5, + "unnecessary": 4, + "unnecessary_list": [ + "FEATURES.md", + "QUICK_START.txt", + "README.md", + "IMPLEMENTATION.md" + ] + }, + "lines_of_code": 1273, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 12, + "excessive": false + }, + "function_length": { + "count": 48, + "average": 7.1, + "max": 25, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 12, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 738, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 34, + "source_lines": 857, + "ratio_pct": 4.0 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 2 + }, + "duplication_percentage": 0.0, + "score": 0.6 + }, + "transcript_analysis": { + "total_events": 79, + "tool_calls": { + "total": 20, + "bash": 18, + "write": 0, + "edit": 0, + "read": 2 + }, + "wasted_turns": { + "total": 16, + "docs": 5, + "ascii_art": 3, + "server_starts": 8 + }, + "errors_encountered": 0, + "thinking_blocks": 21, + "text_blocks": 14, + "productivity_ratio": 0.2, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.88, + "total": 16, + "passed": 14, + "failed": 2, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 20 -> 38" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [156] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 94 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 14, + "failed": 2, + "score": 0.88 + }, + "gameplay": { + "pieces_placed": 145, + "lines_cleared": 1, + "max_score_observed": 156, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 27 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.529 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=off_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=off_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 20 -> 38" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [156] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 94 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 14, + "failed": 2, + "score": 0.88 + }, + "gameplay": { + "pieces_placed": 145, + "lines_cleared": 1, + "max_score_observed": 156, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 27 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json @@ -46,5 +46,207 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 5, + "code": 3, + "docs": 0, + "unnecessary": 0, + "unnecessary_list": [] + }, + "lines_of_code": 878, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 11, + "excessive": false + }, + "function_length": { + "count": 26, + "average": 6.1, + "max": 30, + "long_functions": 0 + }, + "max_nesting_depth": 14, + "global_declarations": 7, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 409, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 9, + "source_lines": 492, + "ratio_pct": 1.8 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 1, + "files_with_logic": 1, + "files_with_both": 1 + }, + "html_validation": { + "valid": false, + "errors": 3 + }, + "duplication_percentage": 0.0, + "score": 0.9 + }, + "transcript_analysis": { + "total_events": 22, + "tool_calls": { + "total": 5, + "bash": 4, + "write": 0, + "edit": 0, + "read": 1 + }, + "wasted_turns": { + "total": 0, + "docs": 0, + "ascii_art": 0, + "server_starts": 0 + }, + "errors_encountered": 0, + "thinking_blocks": 5, + "text_blocks": 3, + "productivity_ratio": 1.0, + "self_tested": false, + "score": 1.0 + }, + "gameplay_bot": { + "pass": false, + "score": 0, + "total": 15, + "passed": 0, + "failed": 15, + "report": { + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": false, + "detail": "1 console error(s): Unexpected token '<'" + }, + { + "name": "game_starts", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_left", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_right", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_down", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "rotate", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "line_clear", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "score_changes", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "game_over", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "skipped: page did not load" + } + ], + "summary": { + "total": 15, + "passed": 0, + "failed": 15, + "score": 0 + }, + "gameplay": { + "pieces_placed": 0, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 27 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.566 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json @@ -0,0 +1,117 @@ +{ + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": false, + "detail": "1 console error(s): Unexpected token '<'" + }, + { + "name": "game_starts", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_left", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_right", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_down", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "rotate", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "line_clear", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "score_changes", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "game_over", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "skipped: page did not load" + } + ], + "summary": { + "total": 15, + "passed": 0, + "failed": 15, + "score": 0 + }, + "gameplay": { + "pieces_placed": 0, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 27 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json @@ -41,5 +41,208 @@ }, "score": 0.33 }, - "score": 0.2655 + "code_analysis": { + "files": { + "total": 3, + "code": 1, + "docs": 0, + "unnecessary": 0, + "unnecessary_list": [] + }, + "lines_of_code": 281, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "minimal", + "console_logs": 0, + "magic_numbers": { + "count": 0, + "excessive": false + }, + "function_length": { + "count": 0, + "average": 0, + "max": 0, + "long_functions": 0 + }, + "max_nesting_depth": 0, + "global_declarations": 0, + "naming": { + "dominant_style": "unknown", + "consistency_pct": 100.0, + "camel_case": 0, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 0, + "source_lines": 0, + "ratio_pct": 0.0 + }, + "separation_of_concerns": { + "verdict": "single-file", + "files_with_rendering": 0, + "files_with_logic": 0, + "files_with_both": 0 + }, + "html_validation": { + "valid": false, + "errors": 3 + }, + "duplication_percentage": 0.0, + "score": 0.95 + }, + "transcript_analysis": { + "total_events": 19, + "tool_calls": { + "total": 4, + "bash": 2, + "write": 0, + "edit": 0, + "read": 2 + }, + "wasted_turns": { + "total": 0, + "docs": 0, + "ascii_art": 0, + "server_starts": 0 + }, + "errors_encountered": 0, + "thinking_blocks": 4, + "text_blocks": 3, + "productivity_ratio": 1.0, + "self_tested": false, + "score": 1.0 + }, + "gameplay_bot": { + "pass": false, + "score": 0, + "total": 15, + "passed": 0, + "failed": 15, + "report": { + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": false, + "detail": "1 console error(s): Unexpected token '<'" + }, + { + "name": "game_starts", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_left", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_right", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_down", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "rotate", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "line_clear", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "score_changes", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "game_over", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "skipped: page did not load" + } + ], + "summary": { + "total": 15, + "passed": 0, + "failed": 15, + "score": 0 + }, + "gameplay": { + "pieces_placed": 0, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 44 + }, + "accessibility": { + "issues": [ + "no headings found", + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 3, + "pass": false + } + } + }, + "score": 0.6035 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json @@ -0,0 +1,118 @@ +{ + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": false, + "detail": "1 console error(s): Unexpected token '<'" + }, + { + "name": "game_starts", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_left", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_right", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_down", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "rotate", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "line_clear", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "score_changes", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "game_over", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "skipped: page did not load" + } + ], + "summary": { + "total": 15, + "passed": 0, + "failed": 15, + "score": 0 + }, + "gameplay": { + "pieces_placed": 0, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 44 + }, + "accessibility": { + "issues": [ + "no headings found", + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 3, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json @@ -45,5 +45,220 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 18, + "code": 6, + "docs": 6, + "unnecessary": 2, + "unnecessary_list": [ + "server.js", + "README.md" + ] + }, + "lines_of_code": 1488, + "dependencies": { + "production": 0, + "dev": 3, + "total": 3 + }, + "complexity": "over-engineered", + "console_logs": 3, + "magic_numbers": { + "count": 14, + "excessive": false + }, + "function_length": { + "count": 59, + "average": 6.2, + "max": 25, + "long_functions": 0 + }, + "max_nesting_depth": 10, + "global_declarations": 18, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 760, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 41, + "source_lines": 1027, + "ratio_pct": 4.0 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 3, + "files_with_logic": 3, + "files_with_both": 3 + }, + "html_validation": { + "valid": false, + "errors": 9 + }, + "duplication_percentage": 0.0, + "score": 0.54 + }, + "transcript_analysis": { + "total_events": 94, + "tool_calls": { + "total": 29, + "bash": 26, + "write": 0, + "edit": 2, + "read": 1 + }, + "wasted_turns": { + "total": 15, + "docs": 3, + "ascii_art": 3, + "server_starts": 9 + }, + "errors_encountered": 0, + "thinking_blocks": 30, + "text_blocks": 2, + "productivity_ratio": 0.48, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.44, + "total": 16, + "passed": 7, + "failed": 9, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 240, + "height": 400 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 78 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 7, + "failed": 9, + "score": 0.44 + }, + "gameplay": { + "pieces_placed": 188, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 28 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.563 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 240, + "height": 400 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 78 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 7, + "failed": 9, + "score": 0.44 + }, + "gameplay": { + "pieces_placed": 188, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 28 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json @@ -1,6 +1,6 @@ { "structural": { - "pass": true, + "pass": false, "checks": [ { "name": "entry_point_exists", @@ -19,11 +19,11 @@ }, { "name": "typescript_compiles", - "pass": true, - "detail": "tsc --noEmit passed" + "pass": false, + "detail": "tsc --noEmit failed" } ], - "score": 1.0 + "score": 0.75 }, "functional": { "pass": false, @@ -45,5 +45,218 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 14, + "code": 4, + "docs": 6, + "unnecessary": 1, + "unnecessary_list": [ + "README.md" + ] + }, + "lines_of_code": 1169, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 12, + "excessive": false + }, + "function_length": { + "count": 58, + "average": 5.3, + "max": 21, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 16, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 563, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 34, + "source_lines": 787, + "ratio_pct": 4.3 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 7 + }, + "duplication_percentage": 0.0, + "score": 0.8 + }, + "transcript_analysis": { + "total_events": 114, + "tool_calls": { + "total": 31, + "bash": 23, + "write": 0, + "edit": 3, + "read": 5 + }, + "wasted_turns": { + "total": 13, + "docs": 4, + "ascii_art": 1, + "server_starts": 8 + }, + "errors_encountered": 0, + "thinking_blocks": 32, + "text_blocks": 16, + "productivity_ratio": 0.58, + "self_tested": true, + "score": 0.85 + }, + "gameplay_bot": { + "pass": false, + "score": 0.88, + "total": 16, + "passed": 14, + "failed": 2, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "x", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [unknown] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 20 -> 47" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": false, + "detail": "could not trigger or detect game over" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 29s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 14, + "failed": 2, + "score": 0.88 + }, + "gameplay": { + "pieces_placed": 152, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 29, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 33 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } + } + }, + "score": 0.667 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json @@ -0,0 +1,126 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "x", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [unknown] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 20 -> 47" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": false, + "detail": "could not trigger or detect game over" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 29s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 14, + "failed": 2, + "score": 0.88 + }, + "gameplay": { + "pieces_placed": 152, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 29, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 33 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json @@ -45,5 +45,218 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 14, + "code": 3, + "docs": 7, + "unnecessary": 1, + "unnecessary_list": [ + "README.md" + ] + }, + "lines_of_code": 1308, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 22, + "excessive": true + }, + "function_length": { + "count": 52, + "average": 7.1, + "max": 30, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 0, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 629, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 32, + "source_lines": 1083, + "ratio_pct": 3.0 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 2 + }, + "duplication_percentage": 0.0, + "score": 0.75 + }, + "transcript_analysis": { + "total_events": 120, + "tool_calls": { + "total": 33, + "bash": 22, + "write": 0, + "edit": 5, + "read": 6 + }, + "wasted_turns": { + "total": 9, + "docs": 3, + "ascii_art": 2, + "server_starts": 4 + }, + "errors_encountered": 0, + "thinking_blocks": 34, + "text_blocks": 16, + "productivity_ratio": 0.73, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.94, + "total": 16, + "passed": 15, + "failed": 1, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "game still responding after 10 piece drops" + }, + { + "name": "line_clear", + "pass": true, + "detail": "11 line(s) cleared during AI play" + }, + { + "name": "score_changes", + "pass": false, + "detail": "no score element found and no number changed" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 83 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 124, + "lines_cleared": 45, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 20 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } + } + }, + "score": 0.6655 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json @@ -0,0 +1,126 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "game still responding after 10 piece drops" + }, + { + "name": "line_clear", + "pass": true, + "detail": "11 line(s) cleared during AI play" + }, + { + "name": "score_changes", + "pass": false, + "detail": "no score element found and no number changed" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 83 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 124, + "lines_cleared": 45, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 20 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json @@ -46,5 +46,219 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 12, + "code": 4, + "docs": 6, + "unnecessary": 2, + "unnecessary_list": [ + "server.js", + "README.md" + ] + }, + "lines_of_code": 984, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 2, + "magic_numbers": { + "count": 17, + "excessive": false + }, + "function_length": { + "count": 54, + "average": 5.1, + "max": 12, + "long_functions": 0 + }, + "max_nesting_depth": 10, + "global_declarations": 20, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 311, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 32, + "source_lines": 711, + "ratio_pct": 4.5 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 2 + }, + "duplication_percentage": 0.0, + "score": 0.66 + }, + "transcript_analysis": { + "total_events": 95, + "tool_calls": { + "total": 25, + "bash": 20, + "write": 0, + "edit": 2, + "read": 3 + }, + "wasted_turns": { + "total": 13, + "docs": 2, + "ascii_art": 3, + "server_starts": 8 + }, + "errors_encountered": 0, + "thinking_blocks": 26, + "text_blocks": 15, + "productivity_ratio": 0.48, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.5, + "total": 16, + "passed": 8, + "failed": 8, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 29s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 8, + "failed": 8, + "score": 0.5 + }, + "gameplay": { + "pieces_placed": 210, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 29, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 21 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } + } + }, + "score": 0.506 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json @@ -0,0 +1,126 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 29s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 8, + "failed": 8, + "score": 0.5 + }, + "gameplay": { + "pieces_placed": 210, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 29, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 21 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=off_tool_write=on_web_search=on_run1/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=off_tool_write=on_web_search=on_run1/eval_results.json @@ -46,5 +46,219 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 11, + "code": 3, + "docs": 5, + "unnecessary": 1, + "unnecessary_list": [ + "README.md" + ] + }, + "lines_of_code": 1145, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 12, + "excessive": false + }, + "function_length": { + "count": 50, + "average": 7.5, + "max": 30, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 12, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 748, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 26, + "source_lines": 823, + "ratio_pct": 3.2 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 2 + }, + "duplication_percentage": 0.0, + "score": 0.8 + }, + "transcript_analysis": { + "total_events": 110, + "tool_calls": { + "total": 28, + "bash": 21, + "write": 0, + "edit": 3, + "read": 4 + }, + "wasted_turns": { + "total": 18, + "docs": 3, + "ascii_art": 5, + "server_starts": 10 + }, + "errors_encountered": 0, + "thinking_blocks": 29, + "text_blocks": 21, + "productivity_ratio": 0.36, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.38, + "total": 16, + "passed": 6, + "failed": 10, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "rotated: [] failed: [I] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 26s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 6, + "failed": 10, + "score": 0.38 + }, + "gameplay": { + "pieces_placed": 151, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 26, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 30 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.529 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=off_tool_write=on_web_search=on_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=off_tool_write=on_web_search=on_run1/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "rotated: [] failed: [I] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 26s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 6, + "failed": 10, + "score": 0.38 + }, + "gameplay": { + "pieces_placed": 151, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 26, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 30 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=off_tool_write=on_web_search=on_run2/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=off_tool_write=on_web_search=on_run2/eval_results.json @@ -4,8 +4,8 @@ "checks": [ { "name": "entry_point_exists", - "pass": false, - "detail": "no index.html found in workspace root, dist/, or public/" + "pass": true, + "detail": "index.html found" }, { "name": "package_json_exists", @@ -23,7 +23,7 @@ "detail": "TypeScript files found but no tsconfig.json" } ], - "score": 0.5 + "score": 0.75 }, "functional": { "pass": false, @@ -41,10 +41,215 @@ "error": "no tsconfig.json" }, "performance": { - "bundle_size_bytes": 0, + "bundle_size_bytes": 153909, "size_under_512kb": true }, "score": 0.33 }, - "score": 0.1905 + "code_analysis": { + "files": { + "total": 16, + "code": 4, + "docs": 6, + "unnecessary": 2, + "unnecessary_list": [ + "QUICK_START.txt", + "README.md" + ] + }, + "lines_of_code": 1322, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 14, + "excessive": false + }, + "function_length": { + "count": 47, + "average": 7.6, + "max": 28, + "long_functions": 0 + }, + "max_nesting_depth": 7, + "global_declarations": 8, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 564, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 60, + "source_lines": 766, + "ratio_pct": 7.8 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 5 + }, + "duplication_percentage": 0.0, + "score": 0.75 + }, + "transcript_analysis": { + "total_events": 124, + "tool_calls": { + "total": 35, + "bash": 32, + "write": 0, + "edit": 2, + "read": 1 + }, + "wasted_turns": { + "total": 14, + "docs": 6, + "ascii_art": 3, + "server_starts": 5 + }, + "errors_encountered": 0, + "thinking_blocks": 36, + "text_blocks": 14, + "productivity_ratio": 0.6, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0, + "total": 15, + "passed": 0, + "failed": 15, + "report": { + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": false, + "detail": "1 console error(s): Unexpected token '<'" + }, + { + "name": "game_starts", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_left", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_right", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_down", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "rotate", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "line_clear", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "score_changes", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "game_over", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "skipped: page did not load" + } + ], + "summary": { + "total": 15, + "passed": 0, + "failed": 15, + "score": 0 + }, + "gameplay": { + "pieces_placed": 0, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 19 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.4785 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=off_tool_write=on_web_search=on_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=off_tool_write=on_web_search=on_run2/gameplay-bot-report.json @@ -0,0 +1,117 @@ +{ + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": false, + "detail": "1 console error(s): Unexpected token '<'" + }, + { + "name": "game_starts", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_left", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_right", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_down", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "rotate", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "line_clear", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "score_changes", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "game_over", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "skipped: page did not load" + } + ], + "summary": { + "total": 15, + "passed": 0, + "failed": 15, + "score": 0 + }, + "gameplay": { + "pieces_placed": 0, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 19 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=off_tool_write=on_web_search=on_run3/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=off_tool_write=on_web_search=on_run3/eval_results.json @@ -4,8 +4,8 @@ "checks": [ { "name": "entry_point_exists", - "pass": false, - "detail": "no index.html found in workspace root, dist/, or public/" + "pass": true, + "detail": "index.html found" }, { "name": "package_json_exists", @@ -23,7 +23,7 @@ "detail": "TypeScript files found but no tsconfig.json" } ], - "score": 0.5 + "score": 0.75 }, "functional": { "pass": false, @@ -41,10 +41,214 @@ "error": "no tsconfig.json" }, "performance": { - "bundle_size_bytes": 0, + "bundle_size_bytes": 138652, "size_under_512kb": true }, "score": 0.33 }, - "score": 0.1905 + "code_analysis": { + "files": { + "total": 21, + "code": 5, + "docs": 8, + "unnecessary": 2, + "unnecessary_list": [ + "QUICK_START.txt", + "README.md" + ] + }, + "lines_of_code": 1407, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 10, + "excessive": false + }, + "function_length": { + "count": 55, + "average": 4.9, + "max": 17, + "long_functions": 0 + }, + "max_nesting_depth": 14, + "global_declarations": 2, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 520, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 20, + "source_lines": 813, + "ratio_pct": 2.5 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 3, + "files_with_logic": 3, + "files_with_both": 3 + }, + "html_validation": { + "valid": true, + "errors": 0 + }, + "duplication_percentage": 0.0, + "score": 0.75 + }, + "transcript_analysis": { + "total_events": 134, + "tool_calls": { + "total": 36, + "bash": 32, + "write": 0, + "edit": 2, + "read": 2 + }, + "wasted_turns": { + "total": 13, + "docs": 3, + "ascii_art": 5, + "server_starts": 5 + }, + "errors_encountered": 0, + "thinking_blocks": 37, + "text_blocks": 21, + "productivity_ratio": 0.64, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0, + "total": 15, + "passed": 0, + "failed": 15, + "report": { + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": false, + "detail": "1 console error(s): Unexpected token '<'" + }, + { + "name": "game_starts", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_left", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_right", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_down", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "rotate", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "line_clear", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "score_changes", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "game_over", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "skipped: page did not load" + } + ], + "summary": { + "total": 15, + "passed": 0, + "failed": 15, + "score": 0 + }, + "gameplay": { + "pieces_placed": 0, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 21 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } + } + }, + "score": 0.4785 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=off_tool_write=on_web_search=on_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=off_tool_write=on_web_search=on_run3/gameplay-bot-report.json @@ -0,0 +1,116 @@ +{ + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": false, + "detail": "1 console error(s): Unexpected token '<'" + }, + { + "name": "game_starts", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_left", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_right", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_down", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "rotate", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "line_clear", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "score_changes", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "game_over", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "skipped: page did not load" + } + ], + "summary": { + "total": 15, + "passed": 0, + "failed": 15, + "score": 0 + }, + "gameplay": { + "pieces_placed": 0, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 21 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=off_web_search=on_run1/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=off_web_search=on_run1/eval_results.json @@ -45,5 +45,220 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 42, + "code": 20, + "docs": 7, + "unnecessary": 2, + "unnecessary_list": [ + "FEATURES.md", + "README.md" + ] + }, + "lines_of_code": 2098, + "dependencies": { + "production": 0, + "dev": 6, + "total": 6 + }, + "complexity": "over-engineered", + "console_logs": 0, + "magic_numbers": { + "count": 36, + "excessive": true + }, + "function_length": { + "count": 125, + "average": 6.1, + "max": 34, + "long_functions": 0 + }, + "max_nesting_depth": 10, + "global_declarations": 14, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 98.8, + "camel_case": 1165, + "snake_case": 14 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 50, + "source_lines": 1736, + "ratio_pct": 2.9 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 6, + "files_with_logic": 10, + "files_with_both": 5 + }, + "html_validation": { + "valid": true, + "errors": 0 + }, + "duplication_percentage": 0.0, + "score": 0.6 + }, + "transcript_analysis": { + "total_events": 152, + "tool_calls": { + "total": 48, + "bash": 31, + "write": 0, + "edit": 7, + "read": 10 + }, + "wasted_turns": { + "total": 11, + "docs": 5, + "ascii_art": 1, + "server_starts": 5 + }, + "errors_encountered": 0, + "thinking_blocks": 49, + "text_blocks": 3, + "productivity_ratio": 0.77, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": true, + "score": 1, + "total": 16, + "passed": 16, + "failed": 0, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "z", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [unknown] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "game still responding after 10 piece drops" + }, + { + "name": "line_clear", + "pass": true, + "detail": "15 line(s) cleared during AI play" + }, + { + "name": "score_changes", + "pass": true, + "detail": "score changed from 41 to 43" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 77 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 16, + "failed": 0, + "score": 1 + }, + "gameplay": { + "pieces_placed": 120, + "lines_cleared": 53, + "max_score_observed": 62, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 31 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.634 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=off_web_search=on_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=off_web_search=on_run1/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "z", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [unknown] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "game still responding after 10 piece drops" + }, + { + "name": "line_clear", + "pass": true, + "detail": "15 line(s) cleared during AI play" + }, + { + "name": "score_changes", + "pass": true, + "detail": "score changed from 41 to 43" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 77 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 16, + "failed": 0, + "score": 1 + }, + "gameplay": { + "pieces_placed": 120, + "lines_cleared": 53, + "max_score_observed": 62, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 31 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=off_web_search=on_run2/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=off_web_search=on_run2/eval_results.json @@ -14,8 +14,8 @@ }, { "name": "build_succeeds", - "pass": true, - "detail": "npm run build completed successfully" + "pass": false, + "detail": "npm run build failed" }, { "name": "typescript_compiles", @@ -23,7 +23,7 @@ "detail": "TypeScript files found but no tsconfig.json" } ], - "score": 0.75 + "score": 0.5 }, "functional": { "pass": false, @@ -46,5 +46,220 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 11, + "code": 4, + "docs": 5, + "unnecessary": 3, + "unnecessary_list": [ + "FEATURES.md", + "server.js", + "README.md" + ] + }, + "lines_of_code": 1092, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 1, + "magic_numbers": { + "count": 18, + "excessive": false + }, + "function_length": { + "count": 52, + "average": 6.6, + "max": 28, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 17, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 457, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 37, + "source_lines": 749, + "ratio_pct": 4.9 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 3, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 3 + }, + "duplication_percentage": 0.0, + "score": 0.58 + }, + "transcript_analysis": { + "total_events": 94, + "tool_calls": { + "total": 24, + "bash": 20, + "write": 0, + "edit": 1, + "read": 3 + }, + "wasted_turns": { + "total": 15, + "docs": 2, + "ascii_art": 1, + "server_starts": 12 + }, + "errors_encountered": 0, + "thinking_blocks": 25, + "text_blocks": 17, + "productivity_ratio": 0.38, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.94, + "total": 16, + "passed": 15, + "failed": 1, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "z", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 16 -> 41" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 79 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 130, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 30 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } + } + }, + "score": 0.505 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=off_web_search=on_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=off_web_search=on_run2/gameplay-bot-report.json @@ -0,0 +1,126 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "z", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 16 -> 41" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 79 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 130, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 30 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=off_web_search=on_run3/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=off_web_search=on_run3/eval_results.json @@ -45,5 +45,218 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 18, + "code": 5, + "docs": 7, + "unnecessary": 1, + "unnecessary_list": [ + "README.md" + ] + }, + "lines_of_code": 1363, + "dependencies": { + "production": 0, + "dev": 3, + "total": 3 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 10, + "excessive": false + }, + "function_length": { + "count": 63, + "average": 5.3, + "max": 15, + "long_functions": 0 + }, + "max_nesting_depth": 10, + "global_declarations": 10, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 573, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 40, + "source_lines": 968, + "ratio_pct": 4.1 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 3, + "files_with_logic": 3, + "files_with_both": 3 + }, + "html_validation": { + "valid": false, + "errors": 8 + }, + "duplication_percentage": 0.0, + "score": 0.8 + }, + "transcript_analysis": { + "total_events": 120, + "tool_calls": { + "total": 32, + "bash": 28, + "write": 0, + "edit": 2, + "read": 2 + }, + "wasted_turns": { + "total": 15, + "docs": 4, + "ascii_art": 3, + "server_starts": 8 + }, + "errors_encountered": 0, + "thinking_blocks": 33, + "text_blocks": 19, + "productivity_ratio": 0.53, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.31, + "total": 16, + "passed": 5, + "failed": 11, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 79 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 5, + "failed": 11, + "score": 0.31 + }, + "gameplay": { + "pieces_placed": 189, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 30 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } + } + }, + "score": 0.615 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=off_web_search=on_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=off_web_search=on_run3/gameplay-bot-report.json @@ -0,0 +1,126 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 79 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 5, + "failed": 11, + "score": 0.31 + }, + "gameplay": { + "pieces_placed": 189, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 30 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=off_run1/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=off_run1/eval_results.json @@ -5,7 +5,7 @@ { "name": "entry_point_exists", "pass": true, - "detail": "dist/index.html found" + "detail": "index.html found" }, { "name": "package_json_exists", @@ -45,5 +45,210 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 20, + "code": 8, + "docs": 9, + "unnecessary": 3, + "unnecessary_list": [ + "FEATURES.md", + "server.js", + "README.md" + ] + }, + "lines_of_code": 1516, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "over-engineered", + "console_logs": 2, + "magic_numbers": { + "count": 13, + "excessive": false + }, + "function_length": { + "count": 52, + "average": 5.2, + "max": 15, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 15, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 393, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 20, + "source_lines": 784, + "ratio_pct": 2.6 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 3 + }, + "duplication_percentage": 0.0, + "score": 0.46 + }, + "transcript_analysis": { + "total_events": 107, + "tool_calls": { + "total": 33, + "bash": 25, + "write": 0, + "edit": 4, + "read": 4 + }, + "wasted_turns": { + "total": 12, + "docs": 4, + "ascii_art": 0, + "server_starts": 8 + }, + "errors_encountered": 0, + "thinking_blocks": 34, + "text_blocks": 3, + "productivity_ratio": 0.64, + "self_tested": true, + "score": 0.85 + }, + "gameplay_bot": { + "pass": false, + "score": 0, + "total": 15, + "passed": 0, + "failed": 15, + "report": { + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": false, + "detail": "1 console error(s): Unexpected token '<'" + }, + { + "name": "game_starts", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_left", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_right", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_down", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "rotate", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "line_clear", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "score_changes", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "game_over", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "skipped: page did not load" + } + ], + "summary": { + "total": 15, + "passed": 0, + "failed": 15, + "score": 0 + }, + "gameplay": { + "pieces_placed": 0, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 35 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } + } + }, + "score": 0.519 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=off_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=off_run1/gameplay-bot-report.json @@ -0,0 +1,116 @@ +{ + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": false, + "detail": "1 console error(s): Unexpected token '<'" + }, + { + "name": "game_starts", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_left", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_right", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_down", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "rotate", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "line_clear", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "score_changes", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "game_over", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "skipped: page did not load" + } + ], + "summary": { + "total": 15, + "passed": 0, + "failed": 15, + "score": 0 + }, + "gameplay": { + "pieces_placed": 0, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 35 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=off_run2/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=off_run2/eval_results.json @@ -45,5 +45,220 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 15, + "code": 4, + "docs": 7, + "unnecessary": 2, + "unnecessary_list": [ + "server.js", + "README.md" + ] + }, + "lines_of_code": 1098, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 2, + "magic_numbers": { + "count": 16, + "excessive": false + }, + "function_length": { + "count": 45, + "average": 8.0, + "max": 35, + "long_functions": 0 + }, + "max_nesting_depth": 11, + "global_declarations": 10, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 396, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 34, + "source_lines": 744, + "ratio_pct": 4.6 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": true, + "errors": 0 + }, + "duplication_percentage": 0.0, + "score": 0.71 + }, + "transcript_analysis": { + "total_events": 134, + "tool_calls": { + "total": 33, + "bash": 27, + "write": 0, + "edit": 1, + "read": 4 + }, + "wasted_turns": { + "total": 20, + "docs": 5, + "ascii_art": 3, + "server_starts": 12 + }, + "errors_encountered": 0, + "thinking_blocks": 34, + "text_blocks": 30, + "productivity_ratio": 0.39, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.94, + "total": 16, + "passed": 15, + "failed": 1, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "z", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [I] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 16 -> 45" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 26s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 151, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 26, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 46 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.6555 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=off_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=off_run2/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "z", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [I] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 16 -> 45" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 26s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 151, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 26, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 46 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=off_run3/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=off_run3/eval_results.json @@ -41,5 +41,88 @@ }, "score": 0.33 }, - "score": 0.216 + "code_analysis": { + "files": { + "total": 2, + "code": 0, + "docs": 0, + "unnecessary": 0, + "unnecessary_list": [] + }, + "lines_of_code": 0, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "minimal", + "console_logs": 0, + "magic_numbers": { + "count": 0, + "excessive": false + }, + "function_length": { + "count": 0, + "average": 0, + "max": 0, + "long_functions": 0 + }, + "max_nesting_depth": 0, + "global_declarations": 0, + "naming": { + "dominant_style": "unknown", + "consistency_pct": 100.0, + "camel_case": 0, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 0, + "source_lines": 0, + "ratio_pct": 0.0 + }, + "separation_of_concerns": { + "verdict": "single-file", + "files_with_rendering": 0, + "files_with_logic": 0, + "files_with_both": 0 + }, + "html_validation": { + "valid": false, + "errors": 0 + }, + "duplication_percentage": 0.0, + "score": 1.0 + }, + "transcript_analysis": { + "total_events": 98, + "tool_calls": { + "total": 26, + "bash": 23, + "write": 0, + "edit": 2, + "read": 1 + }, + "wasted_turns": { + "total": 10, + "docs": 2, + "ascii_art": 1, + "server_starts": 7 + }, + "errors_encountered": 5, + "thinking_blocks": 27, + "text_blocks": 15, + "productivity_ratio": 0.62, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0, + "error": "Gameplay bot timed out after 180 seconds" + }, + "score": 0.533 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=off_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=off_run3/gameplay-bot-report.json @@ -0,0 +1,119 @@ +{ + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": false, + "detail": "could not start game with any mechanism" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": false, + "detail": "could not trigger or detect a line clear" + }, + { + "name": "score_changes", + "pass": false, + "detail": "no score element found and no number changed" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 11 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 4, + "failed": 12, + "score": 0.25 + }, + "gameplay": { + "pieces_placed": 102, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 22 + }, + "accessibility": { + "issues": [], + "issue_count": 0, + "pass": true + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json @@ -45,5 +45,91 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 38, + "code": 20, + "docs": 9, + "unnecessary": 2, + "unnecessary_list": [ + "server.js", + "README.md" + ] + }, + "lines_of_code": 1642, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "over-engineered", + "console_logs": 2, + "magic_numbers": { + "count": 19, + "excessive": false + }, + "function_length": { + "count": 75, + "average": 6.1, + "max": 35, + "long_functions": 0 + }, + "max_nesting_depth": 10, + "global_declarations": 29, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 685, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 42, + "source_lines": 1296, + "ratio_pct": 3.2 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 5, + "files_with_logic": 9, + "files_with_both": 4 + }, + "html_validation": { + "valid": false, + "errors": 1 + }, + "duplication_percentage": 0.0, + "score": 0.56 + }, + "transcript_analysis": { + "total_events": 123, + "tool_calls": { + "total": 37, + "bash": 31, + "write": 0, + "edit": 3, + "read": 3 + }, + "wasted_turns": { + "total": 15, + "docs": 3, + "ascii_art": 1, + "server_starts": 11 + }, + "errors_encountered": 0, + "thinking_blocks": 38, + "text_blocks": 7, + "productivity_ratio": 0.59, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0, + "error": "Gameplay bot timed out after 180 seconds" + }, + "score": 0.524 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json @@ -0,0 +1,124 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 75, + "height": 150 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": false, + "detail": "could not start game with any mechanism" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "exception: keyboard.press: Target page, context or browser has been closed" + } + ], + "summary": { + "total": 16, + "passed": 3, + "failed": 13, + "score": 0.19 + }, + "gameplay": { + "pieces_placed": 110, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 28 + }, + "accessibility": { + "issues": [], + "issue_count": 0, + "pass": true + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json @@ -46,5 +46,220 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 11, + "code": 5, + "docs": 3, + "unnecessary": 2, + "unnecessary_list": [ + "server.js", + "README.md" + ] + }, + "lines_of_code": 1390, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 2, + "magic_numbers": { + "count": 15, + "excessive": false + }, + "function_length": { + "count": 50, + "average": 8.1, + "max": 40, + "long_functions": 0 + }, + "max_nesting_depth": 10, + "global_declarations": 16, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 830, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 33, + "source_lines": 921, + "ratio_pct": 3.6 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 4 + }, + "duplication_percentage": 0.0, + "score": 0.66 + }, + "transcript_analysis": { + "total_events": 69, + "tool_calls": { + "total": 18, + "bash": 13, + "write": 0, + "edit": 0, + "read": 5 + }, + "wasted_turns": { + "total": 6, + "docs": 2, + "ascii_art": 0, + "server_starts": 4 + }, + "errors_encountered": 0, + "thinking_blocks": 19, + "text_blocks": 10, + "productivity_ratio": 0.67, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.44, + "total": 16, + "passed": 7, + "failed": 9, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 60, + "height": 120 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 79 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 7, + "failed": 9, + "score": 0.44 + }, + "gameplay": { + "pieces_placed": 189, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 24 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.5 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 60, + "height": 120 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 79 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 7, + "failed": 9, + "score": 0.44 + }, + "gameplay": { + "pieces_placed": 189, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 24 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json @@ -45,5 +45,218 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 12, + "code": 5, + "docs": 2, + "unnecessary": 1, + "unnecessary_list": [ + "README.md" + ] + }, + "lines_of_code": 1207, + "dependencies": { + "production": 0, + "dev": 3, + "total": 3 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 14, + "excessive": false + }, + "function_length": { + "count": 50, + "average": 6.3, + "max": 26, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 16, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 455, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 31, + "source_lines": 848, + "ratio_pct": 3.7 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 3, + "files_with_logic": 3, + "files_with_both": 3 + }, + "html_validation": { + "valid": false, + "errors": 5 + }, + "duplication_percentage": 0.0, + "score": 0.8 + }, + "transcript_analysis": { + "total_events": 52, + "tool_calls": { + "total": 15, + "bash": 14, + "write": 0, + "edit": 0, + "read": 1 + }, + "wasted_turns": { + "total": 4, + "docs": 2, + "ascii_art": 0, + "server_starts": 2 + }, + "errors_encountered": 0, + "thinking_blocks": 16, + "text_blocks": 2, + "productivity_ratio": 0.73, + "self_tested": false, + "score": 0.8 + }, + "gameplay_bot": { + "pass": false, + "score": 0.94, + "total": 16, + "passed": 15, + "failed": 1, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other, unknown, I] failed: [] (tested 3 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "game still responding after 10 piece drops" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 81 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 191, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 28 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } + } + }, + "score": 0.688 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json @@ -0,0 +1,126 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other, unknown, I] failed: [] (tested 3 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "game still responding after 10 piece drops" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 81 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 191, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 28 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=opus_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=opus_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json @@ -41,5 +41,88 @@ }, "score": 0.33 }, - "score": 0.216 + "code_analysis": { + "files": { + "total": 2, + "code": 0, + "docs": 0, + "unnecessary": 0, + "unnecessary_list": [] + }, + "lines_of_code": 0, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "minimal", + "console_logs": 0, + "magic_numbers": { + "count": 0, + "excessive": false + }, + "function_length": { + "count": 0, + "average": 0, + "max": 0, + "long_functions": 0 + }, + "max_nesting_depth": 0, + "global_declarations": 0, + "naming": { + "dominant_style": "unknown", + "consistency_pct": 100.0, + "camel_case": 0, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 0, + "source_lines": 0, + "ratio_pct": 0.0 + }, + "separation_of_concerns": { + "verdict": "single-file", + "files_with_rendering": 0, + "files_with_logic": 0, + "files_with_both": 0 + }, + "html_validation": { + "valid": false, + "errors": 0 + }, + "duplication_percentage": 0.0, + "score": 1.0 + }, + "transcript_analysis": { + "total_events": 15, + "tool_calls": { + "total": 4, + "bash": 2, + "write": 1, + "edit": 0, + "read": 1 + }, + "wasted_turns": { + "total": 0, + "docs": 0, + "ascii_art": 0, + "server_starts": 0 + }, + "errors_encountered": 0, + "thinking_blocks": 1, + "text_blocks": 2, + "productivity_ratio": 1.0, + "self_tested": false, + "score": 1.0 + }, + "gameplay_bot": { + "pass": false, + "score": 0, + "error": "Gameplay bot timed out after 180 seconds" + }, + "score": 0.583 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=opus_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=opus_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json @@ -0,0 +1,119 @@ +{ + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": false, + "detail": "could not start game with any mechanism" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": false, + "detail": "could not trigger or detect a line clear" + }, + { + "name": "score_changes", + "pass": false, + "detail": "no score element found and no number changed" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 11 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 4, + "failed": 12, + "score": 0.25 + }, + "gameplay": { + "pieces_placed": 102, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 30 + }, + "accessibility": { + "issues": [], + "issue_count": 0, + "pass": true + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=opus_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=opus_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json @@ -46,5 +46,206 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 5, + "code": 2, + "docs": 0, + "unnecessary": 0, + "unnecessary_list": [] + }, + "lines_of_code": 764, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "minimal", + "console_logs": 0, + "magic_numbers": { + "count": 26, + "excessive": true + }, + "function_length": { + "count": 45, + "average": 5.4, + "max": 25, + "long_functions": 0 + }, + "max_nesting_depth": 5, + "global_declarations": 10, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 281, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 47, + "source_lines": 579, + "ratio_pct": 8.1 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 1, + "files_with_logic": 1, + "files_with_both": 1 + }, + "html_validation": { + "valid": false, + "errors": 2 + }, + "duplication_percentage": 0.0, + "score": 0.9 + }, + "transcript_analysis": { + "total_events": 25, + "tool_calls": { + "total": 8, + "bash": 6, + "write": 1, + "edit": 0, + "read": 1 + }, + "wasted_turns": { + "total": 0, + "docs": 0, + "ascii_art": 0, + "server_starts": 0 + }, + "errors_encountered": 0, + "thinking_blocks": 2, + "text_blocks": 4, + "productivity_ratio": 1.0, + "self_tested": false, + "score": 1.0 + }, + "gameplay_bot": { + "pass": false, + "score": 0, + "total": 15, + "passed": 0, + "failed": 15, + "report": { + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": false, + "detail": "1 console error(s): Unexpected token '<'" + }, + { + "name": "game_starts", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_left", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_right", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_down", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "rotate", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "line_clear", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "score_changes", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "game_over", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "skipped: page did not load" + } + ], + "summary": { + "total": 15, + "passed": 0, + "failed": 15, + "score": 0 + }, + "gameplay": { + "pieces_placed": 0, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 17 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } + } + }, + "score": 0.566 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=opus_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=opus_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json @@ -0,0 +1,116 @@ +{ + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": false, + "detail": "1 console error(s): Unexpected token '<'" + }, + { + "name": "game_starts", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_left", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_right", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_down", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "rotate", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "line_clear", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "score_changes", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "game_over", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "skipped: page did not load" + } + ], + "summary": { + "total": 15, + "passed": 0, + "failed": 15, + "score": 0 + }, + "gameplay": { + "pieces_placed": 0, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 17 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=opus_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=opus_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json @@ -45,5 +45,217 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 7, + "code": 3, + "docs": 0, + "unnecessary": 0, + "unnecessary_list": [] + }, + "lines_of_code": 1443, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 20, + "excessive": false + }, + "function_length": { + "count": 63, + "average": 7.7, + "max": 37, + "long_functions": 0 + }, + "max_nesting_depth": 14, + "global_declarations": 30, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 577, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 63, + "source_lines": 1135, + "ratio_pct": 5.6 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 8 + }, + "duplication_percentage": 0.0, + "score": 0.9 + }, + "transcript_analysis": { + "total_events": 45, + "tool_calls": { + "total": 15, + "bash": 9, + "write": 1, + "edit": 2, + "read": 3 + }, + "wasted_turns": { + "total": 0, + "docs": 0, + "ascii_art": 0, + "server_starts": 0 + }, + "errors_encountered": 0, + "thinking_blocks": 2, + "text_blocks": 10, + "productivity_ratio": 1.0, + "self_tested": false, + "score": 1.0 + }, + "gameplay_bot": { + "pass": false, + "score": 0.94, + "total": 16, + "passed": 15, + "failed": 1, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "x", + "drop": "Space" + }, + "start_mechanism": "enter", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via enter" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 16 -> 44" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 80 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 131, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 21 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.753 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=opus_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=opus_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "x", + "drop": "Space" + }, + "start_mechanism": "enter", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via enter" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 16 -> 44" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 80 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 131, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 21 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json @@ -4,8 +4,8 @@ "checks": [ { "name": "entry_point_exists", - "pass": false, - "detail": "no index.html found in workspace root, dist/, or public/" + "pass": true, + "detail": "index.html found" }, { "name": "package_json_exists", @@ -23,7 +23,7 @@ "detail": "TypeScript files found but no tsconfig.json" } ], - "score": 0.5 + "score": 0.75 }, "functional": { "pass": false, @@ -41,10 +41,222 @@ "error": "no tsconfig.json" }, "performance": { - "bundle_size_bytes": 0, + "bundle_size_bytes": 109098, "size_under_512kb": true }, "score": 0.33 }, - "score": 0.1905 + "code_analysis": { + "files": { + "total": 7, + "code": 4, + "docs": 0, + "unnecessary": 0, + "unnecessary_list": [] + }, + "lines_of_code": 2223, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 28, + "excessive": true + }, + "function_length": { + "count": 53, + "average": 6.4, + "max": 28, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 18, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 303, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 84, + "source_lines": 805, + "ratio_pct": 10.4 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 3 + }, + "duplication_percentage": 0.0, + "score": 0.85 + }, + "transcript_analysis": { + "total_events": 35, + "tool_calls": { + "total": 13, + "bash": 9, + "write": 0, + "edit": 2, + "read": 2 + }, + "wasted_turns": { + "total": 0, + "docs": 0, + "ascii_art": 0, + "server_starts": 0 + }, + "errors_encountered": 0, + "thinking_blocks": 4, + "text_blocks": 2, + "productivity_ratio": 1.0, + "self_tested": false, + "score": 1.0 + }, + "gameplay_bot": { + "pass": false, + "score": 0.94, + "total": 16, + "passed": 15, + "failed": 1, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "z", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 20 -> 42" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 80 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 131, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 31 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.6475 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "z", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 20 -> 42" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 80 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 131, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 31 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json @@ -19,11 +19,11 @@ }, { "name": "typescript_compiles", - "pass": false, - "detail": "tsc --noEmit failed" + "pass": true, + "detail": "tsc --noEmit passed" } ], - "score": 0.5 + "score": 0.75 }, "functional": { "pass": false, @@ -46,5 +46,88 @@ }, "score": 0.33 }, - "score": 0.1905 + "code_analysis": { + "files": { + "total": 5, + "code": 2, + "docs": 0, + "unnecessary": 0, + "unnecessary_list": [] + }, + "lines_of_code": 1134, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "minimal", + "console_logs": 0, + "magic_numbers": { + "count": 32, + "excessive": true + }, + "function_length": { + "count": 61, + "average": 7.2, + "max": 28, + "long_functions": 0 + }, + "max_nesting_depth": 14, + "global_declarations": 14, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 370, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 127, + "source_lines": 925, + "ratio_pct": 13.7 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 0 + }, + "duplication_percentage": 0.0, + "score": 0.9 + }, + "transcript_analysis": { + "total_events": 31, + "tool_calls": { + "total": 11, + "bash": 7, + "write": 0, + "edit": 2, + "read": 2 + }, + "wasted_turns": { + "total": 0, + "docs": 0, + "ascii_art": 0, + "server_starts": 0 + }, + "errors_encountered": 0, + "thinking_blocks": 5, + "text_blocks": 1, + "productivity_ratio": 1.0, + "self_tested": false, + "score": 1.0 + }, + "gameplay_bot": { + "pass": false, + "score": 0, + "error": "Gameplay bot timed out after 180 seconds" + }, + "score": 0.566 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json @@ -0,0 +1,119 @@ +{ + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": false, + "detail": "could not start game with any mechanism" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": false, + "detail": "could not trigger or detect a line clear" + }, + { + "name": "score_changes", + "pass": false, + "detail": "no score element found and no number changed" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 11 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 4, + "failed": 12, + "score": 0.25 + }, + "gameplay": { + "pieces_placed": 102, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 22 + }, + "accessibility": { + "issues": [], + "issue_count": 0, + "pass": true + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json @@ -46,5 +46,88 @@ }, "score": 0.33 }, - "score": 0.1905 + "code_analysis": { + "files": { + "total": 3, + "code": 0, + "docs": 0, + "unnecessary": 0, + "unnecessary_list": [] + }, + "lines_of_code": 0, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "minimal", + "console_logs": 0, + "magic_numbers": { + "count": 0, + "excessive": false + }, + "function_length": { + "count": 0, + "average": 0, + "max": 0, + "long_functions": 0 + }, + "max_nesting_depth": 0, + "global_declarations": 0, + "naming": { + "dominant_style": "unknown", + "consistency_pct": 100.0, + "camel_case": 0, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 0, + "source_lines": 0, + "ratio_pct": 0.0 + }, + "separation_of_concerns": { + "verdict": "single-file", + "files_with_rendering": 0, + "files_with_logic": 0, + "files_with_both": 0 + }, + "html_validation": { + "valid": false, + "errors": 0 + }, + "duplication_percentage": 0.0, + "score": 1.0 + }, + "transcript_analysis": { + "total_events": 15, + "tool_calls": { + "total": 4, + "bash": 3, + "write": 0, + "edit": 0, + "read": 1 + }, + "wasted_turns": { + "total": 0, + "docs": 0, + "ascii_art": 0, + "server_starts": 0 + }, + "errors_encountered": 0, + "thinking_blocks": 3, + "text_blocks": 1, + "productivity_ratio": 1.0, + "self_tested": false, + "score": 1.0 + }, + "gameplay_bot": { + "pass": false, + "score": 0, + "error": "Gameplay bot timed out after 180 seconds" + }, + "score": 0.566 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=detailed_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json @@ -0,0 +1,119 @@ +{ + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": false, + "detail": "could not start game with any mechanism" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": false, + "detail": "could not trigger or detect a line clear" + }, + { + "name": "score_changes", + "pass": false, + "detail": "no score element found and no number changed" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 11 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 4, + "failed": 12, + "score": 0.25 + }, + "gameplay": { + "pieces_placed": 102, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 23 + }, + "accessibility": { + "issues": [], + "issue_count": 0, + "pass": true + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json @@ -46,5 +46,88 @@ }, "score": 0.33 }, - "score": 0.1905 + "code_analysis": { + "files": { + "total": 8, + "code": 4, + "docs": 0, + "unnecessary": 0, + "unnecessary_list": [] + }, + "lines_of_code": 1560, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 33, + "excessive": true + }, + "function_length": { + "count": 68, + "average": 7.0, + "max": 36, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 18, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 457, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 121, + "source_lines": 1023, + "ratio_pct": 11.8 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 5 + }, + "duplication_percentage": 0.0, + "score": 0.85 + }, + "transcript_analysis": { + "total_events": 27, + "tool_calls": { + "total": 9, + "bash": 7, + "write": 0, + "edit": 1, + "read": 1 + }, + "wasted_turns": { + "total": 0, + "docs": 0, + "ascii_art": 0, + "server_starts": 0 + }, + "errors_encountered": 0, + "thinking_blocks": 3, + "text_blocks": 3, + "productivity_ratio": 1.0, + "self_tested": false, + "score": 1.0 + }, + "gameplay_bot": { + "pass": false, + "score": 0, + "error": "Gameplay bot timed out after 180 seconds" + }, + "score": 0.5285 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=off_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json @@ -0,0 +1,124 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "z", + "drop": "Space" + }, + "start_mechanism": "enter", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via enter" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "game still responding after 10 piece drops" + }, + { + "name": "line_clear", + "pass": true, + "detail": "5 line(s) cleared during AI play" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": false, + "detail": "could not trigger or detect game over" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "exception: keyboard.press: Target page, context or browser has been closed" + } + ], + "summary": { + "total": 16, + "passed": 12, + "failed": 4, + "score": 0.75 + }, + "gameplay": { + "pieces_placed": 100, + "lines_cleared": 5, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 30 + }, + "accessibility": { + "issues": [], + "issue_count": 0, + "pass": true + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json @@ -41,5 +41,88 @@ }, "score": 0.33 }, - "score": 0.216 + "code_analysis": { + "files": { + "total": 2, + "code": 0, + "docs": 0, + "unnecessary": 0, + "unnecessary_list": [] + }, + "lines_of_code": 0, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "minimal", + "console_logs": 0, + "magic_numbers": { + "count": 0, + "excessive": false + }, + "function_length": { + "count": 0, + "average": 0, + "max": 0, + "long_functions": 0 + }, + "max_nesting_depth": 0, + "global_declarations": 0, + "naming": { + "dominant_style": "unknown", + "consistency_pct": 100.0, + "camel_case": 0, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 0, + "source_lines": 0, + "ratio_pct": 0.0 + }, + "separation_of_concerns": { + "verdict": "single-file", + "files_with_rendering": 0, + "files_with_logic": 0, + "files_with_both": 0 + }, + "html_validation": { + "valid": false, + "errors": 0 + }, + "duplication_percentage": 0.0, + "score": 1.0 + }, + "transcript_analysis": { + "total_events": 17, + "tool_calls": { + "total": 4, + "bash": 3, + "write": 0, + "edit": 0, + "read": 1 + }, + "wasted_turns": { + "total": 0, + "docs": 0, + "ascii_art": 0, + "server_starts": 0 + }, + "errors_encountered": 0, + "thinking_blocks": 5, + "text_blocks": 1, + "productivity_ratio": 1.0, + "self_tested": false, + "score": 1.0 + }, + "gameplay_bot": { + "pass": false, + "score": 0, + "error": "Gameplay bot timed out after 180 seconds" + }, + "score": 0.583 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=off_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json @@ -0,0 +1,119 @@ +{ + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": false, + "detail": "could not start game with any mechanism" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": false, + "detail": "could not trigger or detect a line clear" + }, + { + "name": "score_changes", + "pass": false, + "detail": "no score element found and no number changed" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 11 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 4, + "failed": 12, + "score": 0.25 + }, + "gameplay": { + "pieces_placed": 102, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 23 + }, + "accessibility": { + "issues": [], + "issue_count": 0, + "pass": true + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json @@ -46,5 +46,88 @@ }, "score": 0.33 }, - "score": 0.1905 + "code_analysis": { + "files": { + "total": 4, + "code": 1, + "docs": 0, + "unnecessary": 0, + "unnecessary_list": [] + }, + "lines_of_code": 973, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "minimal", + "console_logs": 0, + "magic_numbers": { + "count": 55, + "excessive": true + }, + "function_length": { + "count": 35, + "average": 5.7, + "max": 26, + "long_functions": 0 + }, + "max_nesting_depth": 6, + "global_declarations": 11, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 99.4, + "camel_case": 346, + "snake_case": 2 + }, + "error_handling": { + "try_catch_blocks": 1, + "has_error_handling": true + }, + "comments": { + "comment_lines": 68, + "source_lines": 765, + "ratio_pct": 8.9 + }, + "separation_of_concerns": { + "verdict": "single-file", + "files_with_rendering": 1, + "files_with_logic": 1, + "files_with_both": 1 + }, + "html_validation": { + "valid": false, + "errors": 0 + }, + "duplication_percentage": 0.0, + "score": 0.95 + }, + "transcript_analysis": { + "total_events": 18, + "tool_calls": { + "total": 5, + "bash": 4, + "write": 0, + "edit": 0, + "read": 1 + }, + "wasted_turns": { + "total": 0, + "docs": 0, + "ascii_art": 0, + "server_starts": 0 + }, + "errors_encountered": 0, + "thinking_blocks": 1, + "text_blocks": 3, + "productivity_ratio": 1.0, + "self_tested": false, + "score": 1.0 + }, + "gameplay_bot": { + "pass": false, + "score": 0, + "error": "Gameplay bot timed out after 180 seconds" + }, + "score": 0.5535 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json @@ -0,0 +1,119 @@ +{ + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": false, + "detail": "could not start game with any mechanism" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": false, + "detail": "could not trigger or detect a line clear" + }, + { + "name": "score_changes", + "pass": false, + "detail": "no score element found and no number changed" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 11 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 4, + "failed": 12, + "score": 0.25 + }, + "gameplay": { + "pieces_placed": 102, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 19 + }, + "accessibility": { + "issues": [], + "issue_count": 0, + "pass": true + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json @@ -46,5 +46,212 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 11, + "code": 4, + "docs": 5, + "unnecessary": 2, + "unnecessary_list": [ + "server.js", + "README.md" + ] + }, + "lines_of_code": 1243, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 1, + "magic_numbers": { + "count": 10, + "excessive": false + }, + "function_length": { + "count": 41, + "average": 8.0, + "max": 26, + "long_functions": 0 + }, + "max_nesting_depth": 14, + "global_declarations": 15, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 581, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 3, + "source_lines": 805, + "ratio_pct": 0.4 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 3 + }, + "duplication_percentage": 0.0, + "score": 0.68 + }, + "transcript_analysis": { + "total_events": 84, + "tool_calls": { + "total": 24, + "bash": 22, + "write": 0, + "edit": 0, + "read": 2 + }, + "wasted_turns": { + "total": 19, + "docs": 4, + "ascii_art": 6, + "server_starts": 9 + }, + "errors_encountered": 0, + "thinking_blocks": 25, + "text_blocks": 7, + "productivity_ratio": 0.21, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.38, + "total": 16, + "passed": 6, + "failed": 10, + "report": { + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": false, + "detail": "could not trigger or detect a line clear" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 11 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 6, + "failed": 10, + "score": 0.38 + }, + "gameplay": { + "pieces_placed": 102, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 19 + }, + "accessibility": { + "issues": [], + "issue_count": 0, + "pass": true + } + } + }, + "score": 0.499 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json @@ -0,0 +1,119 @@ +{ + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": false, + "detail": "could not trigger or detect a line clear" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 11 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 6, + "failed": 10, + "score": 0.38 + }, + "gameplay": { + "pieces_placed": 102, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 19 + }, + "accessibility": { + "issues": [], + "issue_count": 0, + "pass": true + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json @@ -4,8 +4,8 @@ "checks": [ { "name": "entry_point_exists", - "pass": false, - "detail": "no index.html found in workspace root, dist/, or public/" + "pass": true, + "detail": "index.html found" }, { "name": "package_json_exists", @@ -23,7 +23,7 @@ "detail": "tsc --noEmit failed" } ], - "score": 0.5 + "score": 0.75 }, "functional": { "pass": false, @@ -41,10 +41,224 @@ "errors": 3 }, "performance": { - "bundle_size_bytes": 0, + "bundle_size_bytes": 153799, "size_under_512kb": true }, "score": 0.33 }, - "score": 0.1905 + "code_analysis": { + "files": { + "total": 14, + "code": 3, + "docs": 8, + "unnecessary": 1, + "unnecessary_list": [ + "README.md" + ] + }, + "lines_of_code": 1679, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 8, + "excessive": false + }, + "function_length": { + "count": 20, + "average": 6.2, + "max": 23, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 3, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 223, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 92, + "source_lines": 334, + "ratio_pct": 27.5 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 1, + "files_with_logic": 1, + "files_with_both": 1 + }, + "html_validation": { + "valid": false, + "errors": 2 + }, + "duplication_percentage": 0.0, + "score": 0.8 + }, + "transcript_analysis": { + "total_events": 86, + "tool_calls": { + "total": 21, + "bash": 19, + "write": 0, + "edit": 0, + "read": 2 + }, + "wasted_turns": { + "total": 10, + "docs": 3, + "ascii_art": 3, + "server_starts": 4 + }, + "errors_encountered": 0, + "thinking_blocks": 22, + "text_blocks": 18, + "productivity_ratio": 0.52, + "self_tested": true, + "score": 0.85 + }, + "gameplay_bot": { + "pass": false, + "score": 0.94, + "total": 16, + "passed": 15, + "failed": 1, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 240, + "height": 480 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "space", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via space" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 20 -> 43" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 29s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 151, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 29, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 34 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.605 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 240, + "height": 480 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "space", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via space" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 20 -> 43" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 29s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 151, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 29, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 34 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json @@ -4,8 +4,8 @@ "checks": [ { "name": "entry_point_exists", - "pass": false, - "detail": "no index.html found in workspace root, dist/, or public/" + "pass": true, + "detail": "index.html found" }, { "name": "package_json_exists", @@ -23,7 +23,7 @@ "detail": "TypeScript files found but no tsconfig.json" } ], - "score": 0.5 + "score": 0.75 }, "functional": { "pass": false, @@ -41,10 +41,216 @@ "error": "no tsconfig.json" }, "performance": { - "bundle_size_bytes": 0, + "bundle_size_bytes": 141698, "size_under_512kb": true }, "score": 0.33 }, - "score": 0.1905 + "code_analysis": { + "files": { + "total": 17, + "code": 7, + "docs": 7, + "unnecessary": 3, + "unnecessary_list": [ + "server.js", + "server.js", + "README.md" + ] + }, + "lines_of_code": 1231, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "over-engineered", + "console_logs": 2, + "magic_numbers": { + "count": 20, + "excessive": false + }, + "function_length": { + "count": 48, + "average": 6.4, + "max": 22, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 24, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 616, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 28, + "source_lines": 832, + "ratio_pct": 3.4 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 2 + }, + "duplication_percentage": 0.0, + "score": 0.46 + }, + "transcript_analysis": { + "total_events": 150, + "tool_calls": { + "total": 45, + "bash": 37, + "write": 0, + "edit": 4, + "read": 4 + }, + "wasted_turns": { + "total": 20, + "docs": 6, + "ascii_art": 3, + "server_starts": 11 + }, + "errors_encountered": 0, + "thinking_blocks": 46, + "text_blocks": 10, + "productivity_ratio": 0.56, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0, + "total": 15, + "passed": 0, + "failed": 15, + "report": { + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": false, + "detail": "1 console error(s): Unexpected token '<'" + }, + { + "name": "game_starts", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_left", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_right", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_down", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "rotate", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "line_clear", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "score_changes", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "game_over", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "skipped: page did not load" + } + ], + "summary": { + "total": 15, + "passed": 0, + "failed": 15, + "score": 0 + }, + "gameplay": { + "pieces_placed": 0, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 23 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.406 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json @@ -0,0 +1,117 @@ +{ + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": false, + "detail": "1 console error(s): Unexpected token '<'" + }, + { + "name": "game_starts", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_left", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_right", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_down", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "rotate", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "line_clear", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "score_changes", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "game_over", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "skipped: page did not load" + } + ], + "summary": { + "total": 15, + "passed": 0, + "failed": 15, + "score": 0 + }, + "gameplay": { + "pieces_placed": 0, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 23 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json @@ -46,5 +46,223 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 12, + "code": 9, + "docs": 0, + "unnecessary": 0, + "unnecessary_list": [] + }, + "lines_of_code": 1362, + "dependencies": { + "production": 0, + "dev": 6, + "total": 6 + }, + "complexity": "over-engineered", + "console_logs": 0, + "magic_numbers": { + "count": 24, + "excessive": true + }, + "function_length": { + "count": 67, + "average": 5.8, + "max": 22, + "long_functions": 0 + }, + "max_nesting_depth": 11, + "global_declarations": 22, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 449, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 80, + "source_lines": 893, + "ratio_pct": 9.0 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 6, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 4 + }, + "duplication_percentage": 0.0, + "score": 0.75 + }, + "transcript_analysis": { + "total_events": 35, + "tool_calls": { + "total": 14, + "bash": 13, + "write": 0, + "edit": 0, + "read": 1 + }, + "wasted_turns": { + "total": 0, + "docs": 0, + "ascii_art": 0, + "server_starts": 0 + }, + "errors_encountered": 0, + "thinking_blocks": 3, + "text_blocks": 1, + "productivity_ratio": 1.0, + "self_tested": false, + "score": 1.0 + }, + "gameplay_bot": { + "pass": false, + "score": 0.25, + "total": 16, + "passed": 4, + "failed": 12, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 36, + "height": 72 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": false, + "detail": "could not start game with any mechanism" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 78 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 4, + "failed": 12, + "score": 0.25 + }, + "gameplay": { + "pieces_placed": 188, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 27 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role", + "canvas without aria-label or role", + "canvas without aria-label or role", + "canvas without aria-label or role", + "canvas without aria-label or role", + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 8, + "pass": false + } + } + }, + "score": 0.5535 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json @@ -0,0 +1,133 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 36, + "height": 72 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": false, + "detail": "could not start game with any mechanism" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 78 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 4, + "failed": 12, + "score": 0.25 + }, + "gameplay": { + "pieces_placed": 188, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 27 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role", + "canvas without aria-label or role", + "canvas without aria-label or role", + "canvas without aria-label or role", + "canvas without aria-label or role", + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 8, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json b/results/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json @@ -45,5 +45,218 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 6, + "code": 3, + "docs": 0, + "unnecessary": 0, + "unnecessary_list": [] + }, + "lines_of_code": 1453, + "dependencies": { + "production": 0, + "dev": 6, + "total": 6 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 18, + "excessive": false + }, + "function_length": { + "count": 78, + "average": 7.2, + "max": 32, + "long_functions": 0 + }, + "max_nesting_depth": 9, + "global_declarations": 9, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 99.6, + "camel_case": 443, + "snake_case": 2 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 61, + "source_lines": 1066, + "ratio_pct": 5.7 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 4 + }, + "duplication_percentage": 0.0, + "score": 0.9 + }, + "transcript_analysis": { + "total_events": 52, + "tool_calls": { + "total": 16, + "bash": 12, + "write": 0, + "edit": 1, + "read": 3 + }, + "wasted_turns": { + "total": 0, + "docs": 0, + "ascii_art": 0, + "server_starts": 0 + }, + "errors_encountered": 0, + "thinking_blocks": 7, + "text_blocks": 9, + "productivity_ratio": 1.0, + "self_tested": true, + "score": 1.0 + }, + "gameplay_bot": { + "pass": false, + "score": 0.63, + "total": 16, + "passed": 10, + "failed": 6, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 40, + "height": 80 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "visual change detected after hard drop" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "visual change suggests new piece spawned" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "game still responding after 10 piece drops" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": true, + "detail": "score changed from 196 to 264" + }, + { + "name": "game_over", + "pass": false, + "detail": "could not trigger or detect game over" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 78 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 10, + "failed": 6, + "score": 0.63 + }, + "gameplay": { + "pieces_placed": 188, + "lines_cleared": 1, + "max_score_observed": 36, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 29 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 3, + "pass": false + } + } + }, + "score": 0.722 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=high_human_language=es_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json @@ -0,0 +1,128 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 40, + "height": 80 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "visual change detected after hard drop" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "visual change suggests new piece spawned" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "game still responding after 10 piece drops" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": true, + "detail": "score changed from 196 to 264" + }, + { + "name": "game_over", + "pass": false, + "detail": "could not trigger or detect game over" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 78 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 10, + "failed": 6, + "score": 0.63 + }, + "gameplay": { + "pieces_placed": 188, + "lines_cleared": 1, + "max_score_observed": 36, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 29 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 3, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json b/results/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json @@ -45,5 +45,219 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 18, + "code": 4, + "docs": 8, + "unnecessary": 2, + "unnecessary_list": [ + "FEATURES.md", + "README.md" + ] + }, + "lines_of_code": 1114, + "dependencies": { + "production": 0, + "dev": 2, + "total": 2 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 41, + "excessive": true + }, + "function_length": { + "count": 49, + "average": 5.1, + "max": 18, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 10, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 612, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 28, + "source_lines": 923, + "ratio_pct": 3.0 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 3, + "files_with_logic": 3, + "files_with_both": 3 + }, + "html_validation": { + "valid": false, + "errors": 2 + }, + "duplication_percentage": 0.0, + "score": 0.65 + }, + "transcript_analysis": { + "total_events": 131, + "tool_calls": { + "total": 36, + "bash": 27, + "write": 0, + "edit": 4, + "read": 5 + }, + "wasted_turns": { + "total": 16, + "docs": 4, + "ascii_art": 3, + "server_starts": 9 + }, + "errors_encountered": 0, + "thinking_blocks": 37, + "text_blocks": 18, + "productivity_ratio": 0.56, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.69, + "total": 16, + "passed": 11, + "failed": 5, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "z", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "rotated: [] failed: [other, unknown, I] (tested 3 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "no score element found and no number changed" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 28s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 11, + "failed": 5, + "score": 0.69 + }, + "gameplay": { + "pieces_placed": 210, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 28, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 28 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } + } + }, + "score": 0.6155 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json @@ -0,0 +1,126 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "z", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "rotated: [] failed: [other, unknown, I] (tested 3 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "no score element found and no number changed" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 28s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 11, + "failed": 5, + "score": 0.69 + }, + "gameplay": { + "pieces_placed": 210, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 28, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 28 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role" + ], + "issue_count": 1, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json b/results/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json @@ -14,8 +14,8 @@ }, { "name": "build_succeeds", - "pass": true, - "detail": "npm run build completed successfully" + "pass": false, + "detail": "npm run build failed" }, { "name": "typescript_compiles", @@ -23,7 +23,7 @@ "detail": "TypeScript files found but no tsconfig.json" } ], - "score": 0.75 + "score": 0.5 }, "functional": { "pass": false, @@ -46,5 +46,219 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 15, + "code": 3, + "docs": 9, + "unnecessary": 1, + "unnecessary_list": [ + "README.md" + ] + }, + "lines_of_code": 1206, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 6, + "excessive": false + }, + "function_length": { + "count": 59, + "average": 7.0, + "max": 30, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 12, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 668, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 48, + "source_lines": 809, + "ratio_pct": 5.9 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 2 + }, + "duplication_percentage": 0.0, + "score": 0.8 + }, + "transcript_analysis": { + "total_events": 122, + "tool_calls": { + "total": 30, + "bash": 24, + "write": 0, + "edit": 3, + "read": 3 + }, + "wasted_turns": { + "total": 18, + "docs": 4, + "ascii_art": 4, + "server_starts": 10 + }, + "errors_encountered": 0, + "thinking_blocks": 31, + "text_blocks": 27, + "productivity_ratio": 0.4, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.44, + "total": 16, + "passed": 7, + "failed": 9, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "space", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via space" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 85 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 7, + "failed": 9, + "score": 0.44 + }, + "gameplay": { + "pieces_placed": 195, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 29 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.51 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "space", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via space" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 85 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 7, + "failed": 9, + "score": 0.44 + }, + "gameplay": { + "pieces_placed": 195, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 29 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json b/results/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json @@ -46,5 +46,221 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 15, + "code": 5, + "docs": 7, + "unnecessary": 3, + "unnecessary_list": [ + "FEATURES.md", + "server.js", + "README.md" + ] + }, + "lines_of_code": 1360, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 3, + "magic_numbers": { + "count": 36, + "excessive": true + }, + "function_length": { + "count": 46, + "average": 6.9, + "max": 31, + "long_functions": 0 + }, + "max_nesting_depth": 14, + "global_declarations": 19, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 713, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 23, + "source_lines": 902, + "ratio_pct": 2.5 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 5 + }, + "duplication_percentage": 0.0, + "score": 0.49 + }, + "transcript_analysis": { + "total_events": 96, + "tool_calls": { + "total": 24, + "bash": 21, + "write": 0, + "edit": 0, + "read": 3 + }, + "wasted_turns": { + "total": 19, + "docs": 4, + "ascii_art": 4, + "server_starts": 11 + }, + "errors_encountered": 0, + "thinking_blocks": 25, + "text_blocks": 19, + "productivity_ratio": 0.21, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.44, + "total": 16, + "passed": 7, + "failed": 9, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 50, + "height": 100 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 85 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 7, + "failed": 9, + "score": 0.44 + }, + "gameplay": { + "pieces_placed": 195, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 33 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.4575 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 50, + "height": 100 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "could not verify piece locking at bottom" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "could not detect new piece at top" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 85 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 7, + "failed": 9, + "score": 0.44 + }, + "gameplay": { + "pieces_placed": 195, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 33 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json b/results/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json @@ -1,6 +1,6 @@ { "structural": { - "pass": false, + "pass": true, "checks": [ { "name": "entry_point_exists", @@ -19,11 +19,11 @@ }, { "name": "typescript_compiles", - "pass": false, - "detail": "tsc --noEmit failed" + "pass": true, + "detail": "tsc --noEmit passed" } ], - "score": 0.75 + "score": 1.0 }, "functional": { "pass": false, @@ -46,5 +46,217 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 6, + "code": 3, + "docs": 0, + "unnecessary": 0, + "unnecessary_list": [] + }, + "lines_of_code": 1625, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 74, + "excessive": true + }, + "function_length": { + "count": 81, + "average": 7.9, + "max": 31, + "long_functions": 0 + }, + "max_nesting_depth": 10, + "global_declarations": 22, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 99.3, + "camel_case": 593, + "snake_case": 4 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 120, + "source_lines": 1273, + "ratio_pct": 9.4 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 4 + }, + "duplication_percentage": 0.0, + "score": 0.85 + }, + "transcript_analysis": { + "total_events": 28, + "tool_calls": { + "total": 10, + "bash": 9, + "write": 0, + "edit": 0, + "read": 1 + }, + "wasted_turns": { + "total": 0, + "docs": 0, + "ascii_art": 0, + "server_starts": 0 + }, + "errors_encountered": 0, + "thinking_blocks": 2, + "text_blocks": 3, + "productivity_ratio": 1.0, + "self_tested": false, + "score": 1.0 + }, + "gameplay_bot": { + "pass": false, + "score": 0.94, + "total": 16, + "passed": 15, + "failed": 1, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "x", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 16 -> 44" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "no score element found and no number changed" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 79 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 130, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 27 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.6725 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=none_effort=max_human_language=en_language=typescript_linter=on_max_budget=low_model=sonnet_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "x", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 16 -> 44" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "no score element found and no number changed" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 79 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 130, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 27 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json b/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json @@ -45,5 +45,220 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 9, + "code": 3, + "docs": 3, + "unnecessary": 1, + "unnecessary_list": [ + "README.md" + ] + }, + "lines_of_code": 1150, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 12, + "excessive": false + }, + "function_length": { + "count": 60, + "average": 6.3, + "max": 33, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 12, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 509, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 34, + "source_lines": 770, + "ratio_pct": 4.4 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 1 + }, + "duplication_percentage": 0.0, + "score": 0.8 + }, + "transcript_analysis": { + "total_events": 85, + "tool_calls": { + "total": 22, + "bash": 14, + "write": 0, + "edit": 3, + "read": 5 + }, + "wasted_turns": { + "total": 6, + "docs": 2, + "ascii_art": 1, + "server_starts": 3 + }, + "errors_encountered": 0, + "thinking_blocks": 23, + "text_blocks": 13, + "productivity_ratio": 0.73, + "self_tested": true, + "score": 0.85 + }, + "gameplay_bot": { + "pass": false, + "score": 0.69, + "total": 16, + "passed": 11, + "failed": 5, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 240, + "height": 400 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "x", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 26s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 11, + "failed": 5, + "score": 0.69 + }, + "gameplay": { + "pieces_placed": 210, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 26, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 43 + }, + "accessibility": { + "issues": [ + "no headings found", + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 3, + "pass": false + } + } + }, + "score": 0.673 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json @@ -0,0 +1,128 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 240, + "height": 400 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "x", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "could not detect any piece rotations" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "no change detected after hard drop key" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "grid did not accumulate filled cells" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 26s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 11, + "failed": 5, + "score": 0.69 + }, + "gameplay": { + "pieces_placed": 210, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 26, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 43 + }, + "accessibility": { + "issues": [ + "no headings found", + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 3, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json b/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json @@ -1,6 +1,6 @@ { "structural": { - "pass": true, + "pass": false, "checks": [ { "name": "entry_point_exists", @@ -19,11 +19,11 @@ }, { "name": "typescript_compiles", - "pass": true, - "detail": "tsc --noEmit passed" + "pass": false, + "detail": "tsc --noEmit failed" } ], - "score": 1.0 + "score": 0.75 }, "functional": { "pass": false, @@ -45,5 +45,216 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 9, + "code": 3, + "docs": 3, + "unnecessary": 1, + "unnecessary_list": [ + "README.md" + ] + }, + "lines_of_code": 1102, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 26, + "excessive": true + }, + "function_length": { + "count": 49, + "average": 7.1, + "max": 24, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 10, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 502, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 40, + "source_lines": 733, + "ratio_pct": 5.5 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 9 + }, + "duplication_percentage": 0.0, + "score": 0.75 + }, + "transcript_analysis": { + "total_events": 98, + "tool_calls": { + "total": 30, + "bash": 19, + "write": 0, + "edit": 3, + "read": 8 + }, + "wasted_turns": { + "total": 5, + "docs": 1, + "ascii_art": 0, + "server_starts": 4 + }, + "errors_encountered": 0, + "thinking_blocks": 31, + "text_blocks": 2, + "productivity_ratio": 0.83, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.94, + "total": 16, + "passed": 15, + "failed": 1, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "z", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "game still responding after 10 piece drops" + }, + { + "name": "line_clear", + "pass": true, + "detail": "8 line(s) cleared during AI play" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 83 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 124, + "lines_cleared": 38, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 25 + }, + "accessibility": { + "issues": [], + "issue_count": 0, + "pass": true + } + } + }, + "score": 0.6405 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json @@ -0,0 +1,124 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "z", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "game still responding after 10 piece drops" + }, + { + "name": "line_clear", + "pass": true, + "detail": "8 line(s) cleared during AI play" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 83 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 15, + "failed": 1, + "score": 0.94 + }, + "gameplay": { + "pieces_placed": 124, + "lines_cleared": 38, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 25 + }, + "accessibility": { + "issues": [], + "issue_count": 0, + "pass": true + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json b/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json @@ -46,5 +46,219 @@ }, "score": 0.33 }, - "score": 0.228 + "code_analysis": { + "files": { + "total": 13, + "code": 4, + "docs": 6, + "unnecessary": 1, + "unnecessary_list": [ + "README.md" + ] + }, + "lines_of_code": 1312, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 40, + "excessive": true + }, + "function_length": { + "count": 72, + "average": 5.1, + "max": 17, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 12, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 626, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 46, + "source_lines": 862, + "ratio_pct": 5.3 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 14 + }, + "duplication_percentage": 0.0, + "score": 0.75 + }, + "transcript_analysis": { + "total_events": 124, + "tool_calls": { + "total": 38, + "bash": 25, + "write": 0, + "edit": 5, + "read": 8 + }, + "wasted_turns": { + "total": 13, + "docs": 3, + "ascii_art": 1, + "server_starts": 9 + }, + "errors_encountered": 0, + "thinking_blocks": 40, + "text_blocks": 3, + "productivity_ratio": 0.66, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.88, + "total": 16, + "passed": 14, + "failed": 2, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 240, + "height": 480 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "x", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 20 -> 47" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [164] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 29s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 14, + "failed": 2, + "score": 0.88 + }, + "gameplay": { + "pieces_placed": 151, + "lines_cleared": 1, + "max_score_observed": 214, + "play_duration_seconds": 29, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 36 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } + } + }, + "score": 0.5665 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=high_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json @@ -0,0 +1,127 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 240, + "height": 480 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "x", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [other] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 20 -> 47" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [164] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 29s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 14, + "failed": 2, + "score": 0.88 + }, + "gameplay": { + "pieces_placed": 151, + "lines_cleared": 1, + "max_score_observed": 214, + "play_duration_seconds": 29, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 36 + }, + "accessibility": { + "issues": [ + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 2, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json b/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/eval_results.json @@ -1,6 +1,6 @@ { "structural": { - "pass": true, + "pass": false, "checks": [ { "name": "entry_point_exists", @@ -19,11 +19,11 @@ }, { "name": "typescript_compiles", - "pass": true, - "detail": "tsc --noEmit passed" + "pass": false, + "detail": "tsc --noEmit failed" } ], - "score": 1.0 + "score": 0.75 }, "functional": { "pass": false, @@ -45,5 +45,222 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 13, + "code": 3, + "docs": 6, + "unnecessary": 3, + "unnecessary_list": [ + "FEATURES.md", + "README.md", + "IMPLEMENTATION.md" + ] + }, + "lines_of_code": 1259, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 0, + "magic_numbers": { + "count": 10, + "excessive": false + }, + "function_length": { + "count": 73, + "average": 5.2, + "max": 13, + "long_functions": 0 + }, + "max_nesting_depth": 10, + "global_declarations": 14, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 771, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 32, + "source_lines": 869, + "ratio_pct": 3.7 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 2, + "files_with_logic": 2, + "files_with_both": 2 + }, + "html_validation": { + "valid": false, + "errors": 2 + }, + "duplication_percentage": 0.0, + "score": 0.6 + }, + "transcript_analysis": { + "total_events": 86, + "tool_calls": { + "total": 22, + "bash": 20, + "write": 0, + "edit": 0, + "read": 2 + }, + "wasted_turns": { + "total": 17, + "docs": 5, + "ascii_art": 3, + "server_starts": 9 + }, + "errors_encountered": 0, + "thinking_blocks": 23, + "text_blocks": 14, + "productivity_ratio": 0.23, + "self_tested": true, + "score": 0.85 + }, + "gameplay_bot": { + "pass": false, + "score": 0.75, + "total": 16, + "passed": 12, + "failed": 4, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [unknown] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 29 -> 66" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 26s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 12, + "failed": 4, + "score": 0.75 + }, + "gameplay": { + "pieces_placed": 156, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 26, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 31 + }, + "accessibility": { + "issues": [ + "no headings found", + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 3, + "pass": false + } + } + }, + "score": 0.604 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json b/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run1/gameplay-bot-report.json @@ -0,0 +1,128 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "click_canvas", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via click_canvas" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "piece did not move in 5 seconds" + }, + { + "name": "move_left", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_right", + "pass": false, + "detail": "no change detected after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": true, + "detail": "piece shape changed after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": true, + "detail": "rotated: [unknown] failed: [] (tested 1 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "new piece detected at top of grid" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "grid accumulated cells: 29 -> 66" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 26s, placed 100 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 12, + "failed": 4, + "score": 0.75 + }, + "gameplay": { + "pieces_placed": 156, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 26, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 31 + }, + "accessibility": { + "issues": [ + "no headings found", + "canvas without aria-label or role", + "canvas without aria-label or role" + ], + "issue_count": 3, + "pass": false + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json b/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/eval_results.json @@ -45,5 +45,208 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 16, + "code": 5, + "docs": 6, + "unnecessary": 3, + "unnecessary_list": [ + "FEATURES.md", + "server.js", + "README.md" + ] + }, + "lines_of_code": 1260, + "dependencies": { + "production": 0, + "dev": 5, + "total": 5 + }, + "complexity": "moderate", + "console_logs": 2, + "magic_numbers": { + "count": 26, + "excessive": true + }, + "function_length": { + "count": 44, + "average": 6.9, + "max": 37, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 19, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 100.0, + "camel_case": 543, + "snake_case": 0 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 80, + "source_lines": 810, + "ratio_pct": 9.9 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 3, + "files_with_logic": 3, + "files_with_both": 3 + }, + "html_validation": { + "valid": false, + "errors": 1 + }, + "duplication_percentage": 0.0, + "score": 0.51 + }, + "transcript_analysis": { + "total_events": 101, + "tool_calls": { + "total": 26, + "bash": 22, + "write": 0, + "edit": 1, + "read": 3 + }, + "wasted_turns": { + "total": 12, + "docs": 4, + "ascii_art": 2, + "server_starts": 6 + }, + "errors_encountered": 0, + "thinking_blocks": 27, + "text_blocks": 17, + "productivity_ratio": 0.54, + "self_tested": true, + "score": 0.85 + }, + "gameplay_bot": { + "pass": false, + "score": 0, + "total": 15, + "passed": 0, + "failed": 15, + "report": { + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": false, + "detail": "1 console error(s): Unexpected token 'export'" + }, + { + "name": "game_starts", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_left", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_right", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_down", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "rotate", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "line_clear", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "score_changes", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "game_over", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "skipped: page did not load" + } + ], + "summary": { + "total": 15, + "passed": 0, + "failed": 15, + "score": 0 + }, + "gameplay": { + "pieces_placed": 0, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 22 + }, + "accessibility": { + "issues": [], + "issue_count": 0, + "pass": true + } + } + }, + "score": 0.5315 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json b/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run2/gameplay-bot-report.json @@ -0,0 +1,114 @@ +{ + "implementation": { + "renderer": "unknown", + "grid_detected": false, + "grid_bounds": null, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "ArrowUp", + "drop": "Space" + }, + "start_mechanism": "unknown", + "score_element_found": false + }, + "tests": [ + { + "name": "game_loads", + "pass": false, + "detail": "1 console error(s): Unexpected token 'export'" + }, + { + "name": "game_starts", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "auto_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_left", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_right", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "move_down", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "rotate", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "hard_drop", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "piece_locks", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "new_piece_spawns", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "multiple_pieces", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "line_clear", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "score_changes", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "game_over", + "pass": false, + "detail": "skipped: page did not load" + }, + { + "name": "playable_30s", + "pass": false, + "detail": "skipped: page did not load" + } + ], + "summary": { + "total": 15, + "passed": 0, + "failed": 15, + "score": 0 + }, + "gameplay": { + "pieces_placed": 0, + "lines_cleared": 0, + "max_score_observed": 0, + "play_duration_seconds": 0, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 22 + }, + "accessibility": { + "issues": [], + "issue_count": 0, + "pass": true + } +} +\ No newline at end of file diff --git a/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json b/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/eval_results.json @@ -45,5 +45,216 @@ }, "score": 0.67 }, - "score": 0.3845 + "code_analysis": { + "files": { + "total": 21, + "code": 11, + "docs": 1, + "unnecessary": 1, + "unnecessary_list": [ + "README.md" + ] + }, + "lines_of_code": 1909, + "dependencies": { + "production": 1, + "dev": 5, + "total": 6 + }, + "complexity": "over-engineered", + "console_logs": 0, + "magic_numbers": { + "count": 27, + "excessive": true + }, + "function_length": { + "count": 105, + "average": 6.9, + "max": 22, + "long_functions": 0 + }, + "max_nesting_depth": 12, + "global_declarations": 10, + "naming": { + "dominant_style": "camelCase", + "consistency_pct": 99.3, + "camel_case": 874, + "snake_case": 6 + }, + "error_handling": { + "try_catch_blocks": 0, + "has_error_handling": false + }, + "comments": { + "comment_lines": 96, + "source_lines": 1455, + "ratio_pct": 6.6 + }, + "separation_of_concerns": { + "verdict": "mixed", + "files_with_rendering": 6, + "files_with_logic": 8, + "files_with_both": 5 + }, + "html_validation": { + "valid": false, + "errors": 1 + }, + "duplication_percentage": 0.0, + "score": 0.65 + }, + "transcript_analysis": { + "total_events": 81, + "tool_calls": { + "total": 24, + "bash": 17, + "write": 0, + "edit": 3, + "read": 4 + }, + "wasted_turns": { + "total": 5, + "docs": 1, + "ascii_art": 0, + "server_starts": 4 + }, + "errors_encountered": 0, + "thinking_blocks": 25, + "text_blocks": 3, + "productivity_ratio": 0.79, + "self_tested": false, + "score": 0.75 + }, + "gameplay_bot": { + "pass": false, + "score": 0.81, + "total": 16, + "passed": 13, + "failed": 3, + "report": { + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "x", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "rotated: [] failed: [I, unknown, other] (tested 3 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "visual change suggests new piece spawned" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "game still responding after 10 piece drops" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 82 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 13, + "failed": 3, + "score": 0.81 + }, + "gameplay": { + "pieces_placed": 167, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 18 + }, + "accessibility": { + "issues": [], + "issue_count": 0, + "pass": true + } + } + }, + "score": 0.6275 } \ No newline at end of file diff --git a/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json b/results/runs/tetris_context_file=provided_effort=high_human_language=en_language=typescript_linter=on_max_budget=low_model=haiku_playwright=on_prompt_style=simple_sub_agents=on_tool_edit=on_tool_glob=on_tool_grep=on_tool_read=on_tool_write=on_web_search=on_run3/gameplay-bot-report.json @@ -0,0 +1,124 @@ +{ + "implementation": { + "renderer": "canvas", + "grid_detected": true, + "grid_bounds": { + "x": 0, + "y": 0, + "width": 300, + "height": 600 + }, + "controls": { + "left": "ArrowLeft", + "right": "ArrowRight", + "down": "ArrowDown", + "rotate": "x", + "drop": "Space" + }, + "start_mechanism": "auto", + "score_element_found": true + }, + "tests": [ + { + "name": "game_loads", + "pass": true, + "detail": "no console errors" + }, + { + "name": "game_starts", + "pass": true, + "detail": "started via auto" + }, + { + "name": "auto_drop", + "pass": true, + "detail": "grid state changed after 5s with no input" + }, + { + "name": "move_left", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_right", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "move_down", + "pass": true, + "detail": "grid state changed after key press" + }, + { + "name": "rotate", + "pass": false, + "detail": "no change detected after rotate key" + }, + { + "name": "all_pieces_rotate", + "pass": false, + "detail": "rotated: [] failed: [I, unknown, other] (tested 3 piece types in 60 attempts)" + }, + { + "name": "hard_drop", + "pass": true, + "detail": "piece immediately dropped and new piece appeared" + }, + { + "name": "piece_locks", + "pass": true, + "detail": "filled cells persist at bottom" + }, + { + "name": "new_piece_spawns", + "pass": true, + "detail": "visual change suggests new piece spawned" + }, + { + "name": "multiple_pieces", + "pass": true, + "detail": "game still responding after 10 piece drops" + }, + { + "name": "line_clear", + "pass": true, + "detail": "line cleared via strategic placement" + }, + { + "name": "score_changes", + "pass": false, + "detail": "score did not increase: [0] -> no change after polling" + }, + { + "name": "game_over", + "pass": true, + "detail": "game stopped after stacking to top" + }, + { + "name": "playable_30s", + "pass": true, + "detail": "played for 30s, placed 82 pieces, no crashes" + } + ], + "summary": { + "total": 16, + "passed": 13, + "failed": 3, + "score": 0.81 + }, + "gameplay": { + "pieces_placed": 167, + "lines_cleared": 1, + "max_score_observed": 0, + "play_duration_seconds": 30, + "errors_during_play": 0 + }, + "performance": { + "load_time_ms": 18 + }, + "accessibility": { + "issues": [], + "issue_count": 0, + "pass": true + } +} +\ No newline at end of file

Impressum · Datenschutz