ludic/examples/rejected
Orkuncakilkaya c64f8750e2 feat(lang): 0.R5 - a reducer writes one state and may read others, declared between its state and the action
What only becomes known inside the drain - a value another reducer just set, the map in play - no longer
has to be faked into the action, so a verb that reads several systems while it changes one is a reducer
instead of an act handed its states. A second state to write is still refused, and the message says the
way out. examples/actions/reads.ludic; reseeded.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 18:23:48 +03:00
..
closed_kit feat(lang): open registry - other modules' defs, in an order imports cannot change 2026-09-25 04:28:34 +03:00
craft_kit feat(lang): def REGISTRY from "file.lres" - a game fills an open registry from its own file 2026-09-25 07:22:05 +03:00
data feat(lang): L9 resource files - registry ... from 2026-09-24 14:00:20 +03:00
exported_events feat(lang): a module's private records and events are its own 2026-09-25 11:02:48 +03:00
exported_kinds feat(lang): a module's private records and events are its own 2026-09-25 11:02:48 +03:00
exported_twins feat(lang): a module's private names are its own 2026-09-25 07:08:05 +03:00
hidden_kit feat(lang): open registry - other modules' defs, in an order imports cannot change 2026-09-25 04:28:34 +03:00
layer_cycle feat(lang): layers - module flow in layer app uses base, items 2026-09-25 12:54:15 +03:00
layer_reach feat(lang): layers - module flow in layer app uses base, items 2026-09-25 12:54:15 +03:00
port_clock feat(lang): ports - port Clock { ... } in a module, bind Clock { ... } in the app 2026-09-25 04:20:12 +03:00
private_bank wip(0.S3): ui blocks, scene on enter/exit, hooks, machines over a state's field, namespace and engine-system injection; a reference out of a read-only state or a module let is read-only; deps counts writes into another module's state; the rejected examples hold states 2026-09-25 14:49:03 +03:00
private_kit feat(lang): L5 generic records and functions 2026-09-24 02:21:15 +03:00
state_component_ro feat(lang): 0.S - components take states in their header; migrate writes them, never inside a name, never outside the programs given, never into a package's state 2026-09-25 17:11:15 +03:00
uses_cycle feat(lang): module NAME uses A, B - a module reaches only the modules it names 2026-09-25 04:06:45 +03:00
uses_pkg_mech wip(0.S3): ui blocks, scene on enter/exit, hooks, machines over a state's field, namespace and engine-system injection; a reference out of a read-only state or a module let is read-only; deps counts writes into another module's state; the rejected examples hold states 2026-09-25 14:49:03 +03:00
uses_r3d_mech feat(lang): packages count under uses; a port of defaults may go unbound 2026-09-25 05:36:11 +03:00
uses_valley feat(lang): module NAME uses A, B - a module reaches only the modules it names 2026-09-25 04:06:45 +03:00
alias_arity.ludic feat(lang): L6 namespaces declared in Ludic - alias 2026-09-24 02:40:57 +03:00
alias_twice.ludic feat(lang): L6 namespaces declared in Ludic - alias 2026-09-24 02:40:57 +03:00
bad_recipes.lres feat(lang): def REGISTRY from "file.lres" - a game fills an open registry from its own file 2026-09-25 07:22:05 +03:00
bind_missing_fn.ludic fix(lang): the action drain is the program's; --check runs every check a build makes; a registry key named count is refused; name lookups are tables 2026-09-25 23:34:43 +03:00
builtin_name.ludic fix(lang): a function named like a compiler built-in is refused; reseed 2026-09-24 22:09:29 +03:00
component_no_template.ludic feat(lang): UI components as files - component Name { ... } beside Name.xml and Name.lss 2026-09-24 16:50:12 +03:00
default_missing.ludic feat(lang): L11 views and templates - the UI is markup, not code 2026-09-24 15:58:47 +03:00
default_unknown.ludic feat(lang): L11 views and templates - the UI is markup, not code 2026-09-24 15:58:47 +03:00
dispatch_unknown.ludic feat(lang): 0.R1 - actions and reducers 2026-09-25 19:13:46 +03:00
duplicate_const.ludic feat(lang): a name is defined once, a local once per block, and a result is always returned 2026-09-23 23:55:20 +03:00
duplicate_property.ludic feat(lang): a name is defined once, a local once per block, and a result is always returned 2026-09-23 23:55:20 +03:00
engine_alias_name.ludic fix(lang): a function named like an engine namespace method's target is refused 2026-09-25 05:14:45 +03:00
every_error.ludic feat(lang): L4 type checker between parse and emit 2026-09-24 01:34:49 +03:00
exported_events.ludic feat(lang): a module's private records and events are its own 2026-09-25 11:02:48 +03:00
exported_kinds.ludic feat(lang): a module's private records and events are its own 2026-09-25 11:02:48 +03:00
exported_twins.ludic feat(lang): a module's private names are its own 2026-09-25 07:08:05 +03:00
float_into_int.ludic feat(lang): L4 type checker between parse and emit 2026-09-24 01:34:49 +03:00
fn_type_mismatch.ludic wip(0.S3): ui blocks, scene on enter/exit, hooks, machines over a state's field, namespace and engine-system injection; a reference out of a read-only state or a module let is read-only; deps counts writes into another module's state; the rejected examples hold states 2026-09-25 14:49:03 +03:00
friend_scope.ludic wip(0.S3): ui blocks, scene on enter/exit, hooks, machines over a state's field, namespace and engine-system injection; a reference out of a read-only state or a module let is read-only; deps counts writes into another module's state; the rejected examples hold states 2026-09-25 14:49:03 +03:00
generic_arity.ludic feat(lang): L5 generic records and functions 2026-09-24 02:21:15 +03:00
generic_mismatch.ludic feat(lang): L5 generic records and functions 2026-09-24 02:21:15 +03:00
generic_unbound.ludic feat(lang): L5 generic records and functions 2026-09-24 02:21:15 +03:00
layer_cycle.ludic feat(lang): layers - module flow in layer app uses base, items 2026-09-25 12:54:15 +03:00
layer_reach.ludic feat(lang): layers - module flow in layer app uses base, items 2026-09-25 12:54:15 +03:00
long_into_int.ludic fix(lang): a template inside another's hole, and integer literals past 2^31 - 1 2026-09-25 08:10:46 +03:00
missing_return.ludic feat(lang): a name is defined once, a local once per block, and a result is always returned 2026-09-23 23:55:20 +03:00
module_let_alias.ludic feat(lang): 0.S - a reference out of a read-only state is read-only (named so), a program's type named like the runtime's is refused (PadButton), tests for both, the migrate case covers lets; changeset 2026-09-25 16:17:03 +03:00
module_let_write.ludic wip(0.S1, 0.S2): state records, mut and read-only state parameters, entry injection, module var refused; ludic migrate state 2026-09-25 13:45:09 +03:00
module_var.ludic wip(0.S1, 0.S2): state records, mut and read-only state parameters, entry injection, module var refused; ludic migrate state 2026-09-25 13:45:09 +03:00
mut_not_state.ludic wip(0.S1, 0.S2): state records, mut and read-only state parameters, entry injection, module var refused; ludic migrate state 2026-09-25 13:45:09 +03:00
param_twice.ludic fix(migrate): 0.R4 - --prune keeps a state declared after a plain parameter; a parameter named twice is refused 2026-09-26 05:32:08 +03:00
pkg_export_clash.ludic fix(lang): 0.R4 - ludic.ui's UiAct is its own, and a name that meets a package's export says whose it is 2026-09-26 06:57:35 +03:00
port_missing.ludic feat(lang): ports - port Clock { ... } in a module, bind Clock { ... } in the app 2026-09-25 04:20:12 +03:00
port_new.ludic feat(lang): packages count under uses; a port of defaults may go unbound 2026-09-25 05:36:11 +03:00
port_private.ludic feat(lang): ports - port Clock { ... } in a module, bind Clock { ... } in the app 2026-09-25 04:20:12 +03:00
port_twice.ludic feat(lang): ports - port Clock { ... } in a module, bind Clock { ... } in the app 2026-09-25 04:20:12 +03:00
port_unbound.ludic feat(lang): ports - port Clock { ... } in a module, bind Clock { ... } in the app 2026-09-25 04:20:12 +03:00
port_var_args.ludic wip(0.S3): ui blocks, scene on enter/exit, hooks, machines over a state's field, namespace and engine-system injection; a reference out of a read-only state or a module let is read-only; deps counts writes into another module's state; the rejected examples hold states 2026-09-25 14:49:03 +03:00
positional_after_named.ludic feat(lang): L11 views and templates - the UI is markup, not code 2026-09-24 15:58:47 +03:00
private_generic.ludic feat(lang): L5 generic records and functions 2026-09-24 02:21:15 +03:00
private_module.ludic wip(0.S3): ui blocks, scene on enter/exit, hooks, machines over a state's field, namespace and engine-system injection; a reference out of a read-only state or a module let is read-only; deps counts writes into another module's state; the rejected examples hold states 2026-09-25 14:49:03 +03:00
record_as_text.ludic feat(lang): L4 type checker between parse and emit 2026-09-24 01:34:49 +03:00
record_mixup.ludic feat(lang): L4 type checker between parse and emit 2026-09-24 01:34:49 +03:00
redeclared_local.ludic feat(lang): a name is defined once, a local once per block, and a result is always returned 2026-09-23 23:55:20 +03:00
reducer_not_action.ludic feat(lang): 0.R1 - actions and reducers 2026-09-25 19:13:46 +03:00
reducer_two_states.ludic feat(lang): 0.R5 - a reducer writes one state and may read others, declared between its state and the action 2026-09-26 18:23:48 +03:00
registry_closed.ludic feat(lang): open registry - other modules' defs, in an order imports cannot change 2026-09-25 04:28:34 +03:00
registry_count_key.ludic fix(lang): the action drain is the program's; --check runs every check a build makes; a registry key named count is refused; name lookups are tables 2026-09-25 23:34:43 +03:00
registry_extend_field.ludic feat(lang): def REGISTRY from "file.lres" - a game fills an open registry from its own file 2026-09-25 07:22:05 +03:00
registry_field.ludic feat(lang): L8 registries by declaration - registry and def 2026-09-24 13:34:51 +03:00
registry_hidden.ludic feat(lang): open registry - other modules' defs, in an order imports cannot change 2026-09-25 04:28:34 +03:00
registry_twice.ludic feat(lang): L8 registries by declaration - registry and def 2026-09-24 13:34:51 +03:00
registry_unknown.ludic feat(lang): L8 registries by declaration - registry and def 2026-09-24 13:34:51 +03:00
resource_field.ludic feat(lang): L9 resource files - registry ... from 2026-09-24 14:00:20 +03:00
resource_missing.ludic feat(lang): L9 resource files - registry ... from 2026-09-24 14:00:20 +03:00
runtime_type_clash.ludic feat(lang): 0.S - a reference out of a read-only state is read-only (named so), a program's type named like the runtime's is refused (PadButton), tests for both, the migrate case covers lets; changeset 2026-09-25 16:17:03 +03:00
state_alias_readonly.ludic feat(lang): 0.S - a reference out of a read-only state is read-only (named so), a program's type named like the runtime's is refused (PadButton), tests for both, the migrate case covers lets; changeset 2026-09-25 16:17:03 +03:00
state_component_ro.ludic feat(lang): 0.S - components take states in their header; migrate writes them, never inside a name, never outside the programs given, never into a package's state 2026-09-25 17:11:15 +03:00
state_mut_arg.ludic wip(0.S1, 0.S2): state records, mut and read-only state parameters, entry injection, module var refused; ludic migrate state 2026-09-25 13:45:09 +03:00
state_readonly.ludic wip(0.S1, 0.S2): state records, mut and read-only state parameters, entry injection, module var refused; ludic migrate state 2026-09-25 13:45:09 +03:00
text_plus_number.ludic feat(lang): L4 type checker between parse and emit 2026-09-24 01:34:49 +03:00
unknown_field_type.ludic fix(check): 0.R4 - a misspelled type in a parameter, a result or a field is refused where it is written 2026-09-26 05:58:35 +03:00
unknown_name.ludic fix(lang): the action drain is the program's; --check runs every check a build makes; a registry key named count is refused; name lookups are tables 2026-09-25 23:34:43 +03:00
unknown_type.ludic fix(check): 0.R4 - a misspelled type in a parameter, a result or a field is refused where it is written 2026-09-26 05:58:35 +03:00
uses_cycle.ludic feat(lang): module NAME uses A, B - a module reaches only the modules it names 2026-09-25 04:06:45 +03:00
uses_missing.ludic feat(lang): module NAME uses A, B - a module reaches only the modules it names 2026-09-25 04:06:45 +03:00
uses_package.ludic feat(lang): packages count under uses; a port of defaults may go unbound 2026-09-25 05:36:11 +03:00
uses_render3d.ludic feat(lang): packages count under uses; a port of defaults may go unbound 2026-09-25 05:36:11 +03:00
view_untyped.ludic wip(0.S3): ui blocks, scene on enter/exit, hooks, machines over a state's field, namespace and engine-system injection; a reference out of a read-only state or a module let is read-only; deps counts writes into another module's state; the rejected examples hold states 2026-09-25 14:49:03 +03:00
view_without_ui.ludic wip(0.S3): ui blocks, scene on enter/exit, hooks, machines over a state's field, namespace and engine-system injection; a reference out of a read-only state or a module let is read-only; deps counts writes into another module's state; the rejected examples hold states 2026-09-25 14:49:03 +03:00
wrong_arity.ludic feat(lang): L4 type checker between parse and emit 2026-09-24 01:34:49 +03:00