✓
Passing Passing: the compiler rejects this program as expected.
Code
// NEGATIVE (under --auto-discharge=disable): read-stdin's twin of 335_042.
// The buffer carries `allocated!` and must reach `std/io:free` — see
// 335_042's header for the 2026-07-31 ruling (one label, one disposer).
~import std/io
// Read all of stdin, use the content, drop it — the disposer exists now,
// and with the net disabled the drop is a loud refusal.
~std/io:read-stdin()
| ok content |> std/io:print.ln("{{ content:s }}")
| eof |> _
| failed _ |> _
Actual compiler output
error[KORU030]: Resource 'content' carries obligation <allocated!> was not discharged. Call one of: std.io:free
--> tests/regression/300_ADVANCED_FEATURES/335_OBLIGATION_STRESS/335_043_read_stdin_no_free/input.kz:10:0
❌ Compiler coordination error: Phantom semantic validation failed
(set KORU_BACKEND_TRACE=1 for the backend return trace)Must contain:
KORU030Flows
flow ~read-stdin click a branch to expand · @labels scroll to their anchor
read-stdin
Test Configuration
MUST_ERROR
Compiler Flags:
--auto-discharge=disable