==================
Positional and optional repeat conditions
==================
agic is_done(_) -> Boolean:
  user: Return true when {{_}} is complete.

flow improve(_):
  repeat:
    ## Check before any work.
    until is_done
    run inspect
  repeat 2 times windowing 3:
    Describe the evidence.
    until: Compare {{_}} with {{_1._}}.
    run revise
  repeat 1 time:
    repeat:
      until:
        until remains literal inside condition text.
        ## Literal documentation.
      run revise
    until is_done
  repeat 0 times:
    run inspect
  repeat windowing 2:
    let note =
      until remains literal inside explicit Content.
    run inspect
  run publish

---

(program
  (agic
    (runnable_name)
    (params
      (param
        (param_name)))
    (type
      (builtin_type))
    (newline)
    (agic_body
      (message
        (role)
        (content
          (text))
        (newline))
      (blank_line)))
  (flow
    (runnable_name)
    (params
      (param
        (param_name)))
    (newline)
    (flow_body
      (repeat_statement
        (newline)
        (repeat_body
          (item_doc
            (text))
          (until_clause
            (runnable_name)
            (newline))
          (run_statement
            (runnable_name)
            (newline))))
      (repeat_statement
        (integer_literal)
        (integer_literal)
        (newline)
        (repeat_body
          (implicit_run_statement
            (content
              (text)
              (newline)))
          (until_clause
            (inline_agic
              (content
                (text))
              (newline)))
          (run_statement
            (runnable_name)
            (newline))))
      (repeat_statement
        (integer_literal)
        (newline)
        (repeat_body
          (repeat_statement
            (newline)
            (repeat_body
              (until_clause
                (inline_agic
                  (newline)
                  (content
                    (text)
                    (newline)
                    (text)
                    (newline))))
              (run_statement
                (runnable_name)
                (newline))))
          (until_clause
            (runnable_name)
            (newline))))
      (repeat_statement
        (integer_literal)
        (newline)
        (repeat_body
          (run_statement
            (runnable_name)
            (newline))))
      (repeat_statement
        (integer_literal)
        (newline)
        (repeat_body
          (let_statement
            (local_name)
            (newline)
            (content
              (text)
              (newline)))
          (run_statement
            (runnable_name)
            (newline))))
      (run_statement
        (runnable_name)
        (newline)))))
