New Features
* #3584371 Add Extractive Question Answering operation type
* #3586451 Add UI toggle to enable MDXEditor on plain text field widgets
* #3575190 Only one AI Automator worker queue item is processed per cron execution
* #3586543 Add an AI reranking processor for Search API (owned by the AI module)
* #3586517 Config action to verify if any vector database is there and it is setup
* #3581952 Add event hook to ai_ckeditor to allow context injection
* #3584977 RestrictToTopic guardrail: add semantic topic matching mode
* #3568648 Batch embeddings for improved indexing performance
* #3584951 Add SensitiveContentStream guardrail and kernel test for StreamableGuardrailInterface mid-stream buffering and evaluation
* #3586478 Add rich-text image description support to AI Automators
* #3585077 Integrate ChatProcessor plugin system into AI Chatbot DeepChat block
* #3585075 Add AI Assistant API ChatProcessor plugin
* #3586531 Add a Moderation Guardrail plugin (configurable moderation provider/model as a guardrail)
* #3586602 Support Automator Chain trigger with Field Widget Actions
* #3586585 Add YAML support to the MDX editor code blocks
* #3586539 Add a ChatMemoryInterface for storing ChatBot chat history
* #3586468 Add interactive refinement capability to Field Widget Actions
* #3536912 Suggest Tags automator should work with Tagify
* #3586389 Unable to override the 'Calling agents'  / 'Contacting agents' text
* #3586702 Emit automator config ID tag and entity_context on chat requests
* #3566762 Improve summarizer for AI request input and output data for logs and spans
* #3586535 AI Automator Token Replacement with removing unresolved Tokens (Checkbox?)

Tasks
* #3586452 Sync issue templates with project labels
* #3586479 [Layer 2] Align ai_observability OTel emission to GenAI semantic conventions (gen_ai.*)
* #3574662 Reject caller-supplied execution identity fields at /api/deepchat boundary
* #3586537 Add Summarization operation type support to the echoai test provider
* #3586536 Support the `ai_json_schema` element inside off-canvas dialogs
* #3586595 Add league/commonmark as real dependency not a suggestion
* #3586572 Add metadata (token usage and rate limits) to ChatGenerator in AI API Explorer
* #3586669 Hide deprecated submodules that are down to skeleton code in 1.x
* #3586698 Reinstate ai_search and deprecate it before removal
* #3586699 Reinstate AI CKEditor in composer.json and deprecate it before removal
* #3586706 Pin drupal/ai_logging to a stable release in composer.json (drop @alpha flag)
* #3586475 Rename Guardrails "RegExp guardrail" plugin to just "RegEx"
* #3582633 Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests
* #3586563 [1.x] Add a setup-automators agent skill to configure automators on fields

Bugs
* #3586398 Add GitLab issue and merge request templates
* #3586394 Add Warning when Missing Built Assets
* #3586485 "Create new prompt" button doesn't work in CKEditor plugin configuration
* #3586473 ai_observability: streaming OTel spans drop final token usage (span ended on un-consumed iterator)
* #3586652 If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php) & more
* #3586637 `AiReranker::extractItemText()` should prefer chunk text over configured indexed fields
* #3586668 DeepChat block lost backwards compatibility for its old configuration in 1.5.x
* #3586656 ai_test EchoProvider ToolsOutput type mismatch causes crashes when testing tool calls
* #3586578 InputLengthLimit guardrail does not consistently scan user messages
* #3586691 Fix typo on AI Observability docs page: scrappers should be scrapers
* #3586708 PHPStan D10 failures: ChatMemoryPluginBase extends ConfigurablePluginBase, which only exists in core 11.3+
* #3586729 SetupVdbServer and SetupVdbIndex config actions aren't idempotent, recipe re-apply fails
* #3586713 Clicking the "Automator Metatag" button on a node form does nothing
* #3586715 Field Widget Action for Moderation State: Clicking the "Automator Moderation State" field widget action does nothing
* #3586745 AI Reranker makes it impossible to save the Search API Processors form when no rerank model is selected, even when the processor is disabled

Contributors:
breidert, robloach, joshua1234511, b_sharpe, ahmad khader, marcus_johansson, a.dmitriiev, manandearth, sgavilan, jorgik, ajv009, harivansh, abhisekmazumdar, adhariwal, jucs7, jessehs, kristen pol, akhil babu, ahmad-khalil-imagex, paulsheldrake, scott_euser, abarrio, nikro, scott falconer, fago, lbesenyei, merilainen, gxleano, farse, csakiistvan, violaniko, annmarysruthy, prabha1997, ezeedub, fizcs3, cobadger, mandclu, kotekirkitadze, ajabhinavjha30, aivazashvilit, cadence96, d34dman, ultimike, ishani patel, shivamsen_12579, rduterte, tbalog, loopduplicate, m4olivei, murz, tazo_vekua, ro-no-lo