✓
Passing Passing: the compiler rejects this program as expected.
Code
// A PROTO NAME REGISTERS ONCE. Two `std/types:proto(Engine)` declarations are
// a loud two-registrant collision — KORU030 naming BOTH declaration sites —
// not a silent merge into the second shape (phantom_semantic_checker.zig,
// registerDeclaredIdentity; ruled 2026-08-23). The wall fires in the
// backend's comptime phase, where the registry scan runs, so the refusal
// cites file:line for each registrant.
import std/types
std/types:proto(Engine) {
rpm: i32
}
std/types:proto(Engine) {
rpm: i32
serial: string
}
Actual compiler output
error[KORU030]: duplicate proto declaration 'Engine' — a proto entry is registered once; the declaration at tests/regression/600_STDLIB/660_COLLECTIONS/660_029_duplicate_proto_refused/input.k:13 collides with the prior registration at tests/regression/600_STDLIB/660_COLLECTIONS/660_029_duplicate_proto_refused/input.k:9
--> tests/regression/600_STDLIB/660_COLLECTIONS/660_029_duplicate_proto_refused/input.k:13:0
❌ Compiler coordination error: Phantom semantic validation failed
(set KORU_BACKEND_TRACE=1 for the backend return trace)Compiler must reject:
Compilation must fail with a diagnostic.
Flows
flow ~proto click a branch to expand · @labels scroll to their anchor
proto (expr: Engine, source: rpm: i32)
flow ~proto click a branch to expand · @labels scroll to their anchor
proto (expr: Engine, source: rpm: i32
serial: string)
Test Configuration
MUST_ERROR