Skip to content

v0.28.1

Choose a tag to compare

@hyoshi hyoshi released this 19 Oct 09:47
1bb5253

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.