Wednesday, April 26, 2023

Proposal: [Appendix] Race Condition

Withdrawn. Failed by Kevan.

Adminned at 28 Apr 2023 08:47:08 UTC

In the Appendix rule “Atomic Actions”, add the following bullet at the end of the bulleted list:

* If a dynastic action from another Engineer changed any gamestate that was referenced during the Atomic Action and was completed before the completion of the Atomic Action, the steps of the Atomic Action should be undone and repeated starting at the first step that referenced that gamestate.

Take the following situation. An Engineer “X” is performing an Atomic Action that says “subtract 10 from variable ABC if it greater than 10”. Engineer X completed this step and subtracted 10 from variable ABC, but there’s a later step that says “If ABC is greater than 5, add 100 to the Engineer’s Gold”, and Engineer X hasn’t performed this step yet.

Simultaneously, another Engineer “Y”, through a dynastic action that may or may not have been an Atomic Action, completes their action that winds up setting ABC to 0. Right now, the rules aren’t clear on what happens to variable ABC or Engineer X’s Gold. They only state that Engineer Y’s action would have occurred first, followed by Engineer X, but since they are affected by similar gamestate, the resolution of this is unclear.

This Proposal attempts to make the resolution more concrete.

Comments

Kevan: he/him

26-04-2023 18:50:42 UTC

Not sure I see the unclarity in your example here.

If ABC started off at 50 and Engineer X took the “If ABC is greater than 5, add 100 to the Engineer’s Gold” step to give themselves 100 Gold, then Engineer Y’s move would change the input of that, making the Gold gain invalid, and “If one or more steps of an Atomic Action were done incorrectly, the Engineer must redo the Atomic Action”.

If ABC started at 0 and Engineer X performed the “If ABC is greater than 5, add 100 to the Engineer’s Gold” step with no effect, wouldn’t the action stand, having the same outcome whether or not Engineer Y had done anything?

JonathanDark: he/him

26-04-2023 19:41:35 UTC

If we all agree with that understanding of “If one or more steps of an Atomic Action were done incorrectly” then yes, I agree with your assessment. It just wasn’t that clear to me, since if Engineer X is in the middle of their Atomic Action, their steps weren’t incorrect at the time, only incorrect in retrospect.

Josh: Observer he/they

26-04-2023 21:29:10 UTC

This creates too stark of a contradiction with “For the purposes of determining the ordering or legality of game actions, the time of an Atomic Action shall be the time that it is completed. For Atomic Actions that are redone, the time of completion is the last redone step”, for me - that existing text is fairly explicit that the time of all steps of an atomic is the end time, but this introduces some uncertainty around the timing, which is perhaps inevitable given that it is flatly contradictory in intent.

against

Josh: Observer he/they

26-04-2023 21:30:15 UTC

(To be clear, I’m not completely against changing the rules around how atomics are incorporated into the chronological gamestate, but I think introducing contradictions like this is the wrong way to go about it - better to be head-on and suggest a change to the existing framework.)

Taiga: he/him

26-04-2023 23:00:30 UTC

imperial

Kevan: he/him

27-04-2023 08:14:38 UTC

Does seem like we’d be losing some of the current robustness here. If you and I both take a flat “reduce ABC by 10” action (where ABC starts at 100), that’s fine under the present system but under this version would always invalidate the action of whoever was slowest, forcing them to repeat it even though it would have the same outcome.

against

Lulu: she/her

27-04-2023 13:13:34 UTC

imperial

Taiga: he/him

27-04-2023 21:36:39 UTC

CoV against  due to my DEF being made invalid.

JonathanDark: he/him

27-04-2023 22:09:12 UTC

against Withdrawn