Try Chat Free Docs Pricing AI Analysis Repo Insights Free Tools About Blog
Sign in Get started free
< Back to blog
Research Velona Team ·24 October 2026 ·8 min read

Beyond the Model's Ceiling: How to Design Open-Ended AI Systems That Keep Finding Solutions

Review copy. The full designed version, with diagrams, charts and FAQ schema, is in open-ended-systems.html and should be pasted in through the admin console before publishing.

"If the model cannot solve it, it cannot be solved" describes a design choice, not a law of nature. A system that asks one model once has a ceiling exactly as high as that model. A system that can check answers, try again differently, use tools, break problems down, call a stronger model, remember what worked and hand off to a human has no single ceiling. With automatic checking, a mid-sized open model went from 15.9% to 56% on real GitHub issues. A self-improving coding agent climbed from 20% to 50% on SWE-bench. An evolutionary system built on Gemini recovers 0.7% of Google's global compute with a scheduling rule it found.

Closed systems versus open-ended systems

A closed system sends one prompt to one model and keeps whatever comes back, so its ceiling is the model. An open-ended system treats the first answer as a draft, checks it against something outside the model, and when it fails, changes strategy. Its ceiling is set by its budget and the quality of its verifier.

The principle underneath: checking is easier than solving

A compiler, a test suite, a proof checker or a database state check does not need to be as smart as the model, but it lets a system discard bad answers and keep searching. Brown et al.'s Large Language Monkeys found that coverage, the share of problems solved by at least one sample, rose over four orders of magnitude of samples, and that DeepSeek-Coder-V2 beat the single-attempt state of the art of 43% by reaching 56% with 250 checked samples. Where answers could not be checked automatically, majority voting and reward models plateaued after a few hundred samples. The verifier set the limit. Our cheap-LLM agent benchmark shows the same: best-of-five success spanned only 85% to 92% across 19 models.

Six levers that lift a system above its model

LeverKey evidenceWorks whenMain cost
1. Resample and verify15.9% → 56% with 250 checked samplesA cheap checker existsLinear in attempts
2. Execute, do not guessUp to 12% higher accuracy with test feedbackCode, maths, data, APIsSandbox, latency
3. Decompose and planAgents fail most on silent tool errorsLong multi-step tasksError compounding
4. Escalate up a model ladder45.8% cheaper cascadeDifficulty variesRouter mistakes
5. Remember and accumulate3.3× more items with a skill libraryTasks repeatMemory curation
6. Evolve a populationNew maths and production resultsA numeric score existsMany evaluations

Lever 1: resample and verify

Try again with some diversity and check each attempt. It widens what the model can reach, but does not extend it.

Lever 2: execute, do not guess

Run code, query data and read real errors. Our context engineering review covers Self-Debugging (up to 12% higher accuracy with test feedback) and SWE-agent (11% to 18% from better tool output alone).

Lever 3: decompose and plan

Smaller checked steps help only if each step fails loudly. PlanBench-XL, in our 2026 research review, found agents struggled most with silent tool failures.

Lever 4: escalate up a model ladder

PayPal's RLM-Cascade sent simple turns to DeepSeek and hard ones to Claude Opus 4.8, cutting API cost 45.8% and median latency 1.83×, passing 20 of 20 test tasks against 19 for Opus alone. Escalation should carry the full history forward.

Lever 5: remember and accumulate

Voyager stored verified Minecraft skills as code in a library, found 3.3× more unique items and reached milestones up to 15.3× faster, and its library transferred to a new world. ACE's growing playbook beat baselines by 10.6% on agent benchmarks.

Lever 6: evolve a population

Keep an archive of candidates, mutate promising ones with a model, score every child with an evaluator, and repeat.

SystemResultVerifier
FunSearch (Nature 2023)New cap set constructions, including size 512 in dimension 8, and better bin-packing heuristicsProgram that checks constructions
AlphaEvolve (2025)48-multiplication 4×4 complex matrix algorithm, 14 matrix algorithms improved, beat the best known answer on 20% of 50+ open problemsAutomated evaluators
AlphaEvolve in productionBorg heuristic recovering 0.7% of Google's compute, a Gemini kernel 23% fasterSimulators and benchmarks
Darwin Gödel Machine (ICLR 2026)SWE-bench 20% → 50%, Polyglot 14.2% → 30.7%Coding benchmarks

The last rung: a human, with a good handoff

When the budget is spent or the specification is unclear, hand off with every approach tried and the latest failure, so a person starts where the system stopped.

A reference architecture

  1. Task arrives with a budget in rupees and steps.
  2. Define the verifier first: tests, schema or state check, read-only to the model.
  3. Attempt with a cheap model and tools, with lessons from memory in the prompt.
  4. If the verifier passes, deliver and save the lesson.
  5. If not, diagnose: wrong approach, too big, too hard or bad specification.
  6. Then retry differently, decompose, escalate with history, or hand off once the budget is spent.

Where open-ended systems break

The economics: cost per solved task in rupees

One attempt = 12 steps × (8,000 input + 400 output tokens), Velona prices on 24 October 2026
DeepSeek V4 Flash: ≈ ₹2.11 per attempt
Claude Opus 4.8:   ≈ ₹62.16 per attempt

Assumed Flash success: 69.1% after 1 try, 80% after 2, 85% after 3
Expected Flash attempts = 1.51 → ₹3.18
Escalate remaining 15% to Opus: ₹9.32
Expected cost per task ≈ ₹12.51, overall success ≈ 91%
Cost per solved task ≈ ₹13.75
ApproachSolvedCost per solved task
Opus 4.8, single attempt69.1%₹89.96
Open-ended ladder~91%₹13.75
Flash, single attempt69.1%₹3.05

Single-attempt rates come from APIFlow-Bench 20-step chains. Ladder rates after the first attempt are illustrative. See live prices for DeepSeek V4 Flash and Claude Opus 4.8, and our model router tutorial.

Build it: an open-ended loop in Python

"""open_loop.py: generate, verify, escalate, remember, hand off."""
import json
import os
import pathlib
import subprocess
import tempfile

from openai import OpenAI

client = OpenAI(api_key=os.environ["VELONA_API_KEY"], base_url="https://velona.in/v1")

LADDER = [  # (model, attempts): cheap first, strong last
    ("deepseek/deepseek-v4-flash", 3),
    ("anthropic/claude-opus-4.8", 1),
]
LESSONS = pathlib.Path("lessons.md")


def verify(code: str, test_file: str) -> tuple[bool, str]:
    with tempfile.TemporaryDirectory() as folder:
        pathlib.Path(folder, "solution.py").write_text(code)
        pathlib.Path(folder, "test_solution.py").write_text(pathlib.Path(test_file).read_text())
        run = subprocess.run(["python", "-m", "pytest", "-q", "-x"], cwd=folder,
                             capture_output=True, text=True, timeout=120)
    return run.returncode == 0, (run.stdout + run.stderr)[-1500:]


def attempt(model: str, task: str, history: list) -> str:
    lessons = LESSONS.read_text() if LESSONS.exists() else "none yet"
    messages = [
        {"role": "system", "content": "Write solution.py in one python code block. "
         "Never special-case test inputs.\nLessons from past runs:\n" + lessons},
        {"role": "user", "content": task},
    ]
    for code, log in history[-2:]:
        messages.append({"role": "assistant", "content": f"```python\n{code}\n```"})
        messages.append({"role": "user", "content": f"Tests failed:\n{log}\nTry a different approach."})
    reply = client.chat.completions.create(model=model, messages=messages, temperature=0.8)
    text = reply.choices[0].message.content
    return text.split("```python")[-1].split("```")[0].strip()


def solve(task: str, test_file: str) -> dict:
    history = []
    for model, tries in LADDER:
        for _ in range(tries):
            code = attempt(model, task, history)
            passed, log = verify(code, test_file)
            if passed:
                if history:
                    first_error = history[0][1].strip().splitlines()[-1:] or ["unknown"]
                    with LESSONS.open("a") as notes:
                        notes.write(f"- {task[:60]}: first attempt failed with {first_error[0]}\n")
                return {"status": "solved", "model": model, "attempts": len(history) + 1}
            history.append((code, log))
    packet = {"status": "needs_human", "task": task, "attempts": len(history),
              "last_failure": history[-1][1] if history else ""}
    pathlib.Path("handoff.json").write_text(json.dumps(packet, indent=2))
    return packet

A checklist for open-ended design

  1. Write the verifier first.
  2. Protect it: read-only tests, held-out cases, grade final state.
  3. Make tool failures loud.
  4. Diagnose, then pick a lever.
  5. Carry history up the ladder.
  6. Keep a lessons file and append to it.
  7. Set a budget per task.
  8. Measure cost per solved task.

Limits of this analysis

Evidence comes mostly from domains with strong verifiers. AlphaEvolve's production gains are reported by Google. The rupee example uses illustrative later-attempt rates. Self-modifying agents need sandboxes, budgets and human oversight.

Frequently asked questions

What is an open-ended AI system?

A system that checks answers against a verifier and, when they fail, retries differently, decomposes, escalates, reuses lessons or hands off to a human.

Can an AI system solve problems its model cannot?

Often, if answers can be verified, as Large Language Monkeys, FunSearch and AlphaEvolve show.

Why is a verifier so important?

Checking is easier than solving, so a verifier lets a system discard wrong attempts and keep searching.

What is verifier or reward hacking?

Satisfying the checker without solving the task. Read-only tests and grading on final state reduce it.

Is an open-ended system more expensive?

Per call yes, per solved task often no: about ₹13.75 against about ₹90 in our example.

When should an AI system hand off to a human?

When the budget is spent, the verifier cannot judge, or the specification is unclear.

Sources