- NewLibraryEntry: spec and creation of a new library entry, shared by
lit/library-save and lit/library-make-global (NewDraft, P7, StoredNodeGuard)
- UsageMatcher::referencesAny() (ruling Q7): a global entry never names any
entry in any spelling Divi renders (P23/P24 forms, Divi 4 shortcodes inside
Divi 5 values, values casting to 0); used by library-save scope global and
make-global
- make-global: entry created, node replaced by GlobalInstance::of, page through
DiviWriter::commit; refused or rolled-back page deletes the entry, a partial
page write keeps it (the page may show it); sources are pages and posts only
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01At3V6SjwbMe6eMzVGW3Hs7
- G1: every decoded string value of a Divi 5 opener is scanned for shortcodes;
outside the openers only the remaining content is.
- G2: attributes are parsed like shortcode_parse_atts() and global_module is
cast with (int), as Divi does.
- G3: a non-empty global_module other than "0" that casts to 0 makes Divi
render the newest layout, so it counts for every entry (fail closed).
- The prefilter LIKEs use LOWER(post_content), so they are case-insensitive
under any collation.
- The guide describes the fail-closed rule without an absolute claim.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Candidates come from one ID/status/type query: content with globalModule,
global_module or a JSON-escaped letter. Their content is read in chunks of
50 and parsed by UsageMatcher: Divi 5 openers are json-decoded (escaped keys
and values, leading zeros, any depth), and Divi 4 global_module attributes
are read in any quoting. An undecodable escaped opener counts as a possible
reference. Beyond 5000 candidates the rest count unread. The guide names
the formats and the wp_block parity. Also fixes the grammar of the
blocked-hidden count.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>