Smeldr now records whether a decision is in force

A ratified Decision is in force until something replaces it. Smeldr used to guess that from the state name. Now the item carries it as a fact, with the person and time it began and ended.

A ratified Decision, a merged change, a signed contract: each is in force for a while, and then maybe it is not. Until now Smeldr could tell you which state an item was in, but not whether that state meant "in force". You could guess from the state name. The guess breaks the day someone renames a state, and it says nothing about items that left a state long ago.

Core v1.112.0 makes it a fact the item carries. You declare which states mean in force, and each item then keeps one of four values: holds, ceased, none or not recorded.

Take a Decision. It is created as proposed and has no standing yet. When it is ratified it holds. When a newer Decision supersedes it, it has ceased. A Decision archived straight from proposed was never in force, so it reads none, not ceased. The difference matters when someone asks why a rule stopped applying.

Both ends are recorded with the actor who made the move: standing began when it was ratified, standing ended when it was superseded. If your instance records provenance, "why is this Decision no longer in force" is answered by reading two entries.

Items that moved before this existed cannot be reconstructed, so Smeldr does not try. For those it uses only what the flow itself proves. An item in a state that holds is holds, with an unknown start. A superseded Decision is ceased. An archived one could have come from either, so it reads not recorded. Later changes to a flow never rewrite what items already recorded.

If something changes an item's state without going through core, the stored value can drift from the state. A daily check compares every item with its state's tag and records a finding for each mismatch. It reports and never repairs, because a repair would be a guess.

Released in core v1.112.0.