Keep reads after incomplete ss create

ober

dfac57f044ef6069ad8fcec80c51db49ef238a87

diff --git a/src/jcode/core/verified-run.ss b/src/jcode/core/verified-run.ss
index 4cade69..12c2b0d 100644
--- 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
diff --git a/test/run.ss b/test/run.ss
index 09245ad..a7fafd0 100644
--- 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))))])