Keep reads after incomplete ss create
ober
dfac57f044ef6069ad8fcec80c51db49ef238a87
--- a/src/jcode/core/verified-run.ss +++ b/src/jcode/core/verified-run.ss @@ -4553,7 +4553,6 @@ " bytes, so it is probably a completion-truncated prefix. The on-disk file was not changed. Do not regenerate the file. Use replace_def for the enclosing top-level function, replace_range for the diagnosed span, or an exact replacement, then call verify."))) (def (reject-incomplete-ss-create path content kind) - (current-pending-ss-create-repair path) (record-rejected-ss-draft! path content) (raise-recoverable-tool-error (string-append --- a/test/run.ss +++ b/test/run.ss @@ -7758,11 +7758,83 @@ (not (member "list" names)) (not (member "balance" names)) (not (member "verify" names)))))))) - (safe-delete-test-file! target-path)) + (safe-delete-test-file! target-path)) -(let* ([vr-dir "/tmp"] - [target "jcode-verified-replace-range.ss"] - [target-path (string-append vr-dir "/" target)] + (let* ([vr-dir "/tmp"] + [target "jcode-verified-incomplete-create-schema.ss"] + [target-path (string-append vr-dir "/" target)] + [snippet "x"] + [full "(import (jerboa prelude))\n(define (main) (displayln \"fixed\"))\n(main)\n"] + [seen-specs '()] + [tool-results '()] + [i 0] + [provider + (lambda (_messages tool-specs _step) + (set! seen-specs + (cons (map tool-spec-name tool-specs) seen-specs)) + (set! i (+ i 1)) + (cond + [(= i 1) + (list (make-wtool-call "edit" + (list (cons "path" target) + (cons "content" snippet)) #f))] + [(= i 2) + (list (make-wtool-call "read" + (list (cons "path" target) + (cons "start" 1) + (cons "end" 2)) #f))] + [(= i 3) + (list (make-wtool-call "edit" + (list (cons "path" target) + (cons "content" full)) #f))] + [(= i 4) + (list (make-wtool-call "verify" '() #f))] + [else + (list (make-wtool-call "done" + '(("summary" . "incomplete-create-schema-ok")) #f))]))]) + (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)))] + [result (parameterize ((current-write-scope scope)) + (run-workflow wf "keep reads after incomplete missing create" + (provider-responder provider) + (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: incomplete missing create schema reaches done" + result "incomplete-create-schema-ok") + (check-pred! "verified-run: incomplete create keeps inspection schemas" + (reverse seen-specs) + (lambda (xs) + (and (>= (length xs) 2) + (let ([names (list-ref xs 1)]) + (and (member "edit" names) + (member "write" names) + (member "read" names) + (member "list" names) + (member "balance" names)))))) + (check-pred! "verified-run: incomplete create read exposes rejected snippet" + (reverse tool-results) + (lambda (xs) + (let loop ([ys xs]) + (cond + [(null? ys) #f] + [(and (str-contains? (car ys) "Rejected draft") + (str-contains? (car ys) snippet)) + #t] + [else (loop (cdr ys))]))))) + (safe-delete-test-file! target-path)) + + (let* ([vr-dir "/tmp"] + [target "jcode-verified-replace-range.ss"] + [target-path (string-append vr-dir "/" target)] [initial "(import (jerboa prelude))\n(define (bad)\n (displayln \"bad\")\n\n(define (ok) 1)\n"] [replacement "(define (bad)\n (displayln \"fixed\"))"] [slurp (lambda (p) (call-with-input-file p (lambda (i) (get-string-all i))))])