Remove experimental TDD step configs
diff --git a/gpt_engineer/preprompts/fix_code b/gpt_engineer/preprompts/fix_code
deleted file mode 100644
index 54efcb243d..0000000000
--- a/gpt_engineer/preprompts/fix_code
+++ /dev/null
@@ -1,5 +0,0 @@
-You are a super smart developer.
-You have been tasked with fixing a program and making it work according to the best of your knowledge.
-There might be placeholders in the code you have to fill in.
-You provide fully functioning, well formatted code with few comments, that works and has no bugs.
-Please return the full new code in the same format.
diff --git a/gpt_engineer/preprompts/spec b/gpt_engineer/preprompts/spec
deleted file mode 100644
index 7be78bd564..0000000000
--- a/gpt_engineer/preprompts/spec
+++ /dev/null
@@ -1,10 +0,0 @@
-You are a super smart developer. You have been asked to make a specification for a program.
-
-Think step by step to make sure we get a high quality specification and we don't miss anything.
-First, be super explicit about what the program should do, which features it should have
-and give details about anything that might be unclear. **Don't leave anything unclear or undefined.**
-
-Second, lay out the names of the core classes, functions, methods that will be necessary,
-as well as a quick comment on their purpose.
-
-This specification will be used later as the basis for the implementation.
diff --git a/gpt_engineer/preprompts/unit_tests b/gpt_engineer/preprompts/unit_tests
deleted file mode 100644
index 4c9534b4aa..0000000000
--- a/gpt_engineer/preprompts/unit_tests
+++ /dev/null
@@ -1,3 +0,0 @@
-You are a super smart developer using Test Driven Development to write tests according to a specification.
-
-Please generate tests based on the above specification. The tests should be as simple as possible, but still cover all the functionality.
diff --git a/gpt_engineer/steps.py b/gpt_engineer/steps.py
index 11b1b0d7dc..606c71dbf9 100644
--- a/gpt_engineer/steps.py
+++ b/gpt_engineer/steps.py
@@ -57,9 +57,6 @@ def curr_fn() -> str:
     return inspect.stack()[1].function
 
 
-# All steps below have the Step signature
-
-
 def lite_gen(ai: AI, dbs: DBs) -> List[Message]:
     """Run the AI on only the main prompt and save the results"""
     messages = ai.start(
@@ -118,41 +115,6 @@ def clarify(ai: AI, dbs: DBs) -> List[Message]:
     return messages
 
 
-def gen_spec(ai: AI, dbs: DBs) -> List[Message]:
-    """
-    Generate a spec from the main prompt + clarifications and save the results to
-    the workspace
-    """
-    messages = [
-        ai.fsystem(setup_sys_prompt(dbs)),
-        ai.fsystem(f"Instructions: {dbs.input['prompt']}"),
-    ]
-
-    messages = ai.next(messages, dbs.preprompts["spec"], step_name=curr_fn())
-
-    dbs.memory["specification"] = messages[-1].content.strip()
-
-    return messages
-
-
-def gen_unit_tests(ai: AI, dbs: DBs) -> List[Message]:
-    """
-    Generate unit tests based on the specification, that should work.
-    """
-    messages = [
-        ai.fsystem(setup_sys_prompt(dbs)),
-        ai.fuser(f"Instructions: {dbs.input['prompt']}"),
-        ai.fuser(f"Specification:\n\n{dbs.memory['specification']}"),
-    ]
-
-    messages = ai.next(messages, dbs.preprompts["unit_tests"], step_name=curr_fn())
-
-    dbs.memory["unit_tests"] = messages[-1].content.strip()
-    to_files(dbs.memory["unit_tests"], dbs.workspace)
-
-    return messages
-
-
 def gen_clarified_code(ai: AI, dbs: DBs) -> List[dict]:
     """Takes clarification and generates code"""
     messages = AI.deserialize_messages(dbs.logs[clarify.__name__])
@@ -172,23 +134,6 @@ def gen_clarified_code(ai: AI, dbs: DBs) -> List[dict]:
     return messages
 
 
-def gen_code_after_unit_tests(ai: AI, dbs: DBs) -> List[dict]:
-    """Generates project code after unit tests have been produced"""
-    messages = [
-        ai.fsystem(setup_sys_prompt(dbs)),
-        ai.fuser(f"Instructions: {dbs.input['prompt']}"),
-        ai.fuser(f"Specification:\n\n{dbs.memory['specification']}"),
-        ai.fuser(f"Unit tests:\n\n{dbs.memory['unit_tests']}"),
-    ]
-    messages = ai.next(
-        messages,
-        dbs.preprompts["generate"].replace("FILE_FORMAT", dbs.preprompts["file_format"]),
-        step_name=curr_fn(),
-    )
-    to_files(messages[-1].content.strip(), dbs.workspace)
-    return messages
-
-
 def execute_entrypoint(ai: AI, dbs: DBs) -> List[dict]:
     command = dbs.workspace["run.sh"]
 
@@ -351,22 +296,6 @@ def improve_existing_code(ai: AI, dbs: DBs):
     return messages
 
 
-def fix_code(ai: AI, dbs: DBs):
-    messages = AI.deserialize_messages(dbs.logs[gen_code_after_unit_tests.__name__])
-    code_output = messages[-1].content.strip()
-    messages = [
-        ai.fsystem(setup_sys_prompt(dbs)),
-        ai.fuser(f"Instructions: {dbs.input['prompt']}"),
-        ai.fuser(code_output),
-        ai.fsystem(dbs.preprompts["fix_code"]),
-    ]
-    messages = ai.next(
-        messages, "Please fix any errors in the code above.", step_name=curr_fn()
-    )
-    to_files(messages[-1].content.strip(), dbs.workspace)
-    return messages
-
-
 def human_review(ai: AI, dbs: DBs):
     """Collects and stores human review of the code"""
     review = human_review_input()
@@ -380,8 +309,6 @@ class Config(str, Enum):
     BENCHMARK = "benchmark"
     SIMPLE = "simple"
     LITE = "lite"
-    TDD = "tdd"
-    TDD_PLUS = "tdd+"
     CLARIFY = "clarify"
     RESPEC = "respec"
     EXECUTE_ONLY = "execute_only"
@@ -392,7 +319,6 @@ class Config(str, Enum):
     EVAL_NEW_CODE = "eval_new_code"
 
 
-# Define the steps to run for different configs
 STEPS = {
     Config.DEFAULT: [
         simple_gen,
@@ -419,23 +345,6 @@ class Config(str, Enum):
         gen_entrypoint,
         execute_entrypoint,
     ],
-    Config.TDD: [
-        gen_spec,
-        gen_unit_tests,
-        gen_code_after_unit_tests,
-        gen_entrypoint,
-        execute_entrypoint,
-        human_review,
-    ],
-    Config.TDD_PLUS: [
-        gen_spec,
-        gen_unit_tests,
-        gen_code_after_unit_tests,
-        fix_code,
-        gen_entrypoint,
-        execute_entrypoint,
-        human_review,
-    ],
     Config.USE_FEEDBACK: [use_feedback, gen_entrypoint, execute_entrypoint, human_review],
     Config.EXECUTE_ONLY: [execute_entrypoint],
     Config.EVALUATE: [execute_entrypoint, human_review],
@@ -448,6 +357,7 @@ class Config(str, Enum):
     Config.EVAL_NEW_CODE: [simple_gen],
 }
 
+
 # Future steps that can be added:
 # run_tests_and_fix_files
 # execute_entrypoint_and_fix_files_if_it_results_in_error
diff --git a/tests/test_collect.py b/tests/test_collect.py
index b375e2a139..9859142412 100644
--- a/tests/test_collect.py
+++ b/tests/test_collect.py
@@ -8,8 +8,8 @@
 
 from gpt_engineer.collect import collect_learnings, steps_file_hash
 from gpt_engineer.db import DB, DBs
-from gpt_engineer.learning import extract_learning
-from gpt_engineer.steps import gen_code_after_unit_tests
+from gpt_engineer.learning import collect_consent, extract_learning
+from gpt_engineer.steps import simple_gen
 
 
 def test_collect_learnings(monkeypatch):
@@ -18,7 +18,7 @@ def test_collect_learnings(monkeypatch):
 
     model = "test_model"
     temperature = 0.5
-    steps = [gen_code_after_unit_tests]
+    steps = [simple_gen]
     dbs = DBs(
         DB("/tmp"), DB("/tmp"), DB("/tmp"), DB("/tmp"), DB("/tmp"), DB("/tmp"), DB("/tmp")
     )
@@ -27,11 +27,7 @@ def test_collect_learnings(monkeypatch):
         "feedback": "test feedback",
     }
     code = "this is output\n\nit contains code"
-    dbs.logs = {
-        gen_code_after_unit_tests.__name__: json.dumps(
-            [{"role": "system", "content": code}]
-        )
-    }
+    dbs.logs = {steps[0].__name__: json.dumps([{"role": "system", "content": code}])}
     dbs.workspace = {"all_output.txt": "test workspace\n" + code}
 
     collect_learnings(model, temperature, steps, dbs)

Solves #656 

Kept them on the experimental branch