You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Fixed
STATE.json: a hand-written action_log entry no longer blocks every
write (#859). An entry missing timestamp, action or platform
(for example one written into the file directly rather than through mureo_state_action_log_append) made every writer refuse the whole
document: the ops history switch, append_action_log, campaign
upserts, decision records, automatic evaluation and change import all
failed. Such an entry is now kept at its position in the log and reads
with the missing fields empty; its required keys and any keys mureo
does not know are written back as found, while the keys mureo knows
are normalized exactly as before. The read-only view and the writers
build the same list, so an index from mureo_state_get / mureo_history_query is the one rollback_apply resolves. Unknown
keys on any action_log entry are no longer dropped by a
whole-document write, and a change mureo makes to such an entry (a
stamped batch_id, say) still lands. An entry holding a value mureo
refuses (a non-string reason, a malformed approval, ...) is kept
in place as an opaque record: only its timestamp / action / platform and its link to another entry (rollback_of, evaluation_of, origin / external_id) are read, so it still
blocks a second rollback and closes its observation, and it is
written back verbatim in full. Only an entry that is not an object is
still refused by the writers (and skipped by the read-only view). See docs/strategy-context.md.
Dashboard forms: action buttons laid beside the last field. The
Save / Authenticate / Save keys / Browse buttons under Settings and
Advanced settings (plugin credentials, Creative Studio, Ops history,
Demo, BYOD) were laid into the fields' row and top-aligned beside the
last field whenever that row had room for them (a single field, or an
odd number at two-up), so the button sat above the form it submits. A
button that follows the fields now starts a row of its own below them;
a button and its status line share one row.