State engine¶
Status: draft
Proposals by Claude – not binding until Daniel approves them.
State is never stored, always computed from the annotations plus the current source. The engine does it in three steps for every annotated file.
1 · Resolve¶
If the selector that hit is not the first one, the engine reports a
|
2 · Compare¶
|
With markup in the fingerprint, bold, a new link or a re-wrapped table makes
an approved statement |
3 · State¶
Ratings and notes never change the state. For everything else the engine looks at the open and the latest annotations of an element and picks the first rule that applies:
# |
Rule |
State |
|---|---|---|
1 |
target not found |
|
2 |
latest freeze is in force and the fingerprint changed |
|
3 |
latest freeze is in force |
|
4 |
an open delete job |
|
5 |
latest verdict is an open reject (not fixed yet) |
|
6 |
latest verdict is approve and the fingerprint changed |
|
7 |
latest verdict is approve |
|
8 |
an open request |
|
9 |
none of these |
|
An open request is shown as a badge on top of every other state, so
|
Options were: (a) a new verdict on the element ends the freeze; (b) an
explicit |