Improve local verified draft recovery
ober
8efec58660caeed2a2b79f674364aacfa57194c7
--- a/src/jcode/core/verified-run.ss +++ b/src/jcode/core/verified-run.ss @@ -41,7 +41,7 @@ (def default-verified-history-keep-batches 3) (def default-local-verified-history-token-limit 24000) (def default-local-verified-history-keep-batches 2) -(def default-local-verified-max-completion-tokens 4096) +(def default-local-verified-max-completion-tokens 8192) (def default-local-verified-repair-max-completion-tokens 4096) (def (opt-get o key) (let ((p (assoc key o))) (and p (cdr p)))) @@ -374,7 +374,8 @@ (not (current-rejected-ss-draft)) (not (current-pending-ss-create-repair)) (if (current-verified-local-model?) - (>= (current-pre-edit-inspection-count) 2) + (>= (current-pre-edit-inspection-count) + local-pre-edit-inspection-limit) (>= (pre-edit-inspection-total) remote-force-first-edit-inspection-count)) (tool-specs-include? specs "edit") @@ -4505,6 +4506,8 @@ (string-append (format "Jerboa syntax guard rejected ~a: delimiter balance failed: ~a" path report) + (let ((excerpt (balance-report-excerpt content report))) + (if excerpt (string-append "\n\n" excerpt) "")) (or (minimal-balance-autoclose-syntax-hint content path) (minimal-balance-suffix-hint content path) (minimal-balance-autoclose-boundary-hint content path) --- a/test/run.ss +++ b/test/run.ss @@ -3734,8 +3734,8 @@ (check! "verified-run: local edit is automatically verified" result "VERIFIED: exit 0\n")) (let ([observed (reverse caps)]) - (check! "verified-run: local first-draft completion cap is 4k" - (car observed) 4096) + (check! "verified-run: local first-draft completion cap is 8k" + (car observed) 8192) (check! "verified-run: local post-verifier repair cap is 4k" (cadr observed) 4096)) (check! "verified-run: automatic verify avoids a provider round" @@ -4025,8 +4025,8 @@ (check! "verified-run: inspected rejected draft repair verifies" result "VERIFIED: exit 0\n")) (let ([observed (reverse caps)]) - (check! "verified-run: uninspected rejected draft keeps 4k cap" - (cadr observed) 4096) + (check! "verified-run: uninspected rejected draft keeps first-draft cap" + (cadr observed) 8192) (check! "verified-run: inspected rejected draft repair uses 4k cap" (caddr observed) 4096)) (check-pred! "verified-run: inspected missing draft keeps broad write" @@ -7588,6 +7588,54 @@ [else (loop (cdr ys))])))) (safe-delete-test-file! target-path))) + (let* ([vr-dir "/tmp"] + [target "jcode-verified-balance-guard-excerpt.ss"] + [target-path (string-append vr-dir "/" target)] + [bad "(import (jerboa prelude))\n(define (main)\n (displayln \"draft\")))\n"] + [good "(import (jerboa prelude))\n(define (main)\n (displayln \"fixed\"))\n"] + [tool-results '()]) + (safe-delete-test-file! target-path) + (let* ([scope (parse-write-scope target)] + [wf (coding-workflow (string-append "grep -q fixed " target) vr-dir + (list (cons 'write-scope scope) + (cons 'run-aliases? #t)))] + [resp (scripted-responder + (list + (list + (make-wtool-call + "edit" + (list (cons "path" target) + (cons "content" bad)) + #f)) + (list + (make-wtool-call + "edit" + (list (cons "path" target) + (cons "content" good)) + #f)) + (list (make-wtool-call "verify" '() #f)) + (list (make-wtool-call + "done" '(("summary" . "balance-excerpt-ok")) #f))))] + [result (parameterize ((current-write-scope scope)) + (run-workflow wf "balance guard includes rejected span" resp + (list (cons 'max-iterations 8) + (cons 'max-tool-errors 3) + (cons 'on-message + (lambda (m) + (when (equal? (message-role m) "tool") + (set! tool-results + (cons (message-content m) tool-results))))))))]) + (check! "verified-run: balance guard excerpt run verifies" + result "balance-excerpt-ok") + (check-pred! "verified-run: initial balance guard includes rejected draft excerpt" + (reverse tool-results) + (lambda (xs) + (and (pair? xs) + (str-contains? (car xs) "Jerboa syntax guard rejected") + (str-contains? (car xs) "Rejected draft excerpt around line 3") + (str-contains? (car xs) "3: (displayln \"draft\")))"))))) + (safe-delete-test-file! target-path)) + (let* ([vr-dir "/tmp"] [target "jcode-verified-rejected-draft-ranged-read.ss"] [target-path (string-append vr-dir "/" target)]