Zero's editing discipline caps the diff ("prefer the smallest change that fully solves the problem") and the scope ("avoid unrelated rewrites, dependency churn"), but nothing curbs over-engineering the solution itself — the common LLM pitfall of adding speculative abstraction, unrequested configurability, or handling for cases that can't occur. A small diff can still be over-built.
Add a short guardrail to the Editing discipline section: solve the problem as posed, nothing the user didn't ask for, and "if a 200-line solution could be 50, rewrite it."
Validated with a before/after eval on 5 over-engineering-prone tasks (config loader, memoize cache, JSON POST, dict validator, CSV reader), each solved under the current rules vs the current rules + the guardrail, then judged for simplicity and correctness:
- 3/5 treatment solutions were simpler, 0 were more complex, 0 broke correctness (avg 9 vs 11 non-blank lines).
- The baseline gold-plated on the cache (an unrequested
wrapper.cache introspection attribute) and the POST (unrequested header-merge configurability); the guardrail versions dropped both while staying correct.
- On trivial tasks (word count, leap year) it's a harmless no-op — the baseline already produces minimal solutions there.
Zero's editing discipline caps the diff ("prefer the smallest change that fully solves the problem") and the scope ("avoid unrelated rewrites, dependency churn"), but nothing curbs over-engineering the solution itself — the common LLM pitfall of adding speculative abstraction, unrequested configurability, or handling for cases that can't occur. A small diff can still be over-built.
Add a short guardrail to the Editing discipline section: solve the problem as posed, nothing the user didn't ask for, and "if a 200-line solution could be 50, rewrite it."
Validated with a before/after eval on 5 over-engineering-prone tasks (config loader, memoize cache, JSON POST, dict validator, CSV reader), each solved under the current rules vs the current rules + the guardrail, then judged for simplicity and correctness:
wrapper.cacheintrospection attribute) and the POST (unrequested header-merge configurability); the guardrail versions dropped both while staying correct.