v1.25.0 — global-classes governance (design-token reversal gap closed)
Global-classes governance (winning-plan P2, plank 2) — the Class Manager writers (create / update / delete-global-class) now snapshot-before-write + roll back on failure, closing the last design-token reversal gap. All Elementor design-token writes (pages, kit, global classes) are now snapshot-reversible under SiteAgent governance.
In Elementor 4.x a global class is its own CPT post (e_global_class), indexed by kit meta, and a delete cascades (rewrites every page whose _elementor_data referenced it). Reversing that is a multi-post transaction — kit index + sync-to-v3 map + class CPT posts + reverse usage index + cascade pages — captured in ONE snapshot_posts() call (SiteAgent's plank-2a primitive) for a single-restore rollback.
- Each writer declares
meta.governance.scope = 'global-classes'; a lazybefore_global_classes_write()at the repo write site snapshots the whole transaction.apply-global-classstays page-governed. - Fail-closed on every un-reversible edge: no active kit, unresolvable cascade, SiteAgent lacking
snapshot_posts, or an in-use class whose reverse index is empty (its pages found only via the multi-valuedused_classesfallback the single-valued snapshot can't restore). - Corrected the
delete-global-classdescription (Elementor does cascade page rewrites — verified against 4.1.4).
Converged over a 5-round Claude↔Codex review (3 P2 fixes: reverse usage index, fallback fail-closed, sync-to-v3 map; 1 false positive refuted). Full suite 722 green.
Requires SiteAgent's snapshot_posts primitive for global-class governance; standalone the writers behave as before.