(module embabi1_4_export_logged_counter_rejected

  ; The signature is fully scalar (Int -> Int) — the author got the
  ; ABI types right. But, debugging the host integration, they drop
  ; a trace line into the accumulator body. That makes the fn
  ; effectful (!IO), which M1 forbids for an embedding boundary.
  ; This isolates the export-has-effects clause from the
  ; non-scalar-signature clause (the public fixture mixes both).
  ; MUST fail `ail check`. Kept verbatim: the rejection is the
  ; finding.

  (fn tick
    (export "tick")
    (type
      (fn-type
        (params (own (con Int)))
        (ret (own (con Int)))
        (effects IO)))
    (params n)
    (body
      (seq (do io/print_str "tick")
           (app + n 1)))))
