ESS (since 0.41.0, beyond10x/ess#209 and #227) answers an input-guarded refusal before the existence of the addressed row: a command sent a refused input for an identity no row carries, or a creating command sent a refused input for an identity a row already carries, answers the declared refusal.
entity-core agrees: decide_before_load (crates/entity-core/src/runtime.rs) decides input refusals before any row is loaded. entity-executor does not: every write goes batch → decide_and_append, which loads the row first (crates/entity-executor/src/lib.rs, around the load in decide_and_append and decide at 432-470), so creating over a stored row, or operating on a missing row, answers RevisionConflict before any branch or input refusal is evaluated.
Expected: the executor evaluates input-guarded refusals (the kernel's decide_before_load) before the existence check, so a refused input answers its declared refusal whether or not the row exists, matching ESS and entity-core.
Found while writing the single precedence order for ESS (beyond10x/ess#227).
ESS (since 0.41.0, beyond10x/ess#209 and #227) answers an input-guarded refusal before the existence of the addressed row: a command sent a refused input for an identity no row carries, or a creating command sent a refused input for an identity a row already carries, answers the declared refusal.
entity-coreagrees:decide_before_load(crates/entity-core/src/runtime.rs) decides input refusals before any row is loaded.entity-executordoes not: every write goesbatch → decide_and_append, which loads the row first (crates/entity-executor/src/lib.rs, around the load indecide_and_appendanddecideat 432-470), so creating over a stored row, or operating on a missing row, answersRevisionConflictbefore any branch or input refusal is evaluated.Expected: the executor evaluates input-guarded refusals (the kernel's
decide_before_load) before the existence check, so a refused input answers its declared refusal whether or not the row exists, matching ESS andentity-core.Found while writing the single precedence order for ESS (beyond10x/ess#227).