036 tap terminal invocation

✓ Passing This code compiles and runs correctly.

Code

// Test 310_036: Tap on Terminal Invocation
// BUG: Taps don't fire for terminal invocations (event at end of pipeline)
//
// When an event is called at the END of a pipeline (terminal position),
// tap lookups don't happen because there's no "destination" to transition to.
//
// Expected: Tap should fire when print.ln completes, even as terminal
// Actual: Tap doesn't fire

const std = @import("std");

~import "$std/io"
~import "$std/taps"

// Logger to observe taps
~event log { msg: []const u8 }

~proc log {
    std.debug.print("TAP: {s}\n", .{msg});
}

// Tap: observe std.io:print.ln completions
~tap(std.io:print.ln -> *)
| Profile p |> log(msg: p.source)

// Simple flow: just print.ln (terminal - no destination)
~std.io:print.ln(text: "Hello")
input.kz

Expected Output

Hello
TAP: std.io:print.ln

Test Configuration

MUST_RUN