✓
Passing Passing: the compiler rejects this program as expected.
Code
// A ONE-column store's watch arm is the STORE. Ruled by Lars 2026-07-29.
//
// `watch` is the only store construct whose arm names a COLUMN rather than a
// fixed word — `sweep`, `item`, `full`, `row`, `inserted`, `removed`, `updated`
// are all construct- or event-named. It names a column for one reason: a
// multi-column store makes the author choose which one.
//
// With one column there is nothing to choose, so the name collapses to the
// store's — the same rule the declaration, `stored` and the row bindings carry.
// Nothing new is reserved, and an author who knows the declaration rule can
// guess the arm without being told.
//
// std/store:new(counter) { v: 0[i64] } -> { 0[i64] }
// std/store:watch(counter) ! v e -> ! clicks e
import std/io
import std/store
std/store:new(counter) { 0[i64] }
std/store:watch(counter)
! clicks e |> std/io:print.ln("clicks {{ e:d }}")
std/store:stored { counter: 3 }
std/store:stored { counter: counter + 4 }
Actual compiler output
error[KORU161]: std/store:watch(counter): 'clicks' names no column - a one-column store names none, so its watch arm is the store: `! counter <binding> |> ...`
--> tests/regression/600_STDLIB/690_STORE/690_103_watch_arm_names_no_column_teaches/input.k:20:0
error[KORU161]: std/store:watch(counter): unknown store - no std/store:new(counter) found
--> tests/regression/600_STDLIB/690_STORE/690_103_watch_arm_names_no_column_teaches/input.k:20:0
error[KORU161]: std/store:stored target 'counter' must be a dotted store path (store.field)
--> tests/regression/600_STDLIB/690_STORE/690_103_watch_arm_names_no_column_teaches/input.k:23:0
error[KORU161]: std/store:stored target 'counter' must be a dotted store path (store.field)
--> tests/regression/600_STDLIB/690_STORE/690_103_watch_arm_names_no_column_teaches/input.k:24:0Must contain:
names no columnFlows
flow ~new click a branch to expand · @labels scroll to their anchor
new (counter, source: 0[i64])
flow ~watch click a branch to expand · @labels scroll to their anchor
watch (counter)
flow ~stored click a branch to expand · @labels scroll to their anchor
stored (source: counter: 3)
flow ~stored click a branch to expand · @labels scroll to their anchor
stored (source: counter: counter + 4)
Test Configuration
MUST_ERROR