Skip to content

Tell the model what counts as checking its work - #100

Merged
nasser1941 merged 1 commit into
mainfrom
feat/verification
Oct 10, 2026
Merged

nasser1941 merged 1 commit into
mainfrom
feat/verification

Conversation

@nasser1941

Copy link
Copy Markdown
Owner

Closes #93.

In the dahua session, the model marked "Test the fix by running the app" as done after only py_compile and an import. It changed the window's layout several times without seeing it.

What changes

  • System prompt: a short "Verifying your work" section replaces the two old bullets about verifying ("at least a syntax check" and "Never claim something works…"). It says:
    • a syntax check or an import only shows that code loads, so run what you changed the way it will be used;
    • to fix a bug, reproduce each problem the user reports first, then run the same checks to show they're gone;
    • check what you can't see (a GUI, a web page, a layout) without a screen: QT_QPA_PLATFORM=offscreen, a headless browser, or a script that prints sizes and positions or renders an image. The image part says "you look at with view_image" only when a vision model is available, so the model isn't told about a tool it doesn't have;
    • never claim something works, mark a todo done, or call it tested without having run it; say what you couldn't check, and what the user should look for.
  • lcode bench --tasks runtime-bug (lcode.bench_runtime): a camera wall whose window grows with every video frame and can't be made smaller again.
    • The cause is the dahua bug, in plain Python: the minimum size comes from the frame, and the frame is scaled to the whole cell, status bar included.
    • Reading the code suggests band-aids. Fixing only the scaling, or ignoring the minimum sizes, fails part of the hidden test; the test checks this for each band-aid.
    • It isn't in the default set, like find-concept.
  • Docs: how-it-works ("Checking its own work"), bench, and the CHANGELOG.

Measured (qwen3.6-35b, 32K, 12 GB laptop)

Old prompt New prompt
runtime-bug, reasoning on, 4 rounds 0/4 (1 band-aid, 3 timeouts at 300 s) 0/4 (2 band-aids, 2 timeouts)
runtime-bug, --no-think, 5 rounds 0/5 0/5 (1 timeout)
ran the program before its first edit (--no-think logs) 3/5 4/5
default 8 tasks 8/8 (docs) 8/8, 5 min 02 s

To be honest about it:

  • No pass-rate change. The guidance doesn't change the pass rate on runtime-bug; the task is too hard for this model either way.
  • What did change. With the new prompt, the model ran simulate.py first in every finished reasoning-on round. It reported the measured window size instead of claiming success: "stays at a stable size (2304×1031)".
  • What didn't. It still left the second complaint, that the window can't be made smaller, unchecked.
  • No regression. The default tasks are unchanged.
  • Why ship it anyway. The guidance is cheap (about 200 tokens), and the task stays as a harder benchmark for stronger models.

🤖 Generated with Claude Code

Small models call work done after a syntax check. The system prompt now
says: run what you changed the way it will be used, reproduce each
reported problem before fixing it, check what you can't see (GUIs, web
pages, layouts) without a screen, for example with Qt's offscreen
platform, a headless browser or a rendered image (view_image when there
is one), and never call something tested or done without running it.

lcode bench --tasks runtime-bug adds a bug that shows only when the code
runs: a camera wall whose window grows with every frame. It isn't in the
default set.

Closes #93

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@nasser1941
nasser1941 merged commit 910e31b into main Oct 10, 2026
12 checks passed
@nasser1941
nasser1941 deleted the feat/verification branch October 10, 2026 16:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Verification: test what the model can't see before calling it done

1 participant