✓
Passing This code compiles and runs correctly.
Code
// PINS: `[with]` resolution must match the invocation's FULL path, not its
// last segment. app/alpha owns `say.hi`, app/beta owns `log.hi` — as written
// the names share nothing. restamp keys on the last segment (`hi`), so a bare
// `say.hi` reads as owned by BOTH vocabularies — KORU140 on a name that is
// not ambiguous. It must resolve to app/alpha's `say.hi` alone.
import std/io
import app/alpha
import app/beta
[with]app/alpha:say.hi(msg: "seed"): s |> [with]app/beta:log.hi(msg: s): t |> say.hi(msg: t): u |> std/io:print.ln("resolved={{ u:s }}")
Supporting Files
// Local vocabulary A — owns `say.hi` (segment `hi` shared with beta's `log.hi`).
pub tor say.hi { msg: string } -> string
say.hi -> msg
// Local vocabulary B — owns `log.hi` (segment `hi` shared with alpha's `say.hi`).
pub tor log.hi { msg: string } -> string
log.hi -> msg
Actual
resolved=seed
Must contain:
resolved=seedFlows
flow ~say.hi click a branch to expand · @labels scroll to their anchor
say.hi (msg: "seed")
Test Configuration
MUST_RUN
koru.json:
{
"paths": {
"std": "../../../../../koru_std",
"app": "."
}
}