Start With Simple Words
A calm first pass that explains recursive self improvement with short sentences and clear pictures.
The idea in one paragraph
A system studies its own work and keeps what proves useful. It starts with a small task and a clear goal. It tries one change at a time. It tests the change with care. It keeps the win and removes the loss. The next round begins with a stronger method.
Recursion enters when the method itself improves. The system does not only fix answers. It also fixes prompts, tools, checks, memory, and workflow. Better workflow creates better answers. Better answers suggest better workflow edits. The cycle feeds itself while safety rules stay fixed.
A student story
Think of a student with an answer key. The student writes an answer and checks it. Good habits stay. Weak habits leave. The next test goes a little better.
Now replace the student with a coding agent. Replace homework with small tasks. Replace the answer key with tests and judges. The agent writes code. Tests score the code. A separate judge reviews the change. Good changes stay on the mainline. Weak changes return to the archive with a reason.
What makes it count
One rewrite is only refinement. A full loop needs memory across cycles. A lesson from round one must change round two in a visible way. A score must confirm the gain on fresh checks.
A grounded check matters more than praise. A test that can fail is worth more than a judge that always agrees. A small kept win matters more than a large claimed win. This atlas treats proof as the scarce resource.
Plain words for core terms
| Term | Plain meaning | Where it lives |
|---|---|---|
| Trace | A saved record of steps, outputs, and costs | Recorder and memory |
| Score | A test plus judge result that can be compared | Evaluator |
| Lesson | A short note that names pattern, cause, and repair | Reflector |
| Patch | One small code change plus one matching test | Proposer |
| Verdict | Accept or reject with a clear reason | Gate and judge |
| Archive | A home for rejected tries with reasons kept | Memory |
Verdict rule in plain code
def review_candidate(files, change_count, all_passed, quality_gain):
if len(files) == 0:
return ("reject", "empty patch")
if change_count > 3:
return ("reject", "change too large")
if all_passed is False:
return ("reject", "full suite failed")
if quality_gain < 0:
return ("reject", "quality regressed")
return ("accept", "full suite passed")