=== Generative Engine Solution ===
Contributors: asmaulhq
Tags: geo, aeo, ai search, citations, mcp
Requires at least: 6.9
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 4.1.8
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Safely discover, review, create, edit, verify, and audit WordPress content through structured jobs and MCP.

== Description ==

Generative Engine Solution (GES) connects permitted WordPress content operations to structured JSON/CSV imports and compatible MCP clients.

Free works locally without signup or a licensing connection. It supports exact plain-text changes in supported Gutenberg regions, Post/Page title and excerpt edits, image metadata, content discovery and reviewed background Jobs. Free-operation imports and multi-resource Jobs use the same per-row safety checks.

The workflow is Read -> Preview -> Review/Approve -> Apply -> Verify -> Audit. GES preserves native WordPress capabilities, per-connection permissions and OAuth scopes, exact matching, state checks, confirmations, revisions where supported and durable audit. Unsupported or ambiguous changes fail closed. Uncertain writes require inspection, not blind retries.

The optional, separately maintained WordPress MCP Adapter enables AI connections. JSON/CSV work does not require it. Enable OAuth and choose connection permissions explicitly; no AI provider is connected automatically.

GES Pro is a separate add-on distributed outside WordPress.org. Its advanced implementations cover supported publishing, rich text, layout, SEO and administrative operations. Pro code and the appropriate verified paid plan are required; an account never grants WordPress permissions. Core has no external plugin updater or premium installer. Initial Pro installation is a manual website download and upload through WordPress Plugins.

Open GES in the WordPress admin menu. Account & Plan contains optional account controls and an Upgrade to Pro link. Current scope and limitations are documented in the packaged AI guides and docs/feature-overview.md. Full builder certification, a built-in AI assistant and universal wp-admin parity are not claimed.

== Privacy and external services ==

Free features run on your WordPress site without signup or a GES licensing connection. GES does not load external CSS/JavaScript, contact an analytics service, or create customer accounts automatically.

Jobs, before/after content, actor/connection references, audit/recovery evidence and OAuth records are stored in your WordPress database. They are retained on normal deactivation/uninstall to protect history and recovery. Review docs/migration-and-recovery.md before enabling the explicit purge setting. Site owners control access, backups and retention.

Optional account connection: an administrator must configure a trusted account-service URL and verification key and explicitly submit signup/login. Signup/login sends email, password, installation UUID and site-binding hash to that configured service. Refresh/service controls send installation identity and authenticated session authorization. The plugin stores a signed entitlement and encrypted session, not the signup password. Review that operator's privacy policy and terms before connecting. No public GES account service is bundled or enabled by default.

Source URL validation and rendered-page verification use the WordPress HTTP API only for requested/configured checks. They contact the selected source/page and disclose the server's ordinary HTTP request metadata; no signup password or account bearer is attached. Opt out of background official-URL testing in New Job when not wanted.

MCP: the optional separately installed WordPress MCP Adapter connects authorized external clients. The site owner enables OAuth and connection permissions; clients receive only permitted results. Read the chosen AI provider's terms and privacy policy before authorizing it. GES does not embed an AI model or automatically send content to an AI provider.

WordPress.org software installation/update metadata is used only through administrator-requested native WordPress workflows and existing WordPress APIs. GES Pro is a separate, externally distributed add-on; initial installation is manual. Its private update integration is not included in this Core package.

== Installation ==

1. Upload the plugin ZIP from Plugins -> Add Plugin -> Upload Plugin.
2. Activate Generative Engine Solution.
3. Open GES -> New Job. Free local operations work without signup or an account service. Paste JSON or upload a documented JSON/CSV format, then analyze, review and Apply.
4. For advanced adapters, manually download and install compatible GES Pro 4.1 or newer, then connect a verified paid account in GES -> Account & Plan. Existing beta installations require explicit authorized migration for new paid work; local Free work remains available.
5. For MCP usage, install/activate the official WordPress MCP Adapter.
6. Optionally enable OAuth from MCP & OAuth and configure per-connection GES permissions.
7. Use Diagnostics and the owner staging checklist before deployment. Default uninstall retains Jobs, account state, audit and recovery evidence.

== Frequently Asked Questions ==

= Does GES require MCP? =

No. Background Jobs and wp-admin review work inside WordPress. MCP and account connection are optional for Free. JSON/CSV imports and multi-resource Jobs are available for Free operations; every paid action still requires the separate Pro implementation and its verified tier.

= Can AI publish content automatically? =

Publishing/status changes require the relevant WordPress capability, an enabled GES permission, Preview/state validation, and explicit Apply confirmation. Structural rewrite/new-article proposals also require Review approval first.

= Does GES support Pages and CPTs? =

Yes for existing-content operations when the post type is visible in wp-admin and supports the normal WordPress editor. Internal structural post types are excluded. New Article creation remains scoped to standard Posts in this release.

= Does GES accept raw HTML for rewrites? =

No. Rewrites use safe Markdown. FAQ disclosure HTML is generated internally from structured FAQ data.

= Does GES search Google Images? =

No. Media Library is searched first. Optional external search uses configured provider APIs such as Pexels, Unsplash, and Pixabay. A user-authorized direct image URL can also be imported safely. GES does not treat a search-result appearance as a reuse license.

= Does GES manage every wp-admin feature now? =

No. GES exposes bounded native adapters, not arbitrary wp-admin parity. Availability distinguishes installed code, dependencies, minimum plan and original WordPress/MCP authority. Unsupported requests fail closed.

== Changelog ==

= 4.1.8 =
* Fix the paid missing-add-on download CTA to open the trusted GES account download section; explain native WordPress upload/activation instead of linking back to the same section.


= 4.1.7 =
* Replace customer-site account credential fields with trusted browser connection and verification.
* Upgrade links retain the originating website when a trusted Account service is configured.
* Preserve entitlement replay protection across service migration using the one-use ownership callback.


= 4.1.6 — Server-side bounded stylesheet patches =
Compile append_css, replace_exact and insert_after on the server against an exact file SHA-256. Review complete resolved diff, retain protected header/resource constructs, refuse ambiguous/missing/stale targets, Apply and verify through existing Jobs. No AI round trip of the full stylesheet is required.


= 4.1.3 — Existing theme CSS resources and GES navigation =
Theme-file CSS edits preserve existing import and URL/image constructs byte-for-byte while ordinary CSS changes retain strict validation. New/changed/removed/duplicated/reordered resource constructs fail closed. New admin navigation links and redirects use the top-level GES route; legacy Tools links remain registered.


= 4.1.2 — Reviewed native theme stylesheet =
Explicit active-theme style.css read/save and guarded new-Job restore; preserve theme header and other CSS stores, enforce native file-edit authority and a separate Themes File permission. File editing requires Business. PHP and arbitrary paths remain unsupported.


= 4.1.0 — Account-independent Free and repository preparation =
Free local features work without signup, including the bundled importer and Free-operation Job batches. Paid implementations remain separately distributed. Move official Pro updates/downloads and dedicated paid status/revision/metadata controllers out of Core into Pro. Add entry-point nonce checks and sanitized request methods to account/setup forms. Existing reviewed Job, capability, connection, state and recovery protections retained. UI CSS/JS remain external assets; native content styling and JSON-LD preserved.

= 4.0.16 — Product name and scoped custom menu ordering =
Core display name is Generative Engine Solution; Bipixels author retained. When custom menu ordering is enabled, move only GES immediately after Pages while preserving other menu items. Native position 21, submenu and legacy routes unchanged. Pro version aligned.

= 4.0.15 — Menu after Pages =
Move GES to position 21, after Pages and before Comments. Existing submenu, legacy routes, capabilities, styling and Job behavior unchanged. Pro version aligned.

= 4.0.14 — Top-level GES workspace =
GES now appears below Dashboard with direct Job, account, connection, settings and diagnostics navigation. Legacy Tools/Job routes remain registered without a duplicate Tools menu entry. Existing page capabilities and mutation protections remain. Pro version aligned; adapters unchanged.

= 4.0.13 — Owner-selected upgrade link color =
Plugins-list Upgrade to Pro uses #10AC84 with a darker #0B8063 hover/focus color. Bold text and underline/focus behavior retained. Primary/secondary button hierarchy and staging pricing URL unchanged. Pro version aligned; adapters unchanged.

= 4.0.12 — Upgrade emphasis =
Bold dark-green Upgrade to Pro link on the Plugins screen; primary upgrade button in Account & Plan only. Header and account-management buttons remain secondary. Native focus handling, permissions and destinations unchanged. Pro version aligned; adapters unchanged.

= 4.0.11 — Account-aware upgrade navigation =
Administrator-only plan links in Core plugin actions, GES header and Account & Plan. Configurable HTTPS pricing destination; local management/download guidance for paid plans, renew for expired subscriptions and refresh for stale proofs. Structured commercial-error help only; no permission, account, billing or mutation authority changes. Pro version aligned with Core; advanced adapters unchanged.

= 4.0.10 — Exact draft comment normalization =

* Reviewed draft Post body saves disclose and verify native empty-to-closed comment status normalization.
* Valid comment status changes, external drift and unknown metadata remain protected.
* Existing uncertain writes require inspection/reconciliation; no automatic replay or permission broadening.


= 4.0.9 — Official account service controls =

* Human account site/session controls and authenticated Pro download/update integration.
* Server foundation enforces activation limits, revocation, subscription periods, quotas and single-use download credentials.
* Existing staging test plans remain; payment provider and production deployment are separate configuration work.


= 4.0.8 — Guided AI connection setup =

* Optional MCP & OAuth setup checks, native official adapter installation and audited administrator activation.
* Copyable endpoint, retained ChatGPT/Claude instructions and explicit OAuth/permission choices.
* Imports remain independent; local checks do not certify hosted network or OAuth round trips.


= 4.0.7 — Native Post enclosure queue classification =

* Exclude only the canonical singleton _encloseme queue flag on published native Posts from sequential metadata guards.
* Preserve exact checks for all other metadata, malformed/duplicate queue flags, Pages, drafts and custom post types.
* Keep reviewed Jobs, individual verification/audit, unknown-drift failures and recovery expiry safeguards.


= 4.0.6 — Job continuation and background recovery =

* Universal Job responses include exact next calls, READY confirmations, expiry/refresh and native content read-back identities.
* Expired proofs reject before queueing Apply; approval and execution gates remain separate.
* Background recovery receipt checks retain authenticated original Job user/connection identity.
* Unknown metadata drift remains protected; diagnostics identify changed key names without values.

= 4.0.5 — Native image interactions and Page guidance =

* Reviewed native Image/Gallery lightbox and media/attachment links preserve content and child order.
* Page creation guidance distinguishes native /wp/v2/pages Jobs from Post-only article_new.
* Missing exact Apply confirmations expose the required row map without starting writes.
* Full Gutenberg editor parity and hosted frontend certification remain pending.

= 4.0.4 — Claude OAuth opt-in =
* Optional exact hosted Claude OAuth callback through Dynamic Client Registration; existing ChatGPT defaults remain.
* Add Claude connection instructions and client-neutral consent labels. Existing capabilities, permissions and reviewed Jobs remain mandatory.


= 4.0.3 — AI setup prompt =
* Add one shared Copy AI Setup Prompt card to MCP & OAuth, Prompts and How to Use.
* Onboarding covers guides, live plan/permissions/catalog, reviewed Jobs and exact row confirmations.
* First-use tool hints and connection-specific guide revision receipts help clients discover/read the operating guides; receipts grant no authority.


= 4.0.2 — rich inline text candidate =
* Exact Gutenberg text replacement accepts validated inline Markdown, allowlisted HTML, and mixed rich text. Full-region targeting can cross existing inline formatting.
* Preview/review shows exact HTML; verification checks serialized markup. Unknown tags/attributes and unsafe links fail closed.
* Plain Free text preserves existing formatting; formatting/link creation remains Pro.


= 4.0.1 — staging candidate =
* Add server-side configuration for an optional explicitly enabled staging test account provider. Production rejects test entitlements.
* Document exact password validation without destructive credential sanitization; scope the Plugin Check exception to the credential read.


= 4.0.0 — development candidate =
* Split advanced implementations into a compatible GES Pro add-on while retaining shared Job, permission, verification and recovery infrastructure in Core.
* Require human signup/sign-in for the Free Plan. Add signed installation-bound entitlements, encrypted account sessions, replay protection, explicit migration and a local-only test account provider.
* Classify exact single-object Free text/title/excerpt/image metadata separately from paid actions; preserve native WordPress/connection/OAuth authority and reviewed remote Jobs.
* Preserve inline link/formatting wrappers during exact text replacement; enforce target image capabilities and strict metadata fields.
* Provide bounded authenticated recovery items after account disconnection/downgrade; keep stale-state, verifier, confirmation and original-authority checks.
* Require fresh migration entitlement when refresh is due; distinguish proven pre-write commercial refusals from uncertain native writes. Retain data by default on uninstall.
* Update AI/operator guidance and staging checklist. Public account service/billing, universal builders and built-in AI remain outside this candidate.

= 3.12.4 =
* Detect classic vs block themes for Custom CSS. Auto uses legacy Custom CSS for classic themes and Site Editor Global Styles styles.css for block themes; explicit legacy selection remains available.
* Read/preview without creating native records; display exact CSS diff, target store/theme and signed confirmation. Preserve all other Global Styles fields and the other CSS store.
* Apply through reviewed Jobs with native capability/connection/scope checks, live state guard, native read-back, revisions and durable audit.
* Add read-only custom-css-restore-plan for new reviewed reverse Jobs guarded by authenticated verified source checkpoints; stale/uncertain/changed-theme restoration fails closed.

= 3.12.3 =
* Explicitly disable the legacy CSV escape character in setCsvControl and both fgetcsv calls, preventing PHP deprecation output during CSV uploads without changing WP_DEBUG.

= 3.12.2 =
* Refresh unreviewed dependent block-settings targets through a complete verified same-Job checkpoint chain and return a fresh preview for approval; retain external-drift and removed-target rejection.
* Expose typed layout contracts and real native Columns/Buttons Job examples and dependency reference syntax. Reject unsupported structural fields instead of silently treating them as Groups.
* Extend exact set_link to supported native Paragraph/Heading/List Item leaf links with original URL and optional occurrence index, preserving labels and markup.
* Discover CSV/JSON recommendation imports separately from JSON/WXR content-transfer manifests.
* Add disposable acceptance fixtures for mixed dependencies, native structures, repeated URLs, independent permission revocation and retained uncertain-write reconciliation.

= 3.12.1 =
* Add nonce-protected wp-admin Approve, Reject and Start Apply for connection-bound mutation Jobs, with typed native confirmations and separate human/origin audit provenance.
* Recheck human native capabilities and original connection permissions at background execution; keep dependency steps behind fresh review.
* Hash canonical native raw REST values rather than changing derived rendered HTML. Preserve native stale-state and guarded recovery checks.
* Persist exact verifiers for bounded existing-content lifecycle updates; reconcile without replay and validate unrelated native state before marking verified.
* Classify native preflight failures as failed before write instead of uncertain execution. Preserve Paste JSON, Upload JSON and CSV controls.

= 3.12.0 =
* Ship the owner-derived AI operating guide, quickstart and source archive. Read through ai-operating-instructions; discovery and diagnostics link/check the guide.
* Add bounded non-post native REST resource queues with exact same-Job checkpoint/intent/expiry guards and protected native-state checks.
* Generate consolidated guarded REST recovery proposals for a new reviewed Job; refuse external drift and uncertain writes.
* Plan native theme style variations against an existing Global Styles resource, selecting a hash when titles are ambiguous.
* Add native Group Grid, ordered/reversed list controls, Details open state and Media/Text position/width/stacking/alignment; preserve children and native saved markup.
* Preserve existing comment IP and menu slug when an unrelated native update did not request those fields.


= 3.11.1 =
* Refine grouped MCP permissions: separate content/media lifecycle and navigation/templates; emphasize sensitive administration.
* Read Only, Content Editor, Site Manager and Full Access presets with exact permission disclosure; Custom describes existing combinations. Full Access keeps Critical Operations Advanced-only.
* Presets apply only on explicit action. Existing saved global/connection permissions, native capabilities and Job safeguards are preserved.


= 3.11.0 =
* Native per-side Gutenberg borders and expanded merge-only block setting serializers, preserving children and untouched settings.
* Broader verified same-page Job sequencing across text, attributes, metadata, SEO and bounded native REST writes; unexpected changes still fail closed.
* Reviewed native media processing and guarded file recovery; schema graphs; redirect lifecycle and opt-in 404 observations; explicit core settings.
* Bounded native JSON/WXR content transfer with verified prerequisite references, source/link evidence, explicit Multisite operations and same-Job fresh review/recovery reporting.
* New sensitive permissions default off. External builder expansion is deferred; no arbitrary PHP/database/filesystem editing or atomic cross-resource claim.


= 3.10.0 =
* Fix same-page exact Gutenberg text batches: refresh only from a verified same-job checkpoint, preserve approved intent/location/expiry, audit each refresh, and reject external or untracked changes.
* Add merge-only supported native block wrapper settings, preserving nested content and untouched attributes. Unsupported block formats/settings fail closed.
* Add grouped MCP permission buttons, scoped presets, connection disable, optimistic concurrency and guarded Undo.
* Add bounded native REST lifecycle, taxonomy, Site Editor and privacy workflows, typed media/structure blocks, internal links and content diagnostics through shared reviewed jobs.
* Same-resource refresh currently supports exact Gutenberg text mutations only. Full native sidebar, arbitrary builder/version parity and atomic cross-resource transactions are not claimed.


= 3.9.1 =

Gutenberg insertion now requires an exact anchor/path or an explicit append intent. Parent-column insertion and final parsed paths are verified; missing or ambiguous targets never silently append. Existing image blocks can be selected by exact source hash or attachment URL without rebuilding their saved metadata.

Structural dependency jobs support verified job-local references such as create-columns.column[0]. After each prerequisite Apply, re-read the saved block tree, remap paths, and capture a fresh dependent preview requiring fresh approval. Undeclared references, conflicting guessed paths and intervening content changes fail safely. No permanent IDs are injected into blocks.

Active FSE navigation resolves published native fallback menus through the selected template and template parts, while genuine inline navigation remains inline. Read-only resolution never creates a menu. Preview state includes the selected navigation identity. Frontend verification now reads native atomic HTML title tokens correctly.

This is a bounded reliability update. Broader Site Editor, lifecycle, arbitrary-builder and native video/embed capabilities remain outside this release. Cross-resource changes still use guarded compensation rather than an atomic transaction.

= 3.9.0 =

All remote mutation primitives now require the reviewed GES Job Engine. Create one job with family/action/target/proposal items; native confirmations and permission/state checks still apply. PHP internals remain reusable. Reads and previews do not require jobs. Legacy content jobs remain compatible.

For one native structural change, use builder/layout_update with operation compose. Read structure-context for exact block paths and source hashes. Compose supports real core/columns and core/column, percentage widths, native gap/alignment/mobile stacking, groups, rows, stacks and buttons. Existing block references move the original saved block exactly once; new image nodes use an existing Media Library attachment and preserve its caption/alt/ID. Anchor placement accepts exact text, path or source hash; ambiguous anchors, overlapping sources, locks, unsupported containers and stale previews fail safely. Cross-container moves synchronize nested placeholders. One compose step saves one content change and creates a revision through the normal WordPress lifecycle. Block ranges also accept validated native column replacements.

Coordinated page jobs support title/slug, registered template assignment, custom H1 and intro, referenced active navigation, supported SEO metadata with late-bound canonical URL, GES-managed same-origin 301 redirects and final public HTML verification. Dynamic Page List conversion preserves current order/hierarchy/page IDs but deliberately becomes explicit links; future new pages are not automatically added. Unused legacy menus are not substituted for active block navigation. Inline/fallback/builder-specific navigation and uninspectable templates fail safely.

Dependent resources share one logical job but are not an atomic transaction. Each dependent write is analyzed from fresh live state and needs fresh approval. Rendered verification can remain pending when public HTML is stale/unavailable. Reconciliation reads native/public state without replaying a write. Completed supported resources expose guarded reverse-order compensation as a new explicitly reviewed job. Concurrent edits and uncertain resources block unsafe snapshot restoration.

Ordinary content saves preserve the stored page template while avoiding WordPress inherited-template false errors. If a native template error nevertheless accompanies a complete exact write, independently verified state may be recorded with a separate warning instead of replaying the mutation.

admin-capability-registry distinguishes implemented adapters, disabled GES permissions, missing dependencies and unsupported admin-parity roadmap items. It never grants native WordPress capabilities. This release is not arbitrary wp-admin parity or all-version builder certification. Validate on a backed-up staging copy before production rollout.


= 3.8.0 =
* Universal allowlisted mutation jobs bridge existing native Preview/Apply adapters with encrypted durable requests, idempotent Create, explicit review, per-row native confirmations, state rechecks, verification and audit.
* Dependent steps are analyzed after prerequisites verify and require fresh approval. Partial failures are explicit; uncertain writes are never blindly replayed.
* New Mutation Jobs Read/Queue/Review connection permissions; Review defaults off. Native WordPress, adapter permissions, OAuth scopes and exact connection binding still apply.
* Guarded image-import Preview/Apply and mutation catalog. No dependency installation, provider credentials, arbitrary wp-admin parity or new builder-format certification is implied.


= 3.6.1 =
* Added explicit exact full-paragraph replacement, including introductions and nested Gutenberg paragraphs, through shared job/MCP analysis and verification.
* Added selector visibility to job results/export and paragraph diagnostics/help.
* Enforced saved analysis hashes in background Apply; completed direct granular MCP permission checks and durable mutation auditing.
* No database schema change. Existing heading-scoped payloads keep their meaning.


= 3.6.0 =
* Added a shared Posts/Pages/eligible-CPT write model with URL or post_id targets.
* Added per-connection MCP permissions and an implemented/planned control-surface ability.
* Added durable mutation audit logging.
* Added audited Review approve/reject control with explicit confirmation and bulk row selection support through MCP.
* Added Preview/Apply status management, core metadata controls, revision discovery, and guarded revision restore.
* Added `citation_repair` to the structured content operation model.
* Added structured `faq_update` using native WordPress details/summary blocks while keeping raw HTML blocked.
* Added Rank Math and Yoast SEO adapters with active-plugin detection, whitelisted post-level fields, focus keywords, schema support, no-op detection, state validation, verification, and audit events.
* Added Rank Math optional-module status reporting with `MODULE_DISABLED` for disabled 404 Monitor/Redirections.
* Added Media Library search/get/recommend, optional Pexels/Unsplash/Pixabay search, controlled external import/provenance, media metadata, featured image, and verified Gutenberg content placement.
* Hardened nested Gutenberg media insertion/replacement by synchronizing innerBlocks/innerContent placeholders.
* Expanded machine-readable permission/error semantics and beta diagnostics.
* Added FAQ AI prompt and expanded How to Use documentation.
* Replaced temporary-file unlink calls with WordPress file deletion helpers.

= 3.5.0 =
* Added read-only content-query across Posts, Pages, and eligible CPTs.
* Hardened citation input and structural post-Apply verification.
* Added normalized visible-text matching, heading diagnostics, structured previews, and stable reason codes.

= 3.4.0 =
* Added OAuth 2.1 Authorization Code + PKCE + Dynamic Client Registration for ChatGPT Custom MCP.

= 3.3.0 =
* Expanded MCP job orchestration and added Diagnostics/Beta testing.

= 3.2.0 =
* Added reviewed New Article creation with Markdown, metadata, taxonomies, and media.

== Upgrade Notice ==

= 3.6.0 =
Adds new audit/permission infrastructure and a much broader safe control surface. Review MCP permissions after upgrading; high-risk permissions remain disabled by default.


== 3.7.0 development candidate: exact blocks and guarded adapters ==

Exact text replacement no longer requires H2/H3. Static supported Gutenberg text regions include introductions, headings, paragraphs, list items, button labels and captions. Optional heading, block name, block path and text-region filters disambiguate matches. Unknown/dynamic blocks and partial replacements spanning inline markup fail safely.

Use block-range-preview / block-range-apply to delete or replace consecutive exact sibling blocks, including supported nested containers. Targets identify block_name plus exact_text and/or source_hash. replacement: [] deletes the range; one text node merges several paragraphs. Ambiguous matches and changed source fail before saving. Direct range Apply requires content.write and content.review; queued block_range_replace / block_delete operations require separate review before background Apply. Empty text_replacement remains invalid.

Native administration families now include menus, users, comments, settings, plugin/theme/core lifecycle, Site Health reads, protected GES custom roles, registered custom fields, scalar ACF fields and selected WooCommerce REST resources. Native WordPress permissions and GES connection permissions both apply. High-risk changes require signed, expiring previews and explicit confirmation. Installation sources are official WordPress.org packages with exact versions. No arbitrary PHP execution or arbitrary serialized metadata writes.

Builder-neutral text intents route to Gutenberg, Elementor, Beaver Builder, or format-checked Divi/Bricks adapters. Portable layout operations support Gutenberg and Elementor; other builders reject structural operations. Static body HTML can be converted read-only to portable editable sections plus reusable CSS; applying the section and merging/applying CSS are separate reviewed operations. Scripts, forms, external images and unsupported markup fail closed.

Validation limits: Divi/Bricks adapters have contract fixtures, not licensed vendor runtime tests. All versions and all popular builders are NOT certified. Plugin installation/update, theme installation/update and core upgrade paths need staging/production-equivalent filesystem and package tests. Package deletion, emails, commerce hooks and core upgrades have no universal rollback. Database schema remains 3.6.0. Treat this as a development candidate until these deployment checks are complete.


== 3.7.1 maintenance release ==

Consecutive exact block ranges now ignore only whitespace-only unnamed parser fragments between target blocks. Comments, HTML, named spacer blocks and visible freeform text remain meaningful boundaries. Raw paths and complete source hashes remain authoritative. Deletion/merge counts distinguish target blocks from internal separators.

Database version advances to 3.7.1 and verifies all six plugin tables before stamping success. Audit storage also repairs a missing audit table independently of the version marker. Permission saves preflight storage, verify saved policy and roll back policy if audit persistence fails, without printing database errors into redirect responses.

SQL identifiers use native %i placeholders, output IDs are explicitly cast, request headers and policy inputs have explicit validation, uninstall globals are prefixed, and CSS is supplied unminified. Necessary custom-table queries and intentional read-only view filters have narrow documented coding-standard exceptions. Development tests and generated logs are distributed separately from the install ZIP.

The adapter/version, external side-effect, native-upgrade and transport validation limits documented for 3.7.0 still apply. This maintenance release does not certify all versions of commercial builders or universal wp-admin parity.


== 3.7.2 live-regression fixes ==

Legacy inline Gutenberg lists now expose exact leaf li text regions without reconstructing list HTML. Duplicate text still requires block/region scope; modern list-item blocks retain their existing behavior. Nested ancestor list items are not flattened.

Importing an image already in the Media Library preserves all existing provenance, including the original import timestamp. Source metadata is written only when a new attachment was actually created. Existing historical test metadata is not automatically removed.

Core metadata proposals omit values that already match the sanitized current value, including author, featured image and taxonomy sets. No-op Apply does not call save hooks, change modified time or create an audit mutation. Mixed proposals write only changed fields.

Background article creation/content updates now record the initiating MCP client from the persisted server-bound payload. This does not install or reuse an OAuth authentication context. Retried MCP rows also recheck the saved connection's current write permission. Locally created unbound jobs are attributed to background processing.

Database version remains 3.7.1; no schema change. This release fixes the four live-confirmed defects and retains the documented builder/deployment validation limits.

== Universal mutation jobs ==

Use get-mutation-catalog before constructing a family/action/target/proposal envelope for create-job. Supply a stable idempotency_key for retries. Universal jobs accept at most 100 steps and must not mix with legacy content placements. Native adapter parameter schemas remain authoritative. Analysis is read-only. Approve each REVIEW step using review-decision, then pass confirmations keyed by row ID to start-job-apply. Mutation Jobs Review defaults off and must be explicitly allowed on the connection. READY does not bypass lifecycle confirmations.

Payloads and native signed plans use authenticated AES-256-GCM encryption with a key derived from the site's auth salt. OpenSSL is required for universal jobs; changing auth salts invalidates stored encrypted plans. WordPress capabilities, current connection permissions, saved OAuth scopes and OAuth-family revocation are checked again in the background. Read/review/control through MCP is isolated to the originating connection. Existing legacy content jobs remain compatible.

Dependencies must name earlier step IDs. After prerequisites finish, dependent steps receive a fresh preview and require new approval/confirmation. Independent writes targeting the same resource can become stale; declare dependencies explicitly. Cross-resource transactions and automatic compensating rollbacks are not provided. Native rollback/revision guarantees are retained. Pre-execution failures may be retried idempotently through fresh analysis/review. Attempts that may have entered native execution are never cloned automatically: inspect native state and create a fresh approved manifest for remaining work. Creation keys and durable execution checkpoints prevent blind duplicate submission/replay.

Existing builder limits still apply: Elementor/Beaver use native adapters; Divi/Bricks depend on supported installed contracts and fail closed for unsupported formats. WooCommerce requires its active REST routes. External provider searches require site-owner API keys; these are configuration dependencies, not permissions to install plugins or fabricate credentials.

Universal mutation jobs submitted over HTTP require an identified GES OAuth connection. Unidentified/application-password clients without a GES connection ID fail closed rather than sharing an empty connection identity. Existing legacy content jobs are unchanged.
