# Prompt log — 24h 2026-08-07 ======================================================================== ## [1] summariseModule:ai:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI (Artificial Intelligence) (machine name: ai) Reporting period: last 24h (2026-08-07T05:00:05+00:00 to 2026-08-08T05:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Ann Mary Sruthy (annmarysruthy)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

AI (Artificial Intelligence)

then use

,

,

    /
  • , and as needed. Output only the HTML fragment with no surrounding , , or
    tags. After the project summary prose, add a single subsection titled "

    How can I help on this project?

    " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [LLM: Text / LLM: Text (simple) automators silently drop Base Field content when Base Field and Target Field are both long-text types (Basic input mode)](https://git.drupalcode.org/project/ai/-/work_items/3586659) State: opened | Updated: 2026-08-07 | Author: Adrian McKee (Adrianm6254) | Assigned: unassigned | Labels: category::bug, priority::normal, state::accepted Description: Problem/Motivation When configuring an LLM: Text (llm_text_long) or LLM: Text (simple) (llm_simple_text_long) automator in Basic input mode, with Automator Base Field set to another long-text field on the same entity (e.g. Body → a new summary field, both text_long/string_long type), the Base Field's content is not included in the request sent to the AI provider. The model consistently responds as though no source content was provided at all, e.g.: "I don't see an article provided in your message. Please share the article you'd like me to summarize..." This happens regardless of whether the… ### [`AiReranker::extractItemText()` should prefer chunk text over configured indexed fields](https://git.drupalcode.org/project/ai/-/work_items/3586637) State: opened | Updated: 2026-08-07 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: ai::inside, category::bug, priority::normal, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1908 [bug: #3586637 should prefer chunk text over configured indexed fields](https://git.drupalcode.org/project/ai/-/merge_requests/1908) | State: opened | Author: Ann Mary Sruthy (annmarysruthy), 204 diff lines Description: ## Problem/Motivation `ai_search`'s chunk-mode retrieval (used by `RagTool` and any other consumer querying with `search_api_ai_get_chunks_result`) carries the actual chunk text in `$item->getExtraData('content')`, not in the item's configured indexed source fields. `AiReranker::extractItemText()` only reads the processor's configured `source_fields` off each result item. For chunk-mode results this means every chunk belonging to the same entity reranks against the same text: the entity's full configured field content, not the individual chunk. Chunk-level rerank quality regresses to entity-… ### [Release 1.4.6 and 1.3.11](https://git.drupalcode.org/project/ai/-/work_items/3586650) State: closed | Updated: 2026-08-07 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: category::task, priority::normal Description: Expected release date: 5/Aug/26 QA issue: #3586651 ### [Drupal 11.4 DeepChat Block does not work with Webprofiler enabled](https://git.drupalcode.org/project/ai/-/work_items/3586615) State: opened | Updated: 2026-08-07 | Author: jesmaster (Jesmaster) | Assigned: Rodel Duterte (rduterte) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::bug Description: Chatbot was working on Drupal 11.3, I updated to 11.4 and the chatbot doesn't open when clicked anymore, there are no javascript errors in the console log. I deleted the block and re-created it and I'm getting this AJAX error when choosing the assisstant. ### [Allow Internal Tool Calling](https://git.drupalcode.org/project/ai/-/work_items/3586616) State: opened | Updated: 2026-08-07 | Author: Bryan Sharpe (b_sharpe) | Assigned: unassigned | Labels: aiCoreModule, category::feature, priority::normal, state::accepted Description: ## Summary Most AI providers have their own toolsets that can be used via the APIs, we should have configurable sets to allow/deny provider tools when making calls. ## Problem Currently there is no way to call internal tools provided by the provider. ## Proposed solution *(optional)* - Allow tool deny/allow list per Operation Type, similar to model configuration - This should expose the tool as available, not automatically make it append to requests. For example if we allow the "web_search" tool to be available, the item using it (i.e. Agent) would still need to attach it, just like fun… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [2] summariseModule:ai_initiative:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Drupal AI Initiative (machine name: ai_initiative) Reporting period: last 24h (2026-08-07T05:00:05+00:00 to 2026-08-08T05:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

    Drupal AI Initiative

    then use

    ,

    ,

      /
    • , and as needed. Output only the HTML fragment with no surrounding , , or
      tags. After the project summary prose, add a single subsection titled "

      How can I help on this project?

      " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Call with UNDISCLOSED to join AI initiative](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586677) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: They Joined! ### [Emails with Vardot to join AI initiative](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586676) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: They joined! ### [Call with will Open sense labs to join AI initiative](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586675) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: they joined! ### [Call with will Jairo from SEEDEM to join AI initiative](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586674) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: They joined before Vienna! ### [Call with will zoocha to join AI initiative march 2026](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586673) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Call with will zoocha to join AI initiative > joined ### [Called mike giamon from elevated third to join aug 2025](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586672) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Called mike giamon from elevated third to join aug 2025 > they joined ### [Talked to Prateek from Axelerant to join juli 2026](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586671) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Talked to Prateek from Axelerant to join juli 2026 > they joined ### [Called with Morpht to renew second time in march 2026](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586670) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Called with Morpht to renew second time in march 2026 > they renewed ### [Talked to Morpht in juli 2025 to join initiative](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586669) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Talked to Morpht in juli 2025 to join initiative > they joined ### [Talked with Dipen from QED42 on joining in july 2025](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586668) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Talked with Dipen from QED42 on joining in july 2025 > they joined ### [Bring in ImageX Glenn hilton in aug 2025](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586667) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Bring in ImageX Glenn hilton in aug 2025 > they joined as silver partner ### [Called with Michael from Amazee to bring them in june 2025](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586666) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Called with Michael from Amazee to bring them in june 2025, they joined at 20k as the first non founder. ### [Brought in Acquia as founding sponsor in may 2025](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586665) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Messaged and mailed with Dries and Acquia to bring them in as founding member. ### [Call with Kristen to make Salsa join may 2025](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586664) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Made deal with Salsa to join AI initative as a founding member by provide Kristen. ### [Call FG Jamie at Drupaljam on funding may 2025](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586663) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Sat with Jamie to get the first 20k at Drupaljam 2025 ### [Call with 1xinternet may 2025](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586662) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: May 2025 called Baddy to get the first 20k for the AI initiative. ### [Drupal AI Slide Deck](https://git.drupalcode.org/project/ai_initiative/-/work_items/3533346) State: closed | Updated: 2026-08-07 | Author: drupalbot | Assigned: James Tillotson (james_tillotson) | Labels: category::task, marketing, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [pdjohnson](https://www.drupal.org/user/72810) >>> Problem/Motivation Drupal AI lacks a presentation that could be used by those wishing to pitch to clients, present to a conference, use as an attachment to email about Drupal AI for a follow up after visiting a booth e.g. AI Summit London. We are building out companion pages on Drupal.org. This deck could help inform those pages and we need to make sure each is aligned. In turn, links could be provided to the D.O pages in the deck. Reference material We have some slides already created which may serv… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [3] summariseModule:mcp:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Model Context Protocol (machine name: mcp) Reporting period: last 24h (2026-08-07T05:00:05+00:00 to 2026-08-08T05:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Shubham Goel (shubhamgoel)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

      Model Context Protocol

      then use

      ,

      ,

        /
      • , and as needed. Output only the HTML fragment with no surrounding , , or
        tags. After the project summary prose, add a single subsection titled "

        How can I help on this project?

        " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Add OAuth Scope Validation for MCP Authentication](https://git.drupalcode.org/project/mcp/-/work_items/3569845) State: opened | Updated: 2026-08-07 | Author: drupalbot | Assigned: Shubham Goel (shubhamgoel) | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, ai::outside Description: >>> [!note] Migrated issue Reported by: [shubhamgoel](https://www.drupal.org/user/3682434) Related to !44 >>> When authenticating from the MCP client to the server, the authentication succeeds with all the dynamic scopes requested. There should be an option to enable or configure only the supported OAuth fields/scopes. --- MERGE REQUESTS (24h) --- ### [#3569845: Add Oauth Scope Validation](https://git.drupalcode.org/project/mcp/-/merge_requests/44) State: opened | Author: Shubham Goel (shubhamgoel) | Branch: 3569845-add-oauth-scope | 865 diff lines Description: Closes #3569845 --- COMMITS (24h) --- (none) ======================================================================== ## [4] summariseModule:ai_agents:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Agents (machine name: ai_agents) Reporting period: last 24h (2026-08-07T05:00:05+00:00 to 2026-08-08T05:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Prabhavathi Vanipenta (prabha1997)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

        AI Agents

        then use

        ,

        ,

          /
        • , and as needed. Output only the HTML fragment with no surrounding , , or
          tags. After the project summary prose, add a single subsection titled "

          How can I help on this project?

          " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Enabling Artifact Storage on the "List content entities" tool throws error](https://git.drupalcode.org/project/ai_agents/-/work_items/3586062) State: opened | Updated: 2026-08-07 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: category::bug, priority::normal, state::needsReview Description: **Problem** Enabling Artifact Storage on the built-in "List content entities" tool causes agent runs to fail with: `Error: The action result cannot be retrieved until the action ::execute() method has been called.` Enabling Artifact Storage on other tools (e.g. "Set field value") works fine with the same agent/prompt. **Steps to reproduce** 1. Create an agent with three tools: "Set field value" (tool_ai_connector), "List content entities" (ai_agents), "Save content item" (ai). 2. Do not enable Artifact Storage on any tool; do not use any default information tools. 3. Set the Agent prompt … ### [PrivateTempStatusStorage::getTempStoreKey() overflows key_value_expire.name for anonymous users with long ids](https://git.drupalcode.org/project/ai_agents/-/work_items/3586063) State: opened | Updated: 2026-08-07 | Author: Kwame Asamoah Boateng (asamoahboateng) | Assigned: unassigned | Labels: category::bug, priority::normal, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !338 [Agent status tempstore key overflows for anonymous users](https://git.drupalcode.org/project/ai_agents/-/merge_requests/338) | State: opened | Author: Prabhavathi Vanipenta (prabha1997), 21 diff lines Description: `PrivateTempStatusStorage::getTempStoreKey()` builds the agent status tempstore key as `'ai_agents_status_updates_' . $id`, using the caller-supplied `$id` verbatim with no length bound (`web/modules/contrib/ai_agents/src/Service/AgentStatus/Storages/PrivateTempStatusStorage.php:115-117`). `PrivateTempStore::set()` prefixes that key with an owner identifier before writing it to `key_value_expire.name`, a column hard-capped at 128 chars (`varchar_ascii`, length 128). For authenticated users the owner is just the numeric uid (short), but for anonymous visitors it's a ~44-character random sessio… --- MERGE REQUESTS (24h) --- ### [Skip tools that never executed when collecting tool result images](https://git.drupalcode.org/project/ai_agents/-/merge_requests/339) State: opened | Author: Prabhavathi Vanipenta (prabha1997) | Branch: 3586062-enabling-artifact-storage-on-the-list-content-entities-tool-throws-error | 24 diff lines Description: Closes #3586062 --- COMMITS (24h) --- (none) ======================================================================== ## [5] summariseModule:canvas:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Drupal Canvas (machine name: canvas) Reporting period: last 24h (2026-08-07T05:00:05+00:00 to 2026-08-08T05:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: **** (project_19391_bot_17a61b0edeafd5a3db3e8b2462b6c010), **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Adam G-H (phenaproxima), Ben Mullins (bnjmnm) [1], Canvas version bot [2], Christian López Espínola (penyaskito) [2], David Bravo (davidbp), Feliksas Mazeikis (f.mazeikis), Fons Vandamme (f0ns), Gábor Hojtsy (goba), Harumi Jang (hooroomoo) [1], Kunal Sachdev (kunal.sachdev), Lauri Timmanee (lauriii) [1], utkarsh_33 (Utkarsh_33), wotnak [1]". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

          Drupal Canvas

          then use

          ,

          ,

            /
          • , and as needed. Output only the HTML fragment with no surrounding , , or
            tags. After the project summary prose, add a single subsection titled "

            How can I help on this project?

            " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Dependency Dashboard](https://git.drupalcode.org/project/canvas/-/work_items/3591657) State: opened | Updated: 2026-08-08 | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Assigned: unassigned | Labels: projectManagement Description: This issue lists Renovate updates and detected dependencies. Read the [Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/) docs to learn more. ## Repository Problems Renovate tried to run on this repository, but found these problems. - ⚠️ WARN: Failed to set branch status - ⚠️ WARN: No github.com token has been configured. Skipping release notes retrieval - ⚠️ WARN: Rate limit exceeded for api.github.com, as no hostRules set for this host. Please set a GITHUB_COM_TOKEN - ⚠️ WARN: No tool releases found. ## Deprecations / Replacements > ⚠️ **Warning** > The foll… ### [StaticPropSource widget building is order-dependent: dangling prop fields collide in core's TypedData item-prototype cache](https://git.drupalcode.org/project/canvas/-/work_items/3591918) State: closed | Updated: 2026-08-08 | Author: Christian López Espínola (penyaskito) | Assigned: unassigned | Labels: category::bug, priority::normal, reduxIntegratedFieldWidgets, state::rtbc Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1476 [Name dangling prop fields by field type so different-typed prop widgets don't share a TypedData item prototype](https://git.drupalcode.org/project/canvas/-/merge_requests/1476) | State: merged 2026-08-08 | Author: Christian López Espínola (penyaskito), 78 diff lines Description: ## Problem/Motivation `StaticPropSource` conjures a host-less, nameless field item list to render a widget for a single component prop. `StaticPropSource::formTemporaryRemoveThisExclamationExclamationExclamation()` then re-parents that field under a host entity via `setContext(NULL, EntityAdapter::createFromEntity($host_entity))`. Drupal core's `TypedDataManager::getPropertyInstance()` caches field item *prototypes* keyed by the root object's data type plus the field's property path. After re-parenting, every synthetic prop field — whatever its own field type — presents the same root (`entit… ### [Clear the component hover outline when a drag starts](https://git.drupalcode.org/project/canvas/-/work_items/3591929) State: opened | Updated: 2026-08-08 | Author: Lauri Timmanee (lauriii) | Assigned: unassigned | Labels: Needs review Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1483 [bug: Component hover outline stays visible after a drag starts](https://git.drupalcode.org/project/canvas/-/merge_requests/1483) | State: opened | Author: Lauri Timmanee (lauriii), 79 diff lines Description: ## Overview In the Canvas editor, the hover outline on a component in the preview stays visible after you start dragging it, and is still there after the drag ends, after an invalid drop, and after cancelling with Escape. To reproduce: hover a component in the preview, press the mouse down, and move a small distance without leaving that component's bounds. The editor stores a single hovered component uuid, written on `mouseover` and cleared on `mouseout`. The drag sensor activates after 3px, so a normal drag starts without the pointer crossing the component's boundary, no `mouseout` fires, … ### [`drush config:import` can fail to update a Component whose `active_version` changed](https://git.drupalcode.org/project/canvas/-/work_items/3591905) State: closed | Updated: 2026-08-07 | Author: Dave Long (longwave) | Assigned: unassigned | Labels: category::bug, dataModel, priority::major, state::fixed Description: Importing configuration for an existing `canvas.component.*` config entity can fail when its `active_version` differs from the one in the target database: ``` Unexpected error during import with operation update for canvas.component.extjs.my_component: 'component' entity is a versioned config entity, and its loaded version is not the active version. ``` This blocks the standard `drush deploy` workflow: change a component's props in one environment, export, then deploy to another. Any deploy that bumps a version hash can fail, unless a cache clear takes place immediately before importing confi… ### [Allow component properties to be categorized/grouped/organized](https://git.drupalcode.org/project/canvas/-/work_items/3492758) State: opened | Updated: 2026-08-07 | Author: drupalbot | Assigned: unassigned | Labels: category::feature, pageBuilder, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) Related to !1071 >>> Overview Right now, if you have a number of component properties, they all show up in the UI with no organization other than the order they show up in the yml file. There are reasons why it could improve the UX to allow for the categorization of the properties. For example, if there are properties for filling in the content of the component vs properties for styling the component, they could be separated to make this more clear, e.g. a button might have: Content - icon- text- urlSt… ### [Brand Kit color support](https://git.drupalcode.org/project/canvas/-/work_items/3591838) State: closed | Updated: 2026-08-07 | Author: Ben Mullins (bnjmnm) | Assigned: Ben Mullins (bnjmnm) | Labels: state::rtbc Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1432 [#3591838 [PHASE 2] introduce color props](https://git.drupalcode.org/project/canvas/-/merge_requests/1432) | State: opened | Author: Ben Mullins (bnjmnm), 4472 diff lines - MR !1385 [#3591838 brand kit color implementation](https://git.drupalcode.org/project/canvas/-/merge_requests/1385) | State: merged 2026-08-07 | Author: Ben Mullins (bnjmnm), 8092 diff lines - MR !1479 [Draft: #3591838 Phase 3: Usage data + deletion](https://git.drupalcode.org/project/canvas/-/merge_requests/1479) | State: opened | Author: Ben Mullins (bnjmnm), 14666 diff lines Description: ## Brand Kit: Color management ### Summary Add a Color entity type to Brand Kit, enabling brand owners to define, organize, and manage a color palette globally. This is the foundational layer — color props on components (allowing editors to select brand colors when configuring components) will follow in a later issue. ### What this adds - **Color entity type** using the [W3C color design tokens spec](https://www.designtokens.org/tr/2025.10/color/#srgb-linear) for storing color values, along with a human-readable name and CSS variable name. - **Brand Kit panel** — colors tab in Brand Kit fo… ### [Unnecessary horizontal movement](https://git.drupalcode.org/project/canvas/-/work_items/3534972) State: closed | Updated: 2026-08-07 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, pageBuilder, priority::major, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1392 [Give the editor canvas a reluctant vertical drag auto-scroll](https://git.drupalcode.org/project/canvas/-/merge_requests/1392) | State: merged 2026-08-07 | Author: Lauri Timmanee (lauriii), 403 diff lines Description: >>> [!note] Migrated issue Reported by: [lauriii](https://www.drupal.org/user/1078742) >>> Overview For some reason, XB tries to move horizontal position when I drag a component to some slots. It makes sense that the canvas scrolls when you try to drag something to the edge. In this scenario, I'm pretty far away from the edge so I'm not sure what's causing the movement. Proposed resolution User interface changes ### [Canvas AI: page builder discards the whole build when the LLM names a region that does not exist](https://git.drupalcode.org/project/canvas/-/work_items/3591876) State: opened | Updated: 2026-08-07 | Author: Rajab Natshah (RajabNatshah) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai, ai::inside Description: ## Problem/Motivation `CanvasAiPageBuilderHelper` throws when the AI names a target region that is not present in the current layout: ``` Region "%s" not found in layout ``` The LLM commonly guesses a generic region name that does not exist on the entity's actual layout (for example `content` capitalized, `0`, or `header` on a single-region layout). The exception aborts the entire page-build operation, so the whole AI response is discarded instead of degrading gracefully into a usable page. ## Steps to reproduce 1. Use the Canvas AI page builder to add components on a page whose layout do… ### [Component version hashes go stale on single-process installs: prop-shape re-resolution is deferred to teardown and skipped on a cold cache](https://git.drupalcode.org/project/canvas/-/work_items/3591916) State: opened | Updated: 2026-08-07 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito) | Labels: category::bug, priority::major, shapeMatching, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1478 [#3591916 Drain invalidated prop shapes before component generation; narrow the cold-cache guard](https://git.drupalcode.org/project/canvas/-/merge_requests/1478) | State: opened | Author: Christian López Espínola (penyaskito), 476 diff lines Description: ### Overview A site installed with `drush site:install` (or any single-process recipe apply) can end up with Component config entities whose `active_version` hash does not match what the current site state generates — and the site stays that way until an unrelated event regenerates components. The same recipes applied through the browser installer produce a different (correct) version history, because the work is split across multiple requests. The cause is how `PersistentPropShapeRepository` refreshes storable prop shapes: - When config that affects prop shapes changes mid-process (e.g. a … ### [Array prop shapes don't inherit their item shape's cache tags, so prop-shape invalidation misses them](https://git.drupalcode.org/project/canvas/-/work_items/3591917) State: closed | Updated: 2026-08-07 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito) | Labels: category::bug, priority::normal, shapeMatching, state::rtbc Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1475 [#3591917 Array prop shapes inherit their item shape's cache tags](https://git.drupalcode.org/project/canvas/-/merge_requests/1475) | State: merged 2026-08-07 | Author: Christian López Espínola (penyaskito), 284 diff lines Description: ### Overview Components with an array prop (e.g. an array-of-images prop, mapped to a multi-value field) do not get a new version when config changes the storable prop shape of the array's *items* — even in situations where components using the same item shape directly *do* get one. Cause: when an array shape's storable prop shape is computed, the item shape is resolved through the prop shape repository and its field type, widget, and settings are copied into the array's `StorablePropShape` — but the cache tags that alter hooks attach to the *item* candidate (e.g. `config:media_type_list` fr… ### [Expose headless page helpers from isomorphic package entries](https://git.drupalcode.org/project/canvas/-/work_items/3591928) State: closed | Updated: 2026-08-07 | Author: wotnak | Assigned: wotnak | Labels: headless Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1480 [fix(Headless): #3591928 Expose headless page helpers from isomorphic package entries](https://git.drupalcode.org/project/canvas/-/merge_requests/1480) | State: merged 2026-08-07 | Author: wotnak, 694 diff lines Description: `PageResult`, `isPageRedirect()`, and page-head serialization are currently exported only from the server entry. Nuxt and TanStack routes receive these serializable results through server endpoints or functions but execute in isomorphic bundles. Using the server entry adds server code to client bundles, while avoiding it requires duplicate response types. ### Proposed resolution Move the page contracts and pure helpers to the isomorphic `@drupal-canvas/headless` entry while preserving existing server re-exports. Add a client-safe `@drupal-canvas/headless-tanstack-start/head` entry for `toTan… ### [Text-based comparison of entities](https://git.drupalcode.org/project/canvas/-/work_items/3591668) State: opened | Updated: 2026-08-07 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis), Ravi Maniyar (ravi.maniyar.123) | Labels: Conflict resolution, auto-save, autoSave, backend Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1241 [feat(Conflict detection): #3591668 "Text-based Page entity representation via Canvas API"](https://git.drupalcode.org/project/canvas/-/merge_requests/1241) | State: opened | Author: Feliksas Mazeikis (f.mazeikis), 685 diff lines Description: ### Overview As part of #3587587 we need to be able to compare entities with conflicts not only using visual preview, but also using text-based side-by-side comparison. This issue adds such functionality for Page entities in Canvas. There are two separate MRs: 1. !1241+ is adding BE changes and is currently blocked on !1356 2. !1266 is the MR with FE changes adding this functionality ### Proposed resolution * Add BE endpoint that: * Accepts `'autoSaved'` boolean query argument, allowing user to request auto-save draft or published version of the entity * Response contains only serves… ### [[META]Canvas AI: Client-side orchestration loop roadmap](https://git.drupalcode.org/project/canvas/-/work_items/3591777) State: opened | Updated: 2026-08-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: ai Description: ## Development strategy Breaking changes and new features ship behind a dev module, the way Canvas already does it for conflict detection with `canvas_dev_cd`. We create `canvas_dev_ai` and hide the revamped flow behind it. - **New tools and services merge directly into `canvas_ai`**, not the dev module: `place_components`, `edit_components`, `set_page_value`, `get_component_details`, and their supporting services. - **The controller is cloned into `canvas_dev_ai`.** Copy `canvas_ai`'s existing `CanvasBuilder` into the dev module with the hop-loop `render()`, served at `/admin/api/canvas/ai-… ### [Canvas AI: Cover the error path that clears stored agent state](https://git.drupalcode.org/project/canvas/-/work_items/3591927) State: opened | Updated: 2026-08-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: ai Description: ## Summary When an agent run throws, the dev controller deletes the stored agent state for that turn and returns an error response. Nothing asserts either half. Part of https://git.drupalcode.org/project/canvas/-/work_items/3591777. ## What the test should validate - The stored agent state for the turn is deleted. - The response reports failure and does not ask for another hop. ## Current behavior `CanvasDevAiBuilder::render()` wraps `determineSolvability()` in a try/catch. The catch deletes the stored agent state for the turn and returns `status: false` with `should_continue: false`. No … ### [Canvas AI: Add Playwright coverage for the component agent hop loop](https://git.drupalcode.org/project/canvas/-/work_items/3591926) State: opened | Updated: 2026-08-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: ai Description: ## Summary The dev chat runs a turn as several requests — the agent pauses after each tool decision and the browser re-POSTs until `should_continue` is false. Nothing covers that loop in a browser. Part of https://git.drupalcode.org/project/canvas/-/work_items/3591777. ## What the test should validate - The user's message is rendered in the chat UI. - The progress message is rendered. - The progress loader appears while the turn is running. - The turn keeps hopping until a response reports `should_continue: false`, and stops there. - The final message returned by the controller is rendered … ### [AssetResolver::getJsAssets() is incompatible with core 11.x since #3565258 added $with_dependencies](https://git.drupalcode.org/project/canvas/-/work_items/3591925) State: opened | Updated: 2026-08-07 | Author: Nodar Davituri (Davituri) | Assigned: unassigned | Labels: Description: ## Problem/Motivation `Drupal\canvas\Asset\AssetResolver` extends core's `AssetResolver` and is registered as a decorator of `asset.resolver` in `canvas.services.yml`. Core changed the signature of the method Canvas overrides, so on current `11.x` the class can no longer be declared and PHP fatals: ``` PHP Fatal error: Declaration of Drupal\canvas\Asset\AssetResolver::getJsAssets( Drupal\Core\Asset\AttachedAssetsInterface $assets, $optimize, ?Drupal\Core\Language\LanguageInterface $language = null): array must be compatible with Drupal\Core\Asset\AssetResolver::getJsAssets( Drupal\Core… ### [Canvas AI: Add a Drupal Canvas Agent that answers general questions](https://git.drupalcode.org/project/canvas/-/work_items/3591924) State: opened | Updated: 2026-08-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: ai Description: ## Summary Add an `ai_agent` config entity to `canvas_dev_ai`, labelled **Drupal Canvas Agent**, that answers general questions about Canvas from its system prompt and uses no tools. It is the main agent of the dev chat. Part of https://git.drupalcode.org/project/canvas/-/work_items/3591777. ## Why Every agent in the dev chat performs work. A user who asks what Canvas can do, or which Tool to pick, has nothing to talk to — the turn goes to whichever working agent is configured. This agent is the chat's entry point; Tools are what the user switches to for a task. ## Proposed Create the age… ### [Canvas AI: Research how a user can cancel a running chat turn](https://git.drupalcode.org/project/canvas/-/work_items/3591923) State: opened | Updated: 2026-08-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: ai Description: ## Summary Research issue — no implementation. A user cannot cancel a running turn in the dev chat, and the approach is not obvious because deep-chat offers no stop control on the request path the wizard uses. Decide the route here; implementation lands in a follow-up. Part of https://git.drupalcode.org/project/canvas/-/work_items/3591777. ## Current behavior - **deep-chat renders no stop control on our path.** `changeToStopIcon()` is wired as `streamHandlers.onOpen`, and only deep-chat's `stream()` path invokes `streamHandlers`. `AiWizardDev.tsx` passes no `stream` prop, so the submit butt… ### [Canvas AI: Add end-to-end kernel coverage for the dev page builder agent](https://git.drupalcode.org/project/canvas/-/work_items/3591922) State: opened | Updated: 2026-08-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: ai Description: ## Summary Follow-up to https://git.drupalcode.org/project/canvas/-/work_items/3591921. Cover `canvas_dev_ai_page_builder_agent` turns driven through the dev AI controller, the way `CanvasComponentAgentEndToEndTest` covers the component agent. Part of https://git.drupalcode.org/project/canvas/-/work_items/3591777. ## Current behavior 3591921 lands the agent with a single two-hop placement turn as its acceptance proof. Nothing covers a multi-row build, an edit turn, or a page-value write. ## Proposed Add `CanvasDevPageBuilderAgentEndToEndTest` beside `modules/canvas_ai/tests/src/Kernel/Age… ### [Canvas AI: Add a dev page builder agent and wire the placement tools](https://git.drupalcode.org/project/canvas/-/work_items/3591921) State: opened | Updated: 2026-08-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: ai Description: ## Summary Add an `ai_agent` config entity to `canvas_dev_ai` that builds a page by placing one component row per hop, and wire the four placement tools that currently ship inert. Part of https://git.drupalcode.org/project/canvas/-/work_items/3591777. ## Current behavior `canvas_dev_ai` runs one agent per chat turn as a client-side hop loop, and only `canvas_component_agent` is wired to it — so the dev flow can build JS code components but cannot build a page. `canvas_ai:place_components`, `canvas_ai:edit_components`, `canvas_ai:set_page_value` and `canvas_ai:get_component_details` are all … ### [Canvas AI: Add a catalog-only parameter to the get_component_context tool](https://git.drupalcode.org/project/canvas/-/work_items/3591920) State: opened | Updated: 2026-08-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: ai Description: ## Summary `canvas_ai:get_component_context` always returns every component with all its props and slots. Add a parameter that returns only the id, name and description, reusing the helper method that already produces it. Part of https://git.drupalcode.org/project/canvas/-/work_items/3591777. ## Current behavior `GetComponentContext::execute()` returns `CanvasAiPageBuilderHelper::getComponentContextForAi()`, and the tool declares no context definitions. `CanvasAiComponentContextHelper::getComponentCatalog()` already returns the lean listing — `name` and `description` keyed by component id —… ### [Canvas AI: Run the agent selected in configuration instead of a hardcoded one](https://git.drupalcode.org/project/canvas/-/work_items/3591919) State: opened | Updated: 2026-08-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: ai Description: ## Summary `canvas_dev_ai` stores `main_agent` and `tools` in `canvas_dev_ai.settings`, set at `/admin/config/ai/canvas-ai-agent-selection`. Nothing reads them. Make the controller run the configured agent. Part of https://git.drupalcode.org/project/canvas/-/work_items/3591777. ## Current behavior `CanvasDevAiBuilder.php:111` instantiates `canvas_component_agent` as a literal, so the form has no effect. ## Proposed - Every hop sends the target agent ID. Validate it against `main_agent` and `tools`; anything else is an error response. - When no target agent is sent, run `main_agent`. - Shi… ### [Canvas AI: Add Tools dropdown to chat UI](https://git.drupalcode.org/project/canvas/-/work_items/3591856) State: opened | Updated: 2026-08-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 1.x-dev, 2026Sprint15, AI Initiative Sprint, ai Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1447 [Draft: Resolve "Canvas AI: Add Tools dropdown to chat UI"](https://git.drupalcode.org/project/canvas/-/merge_requests/1447) | State: opened | Author: David Bravo (davidbp), 476 diff lines Description: ## Background — how Canvas AI works today The Canvas AI chat is an **orchestrator system**. Every message goes first to a single orchestrator agent. The orchestrator reads the message, infers the intent, and launches the matching sub-agent: - "Build me a landing page" → orchestrator → page-builder sub-agent - "Create a React component" → orchestrator → component sub-agent - "Write a title / meta description" → orchestrator → the relevant sub-agent The routing is implicit — the user never chooses which sub-agent runs; the orchestrator decides on every turn. Roadmap: https://git.drupalcode.o… ### [Prefix-strip redirect misses default-language prefixes and is overridden by ?destination](https://git.drupalcode.org/project/canvas/-/work_items/3591839) State: opened | Updated: 2026-08-07 | Author: Fons Vandamme (f0ns) | Assigned: unassigned | Labels: Drupal canvas, category::bug, priority::major, state::needsWork Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1387 [bug: #3591839 Preserve the query string when stripping the language prefix; a...](https://git.drupalcode.org/project/canvas/-/merge_requests/1387) | State: opened | Author: Fons Vandamme (f0ns), 193 diff lines Description: ## Problem/Motivation Follow-up to #3591585. That issue added `CanvasRouteOptionsEventSubscriber::redirectCanvasToDefaultLanguage()`, which strips the language prefix from `/canvas` paths with a 302 redirect. It has two gaps: 1. The redirect only runs when the current language differs from the default. Drupal allows a URL prefix for the default language too. In that case current equals default, the redirect is skipped, and the editor receives a prefixed path. The React app cannot route it and renders an empty gray screen. 2. The redirect drops the query string, and a `destination` query pa… ### [Incorrect folder assignment for newly created code components](https://git.drupalcode.org/project/canvas/-/work_items/3591828) State: closed | Updated: 2026-08-07 | Author: Vipin Mittal (vipin.mittal18) | Assigned: unassigned | Labels: state::rtbc Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1477 [#3591828: Fixed folder categorization issue follow-up.](https://git.drupalcode.org/project/canvas/-/merge_requests/1477) | State: opened | Author: utkarsh_33 (Utkarsh_33), 141 diff lines Description: **Problem** When creating a new Code Component and selecting a destination folder, the component is not saved in the selected folder. Instead, it is placed in a different folder within the Canvas Library. This prevents users from organizing code components correctly and leads to inconsistent folder categorization. **Acceptance Criteria** - A newly created Code Component is saved in the folder selected by the user. - The component is displayed in the selected folder immediately after creation. - No component is placed into an incorrect folder during the creation process. - The selected folde… ### [Expand conflict detection and resolution entity types other than Page](https://git.drupalcode.org/project/canvas/-/work_items/3591544) State: opened | Updated: 2026-08-07 | Author: drupalbot | Assigned: Feliksas Mazeikis (f.mazeikis) | Labels: Conflict resolution, auto-save, autoSave, backend Description: >>> [!note] Migrated issue Reported by: [f.mazeikis](https://www.drupal.org/user/3513671) >>> Overview Initial implementation of #3587587 will expand current conflict detection and will add new "review of changes" and "conflict resolution UI". To limit the scope of work, new functionality will be added only to Page entities. This issue describes how this new functionality will be expanded to additional Canvas entity types. Specifically, this is a placeholder issue that will be used in BE child issues of #3587587 to document planned changes and link various @todo sections as the work progre… --- MERGE REQUESTS (24h) --- ### [chore(deps): update dependency cspell to v10](https://git.drupalcode.org/project/canvas/-/merge_requests/1273) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/major-cspell-monorepo | 13 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [cspell](https://cspell.org/) ([source](https://github.com/streetsidesoftware/cspell/tree/HEAD/packages/cspell)) | [`^9.2.0` → `^10.0.0`](https://renovatebot.com/diffs/npm/cspell/9.7.0/10.0.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/cspell/10.0.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/cspell/9.7.0/10.0.1?slim=true) | > :exclamation: **I… ### [chore(deps): update dependency @eslint/compat to v2](https://git.drupalcode.org/project/canvas/-/merge_requests/1306) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/eslint-compat-2.x | 13 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@eslint/compat](https://github.com/eslint/rewrite/tree/main/packages/compat#readme) ([source](https://github.com/eslint/rewrite/tree/HEAD/packages/compat)) | [`^1.3.1` → `^2.0.0`](https://renovatebot.com/diffs/npm/@eslint%2fcompat/1.4.1/2.1.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@eslint%2fcompat/2.1.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confide… ### [chore(deps): update dependency @chromatic-com/storybook to v5](https://git.drupalcode.org/project/canvas/-/merge_requests/1305) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/chromatic-com-storybook-5.x | 13 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@chromatic-com/storybook](https://github.com/chromaui/addon-visual-tests) | [`^3.2.2` → `^5.0.0`](https://renovatebot.com/diffs/npm/@chromatic-com%2fstorybook/3.2.7/5.2.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@chromatic-com%2fstorybook/5.2.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@chromatic-com%2fstorybook/3.2.7/5.2.1?slim=true) | >… ### [fix(deps): update npm minor and patch](https://git.drupalcode.org/project/canvas/-/merge_requests/1238) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/npm-minor-and-patch | 55 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@axe-core/playwright](https://github.com/dequelabs/axe-core-npm) | [`4.11.1` → `4.12.1`](https://renovatebot.com/diffs/npm/@axe-core%2fplaywright/4.11.1/4.12.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@axe-core%2fplaywright/4.12.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@axe-core%2fplaywright/4.11.1/4.12.1?slim=true) | | [@babel/parser](… ### [chore(deps): update mysql docker tag to v8.4](https://git.drupalcode.org/project/canvas/-/merge_requests/1272) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/mysql-8.x | 13 diff lines Description: This MR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [mysql](https://hub.docker.com/_/mysql) ([source](https://github.com/docker-library/mysql)) | service-image | minor | `8.0` → `8.4` | > :exclamation: **Important** > > Release Notes retrieval for this MR were skipped because no github.com credentials were available. > If you are self-hosted, please see [this instruction](https://github.com/renovatebot/renovate/blob/master/docs/usage/examples/self-hosting.md#githubcom-token-for-release-notes). --- ### Configuration 📅 **Schedule**: (UTC) - Br… ### [feat: #3518272 support all entity types with configurable displays for content templates](https://git.drupalcode.org/project/canvas/-/merge_requests/791) State: opened | Author: Adam G-H (phenaproxima) | Branch: 3518272-field-ui-base-route | 2287 diff lines Description: Closes #3518272 . ### [#3591875: "Translatable props missing from TMGMT form when component instances cannot be auto-updated to active version"](https://git.drupalcode.org/project/canvas/-/merge_requests/1418) State: opened | Author: Kunal Sachdev (kunal.sachdev) | Branch: 3591875-translatable-props-missing-from-tmgmt-form-when-component-instances-cannot-be-auto-updated-to-active-version | 986 diff lines Description: AI-Generated: Yes (Used Github Copilot(Claude Sonnet 4.6) for the solution and test coverage). ### [Resolve module-contributed import map entries in builds, pushes, and Workbench](https://git.drupalcode.org/project/canvas/-/merge_requests/1482) State: opened | Author: Lauri Timmanee (lauriii) | Branch: 3591914-support-code-component-imports-contributed-by-modules-to-the-canvas-import-map | 1461 diff lines Description: Co-created by Claude Opus 5. ## Testing instructions - [ ] First step for someone to test the changes in this MR Closes #3591914 ### [#3591870: Add a PHPStan rule to verify PHPUnit coverage attributes reference existing symbols](https://git.drupalcode.org/project/canvas/-/merge_requests/1415) State: opened | Author: Christian López Espínola (penyaskito) | Branch: 3591870-phpstan-rule-coverage-attributes-reference-existing-symbols | 204 diff lines Description: Closes #3591870 ## What this MR does Adds `CoverageAttributesReferenceExistingSymbolsRule`, a PHPStan rule that checks `#[CoversFunction]`, `#[CoversClass]`, `#[CoversMethod]`, `#[UsesFunction]`, and `#[UsesClass]` attributes against `ReflectionProvider`, so a stale or misspelled coverage target is caught at lint time instead of silently attributing coverage to the wrong (or a non-existent) target. Modeled on `ComponentPreSaveUpdateMethodsRule`'s attribute → symbol-name → existence-check pattern. The first run surfaced one existing stale reference, fixed in the second commit. AI-Generated: … ### [Add PHPStan rule: needs*() config detectors must not mutate the entity they inspect](https://git.drupalcode.org/project/canvas/-/merge_requests/1416) State: opened | Author: Christian López Espínola (penyaskito) | Branch: 3591855-phpstan-rule-needs-must-not-mutate | 241 diff lines Description: Closes #3591855 ## What this MR does The escaped-config health check (`Doctor::runUpdatesEscapedConfigCheck()`) reflects every public `needs*()` detector on `CanvasConfigUpdater` and runs them all against one shared, loaded config entity. A detector that mutates the entity it is passed leaks that change into every detector that runs after it, corrupting the audit's result. This has happened twice: one detector mutated via `setComponentTree()`/`set()`, another had to `clone` before `calculateDependencies()`. This adds a PHPStan rule (`NeedsDetectorMustNotMutateEntityRule`) that enforces the … ### [Self-heal stored default-relative-url `$id` on read, and clean it up on update](https://git.drupalcode.org/project/canvas/-/merge_requests/1474) State: opened | Author: Christian López Espínola (penyaskito) | Branch: 3591904-missing-upgrade-path-stored-default-relative-url-prop-sources-with-id | 1328 diff lines Description: Closes #3591904 ## What this MR does Data written before Canvas 1.5.1 stored a `default-relative-url` prop source's resolved JSON Schema including the `$id` keys the schema resolver emits. Since 1.5.1 (#3591629) `PropShape::normalize()` strips `id`/`$id`, so `DefaultRelativeUrlPropSource::parse()` re-normalizes the stored schema, finds it differs, and throws — a 500 from the layout endpoint, and a fatal in any update or health path that reads it. There was no upgrade path to migrate the stored data. Three commits, one concern each: 1. **Fix the read.** `parse()` now strips the resolver-inj… ### [chore: version packages](https://git.drupalcode.org/project/canvas/-/merge_requests/1481) State: merged 2026-08-07 | Author: **** (project_19391_bot_17a61b0edeafd5a3db3e8b2462b6c010) | Branch: changeset-release/1.x | 404 diff lines Description: Automated merge request created from pending changesets. Merging it publishes the new package versions to npm. Do not commit to this branch manually; it is force-pushed on every push to 1.x. ### [chore: version packages](https://git.drupalcode.org/project/canvas/-/merge_requests/1464) State: merged 2026-08-07 | Author: **** (project_19391_bot_17a61b0edeafd5a3db3e8b2462b6c010) | Branch: changeset-release/1.x | 595 diff lines Description: Automated merge request created from pending changesets. Merging it publishes the new package versions to npm. Do not commit to this branch manually; it is force-pushed on every push to 1.x. ### [Draft: Resolve #3546597 "Create canvas page in other languages"](https://git.drupalcode.org/project/canvas/-/merge_requests/494) State: opened | Author: Gábor Hojtsy (goba) | Branch: 3546597-create-canvas-page | 638 diff lines Description: Closes #3546597 ### [feat(CLI Tool): Push components as external metadata when the Headless SDK is present](https://git.drupalcode.org/project/canvas/-/merge_requests/1470) State: merged 2026-08-07 | Author: Harumi Jang (hooroomoo) | Branch: mark-external | 1081 diff lines Description: #3591912 AI Disclosure: yes used Claude canvas push: support pushing components as type: external with their metadata when the Headless SDK is present - SDK detection: when @drupal-canvas/headless is in the project's dependencies or devDependencies, every discovered component is pushed as type: external. - Explicit opt-in: a type: external in a component's component.yml is honored the same way, with or without the SDK. The YAML file is never mutated — type is set on the API payload only. - Entry-less discovery: framework single-file components (.vue, .astro, .svelte) and other entry-less ex… --- COMMITS (24h) --- - [2ef8b6e6](https://git.drupalcode.org/project/canvas/-/commit/2ef8b6e62ff7eeb148ffb2c47a58e0ac975c132e) fix(Redux-integrated field widgets): #3591918 StaticPropSource widget building is order-dependent: dangling prop fields collide in core's TypedData item-prototype cache — Christian López Espínola (2026-08-08T03:56:08.000+00:00) - [b6155f66](https://git.drupalcode.org/project/canvas/-/commit/b6155f66fef2720f18f987b99993b46901dbd39f) feat: #3591838 Brand Kit color support — Ben Mullins (2026-08-07T20:27:16.000+00:00) - [c98dfb6c](https://git.drupalcode.org/project/canvas/-/commit/c98dfb6cb6e1f2cd8b43b6409c7699253a790640) bug: #3534972 Unnecessary horizontal movement — Lauri Timmanee (2026-08-07T17:09:57.000+00:00) - [5601db8e](https://git.drupalcode.org/project/canvas/-/commit/5601db8ed53364f1544932cb959b3f3851583961) fix(Shape matching): #3591917 Array prop shapes don't inherit their item shape's cache tags, so prop-shape invalidation misses them — Christian López Espínola (2026-08-07T15:54:14.000+00:00) - [8cafa335](https://git.drupalcode.org/project/canvas/-/commit/8cafa3351e5fe5cf2658751e79ec10990a81de53) chore: version packages — Canvas version bot (2026-08-07T15:23:45.000+00:00) - [9c6de1e1](https://git.drupalcode.org/project/canvas/-/commit/9c6de1e15bace071a0426f16cc8b37399477f07a) fix(Headless): #3591928 Expose headless page helpers from isomorphic package entries — wotnak (2026-08-07T15:22:10.000+00:00) - [392b7050](https://git.drupalcode.org/project/canvas/-/commit/392b7050c3ed3817ea98c6d413ddd7303b2e47e3) chore: version packages — Canvas version bot (2026-08-07T12:33:43.000+00:00) - [9bcfe160](https://git.drupalcode.org/project/canvas/-/commit/9bcfe160d3fb7feaced7d7025f44cb366583c678) feat(CLI Tool): #3591912 Support pushing code components from a headless codebase — Harumi Jang (2026-08-07T12:32:07.000+00:00) ======================================================================== ## [6] summariseModule:ai_context:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Context Control Center (CCC) (machine name: ai_context) Reporting period: last 24h (2026-08-07T05:00:05+00:00 to 2026-08-08T05:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Kristen Pol (kepol) [1], Tamas Balog (tbalog)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

            Context Control Center (CCC)

            then use

            ,

            ,

              /
            • , and as needed. Output only the HTML fragment with no surrounding , , or
              tags. After the project summary prose, add a single subsection titled "

              How can I help on this project?

              " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Document Purpose field guidance for conditional subcontext selection](https://git.drupalcode.org/project/ai_context/-/work_items/3586390) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, category::task, priority::normal, sprint candidate Description: ## Problem/motivation Follow-up to: - #3586351+s - #3586199+s Real-provider testing showed the current conditional subcontext prompt (parent Content + task + each child’s **ID and Purpose**) is sufficient for most well-authored configurations. Failures were more often caused by weak or overlapping Purpose text than by missing child labels or descriptions. Authors may not realize that **Purpose is the primary signal** the model uses to decide whether a conditional child applies. The field is required, but there is little guidance on writing effective inclusion criteria or avoiding overlap b… ### [Rename entity bundle and target entity scope plugins for better DX](https://git.drupalcode.org/project/ai_context/-/work_items/3586276) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint12, 2026Sprint13, 2026Sprint14, 2026Sprint15 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !195 [Issue #3586276: Rename entity bundle and target entity scope plugins for better DX](https://git.drupalcode.org/project/ai_context/-/merge_requests/195) | State: opened | Author: Tamas Balog (tbalog), 7313 diff lines Description: ## Problem/solution Follow up to: #3586148+s The naming of the entity bundle and target entity scope plugins is confusing. ## Solution **AiContextScopeEntityBundle** Rename Entity Bundle => Entity Type at a code-level because there are bundleless content entities. Label: Entity Types Description: Apply this context to every entity of a chosen type, for example all Article nodes, every Document media item, or every Canvas page. Choose this when the context is true for the whole type, not a single item. **AiContextScopeTargetEntity** Rename Target Entity => Entity Item because target… ### [Test current conditional subcontext selection before changing the prompt](https://git.drupalcode.org/project/ai_context/-/work_items/3586351) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, blocker::stable, category::task, priority::major Description: ## Summary _**Note: this is a tricky issue to test.**_ Follow-up to #3586194+. This issue should be completed before #3586199+. ## Problem/motivation #3586199+ proposes adding a richer subcontext index to improve conditional child selection. Since that issue was created, the current implementation has begun sending each candidate child’s ID and Purpose to the AI provider. It is not yet known whether the richer index is still needed. Existing automated tests verify selection mechanics with fixed responses but do not assess real-model relevance decisions. ## Solution The detailed assessme… ### [Tune conditional subcontext logic](https://git.drupalcode.org/project/ai_context/-/work_items/3586199) State: closed | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::task, priority::major, state::closed, what::code Description: _**Note that we can hopefully defer this to 1.1 or maybe even close it.**_ Follow up to: #3586194+s Blocked by: #3586351+s It would be good to get these in before this one: - #3586218+s - #3586292+s ## Problem/motivation Conditional subcontext logic needs to be fine-tuned. See related issue above. ## Solution Add the subcontext as an "index" to the parent when asking the LLM which conditional subcontext items are good to include. See issue above for some possible structure. Fill out more details here as this is thought through more. ## Tasks - Review existing logic and test - Docum… ### [Add context item Priority field and use it for selection ordering](https://git.drupalcode.org/project/ai_context/-/work_items/3586376) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::feature, priority::major, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !245 [Issue #3586376: Add context item priority field and selection tie-breakers.](https://git.drupalcode.org/project/ai_context/-/merge_requests/245) | State: opened | Author: Kristen Pol (kepol), 890 diff lines Description: ## Summary Follow-up to: #3586364+s Context selection currently breaks ties between equally weighted candidates using the item `changed` timestamp. That is opaque to editors and does not reflect editorial intent when multiple items compete for the same slots. Add a **Priority** field on context items and use it consistently when the selector chooses and orders candidates within each selection group. ## Problem When more context items qualify than fit under `max_items` (or `max_global_items`), the selector must decide which items to keep and in what order. Today: - Global, scored, and ma… ### [Remove max_items context limit and rely on the token budget](https://git.drupalcode.org/project/ai_context/-/work_items/3586378) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol), Aidan Foster (aidanfoster), Emma Horrell (emma-horrell) | Labels: 2026Sprint16, category::task, priority::normal, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !244 [Issue #3586378: Remove max_items context limit and rely on token budget.](https://git.drupalcode.org/project/ai_context/-/merge_requests/244) | State: opened | Author: Kristen Pol (kepol), 2544 diff lines Description: ## Summary Follow-up to: - #3586337+s The **Max context items to inject** setting (`max_items`) adds UX and DX complexity without providing a meaningful limit on its own. Context items vary widely in size, so a token budget is the more accurate control for how much context can reach an agent prompt. Remove `max_items` from configuration, forms, validation, selection logic, documentation, and tests. After this change, the token budget (`max_tokens`) is the primary module-wide limit on injected context. ## Problem Site builders currently configure two overlapping limits: - **Max context i… ### [QA team start testing CCC to get familiar with functionality and create QA plan](https://git.drupalcode.org/project/ai_context/-/work_items/3586342) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Bruna Emerich (brunaemerich) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, blocker::stable Description: ## Problem CCC is huge and there's a lot to test. Beta3 was released last week and there were bugs: - #3586338+s - #3586341+s These most likely would have be caught by the QA team. I tested here with AI on Drupal CMS / Drupal 11: #3586296+s but neglected to test with Drupal 10. Not sure why the settings pages didn't get hit though. I tested manually with Canvas AI though it would be amazing if that could be automated somehow. ## Solution QA team plays around with CCC to understand the functionality and starts a draft QA plan. Here's the QA plan from AI: https://git.drupalcode.org/-/… ### [CCC QA scripts for 1.0 testing](https://git.drupalcode.org/project/ai_context/-/work_items/3586226) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, blocker::stable, category::task, priority::major Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !243 [Issue #3586226: Add 1.0 QA test scripts for manual testing.](https://git.drupalcode.org/project/ai_context/-/merge_requests/243) | State: opened | Author: Kristen Pol (kepol), 751 diff lines Description: ## Problem/motivation Need to make sure we're ready for the QA team to do pre-1.0 testing. ## Solution From Bruna Emerich (Zoocha): Documentation covering the functionality, along with a test script (such as the example in this ticket, where an .md file is included), is sufficient for us to carry out testing. If any questions come up, we’ll raise them directly in the channel and tag you. Regarding lead time, it depends on the size of the functionality, but generally one week’s notice is sufficient. If there’s a fixed release date, allowing around 14 days is preferable, as it gives enough … ### [Create CCC beta3 and beta4 and status update video](https://git.drupalcode.org/project/ai_context/-/work_items/3586333) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, ai::context, category::task, demo Description: Create a video on beta3 and beta4 and the current status of CCC and what's coming up. ### [Switch CCC documentation link to clean version](https://git.drupalcode.org/project/ai_context/-/work_items/3586370) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint17, ai::context, category::task, priority::normal Description: **Note that this could be done after the 1.0 release.** ## Problem I tried switching the documentation link: https://ai-context-b13f05.pages.drupalcode.org/ to https://ai-context.pages.drupalcode.org/ via the settings in gitlab including rerunning a CI build to get it in place. But it never worked. ## Solution Figure out how to get it to work properly. Note it shows up here ./ai_context.module: ':docs' => 'https://ai-context-b13f05.pages.drupalcode.org/', and is linked from the d.o project page ### [Pre-1.0 documentation, trust, and compatibility follow-up to issue 3586363](https://git.drupalcode.org/project/ai_context/-/work_items/3586382) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint17, category::task, priority::normal, sprint candidate Description: ## Follow-up to: #3586363+s Follow-up to "Before 1.0" triage in #3586363. Combines documentation, API annotation, security guidance, and release-policy work that should land before 1.0 without adding new functionality. **Scope:** #1, #2, #5, #6, #8 from the Before 1.0 list in #3586363+s. **Non-goals:** selector/diagnostics work (#3, #4, #9 — separate issue), performance benchmarks (#7 — 1.1), usage vs observability decision (#10 — #3567803 / #3586213). ## Problem / motivation _**Note that the following needs to be rechecked before working on this issue as some things may have been fixed.… ### [Install `target_entities` field storage when Dynamic Entity Reference is enabled on existing sites](https://git.drupalcode.org/project/ai_context/-/work_items/3586375) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::bug, priority::normal, sprint candidate Description: ## Problem Sites that already have `ai_context` installed can fatal when `dynamic_entity_reference` is enabled (or was enabled without a matching schema update). The context item listing and other entity loads fail with: `Table 'db.ai_context_item__target_entities' doesn't exist` Example stack: `SqlContentEntityStorage->loadFromDedicatedTables()` while `AiContextItemListBuilder->load()` renders `/admin/config/ai/context/items`. ### Root cause `target_entities` is not defined in `AiContextItem::baseFieldDefinitions()`. It is added at runtime via `DynamicEntityReferenceHooks::entityBaseFiel… ### [Update ai_context project page and docs based on new naming approach](https://git.drupalcode.org/project/ai_context/-/work_items/3586217) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint17, ai::context, category::task, priority::normal Description: **Note that this could be done right after the 1.0 release.** ## Problem/motivation Although people will likely continue to call it CCC rather than AI Context, we've decided to embrace a combined naming approach outlined here: #3556881 ## Solution Update the project page and README/docs to use this. ## Tasks - [ ] Update project page - [ ] Update README - [ ] Update docs if necessary ### [Create CCC video showing how to configure it](https://git.drupalcode.org/project/ai_context/-/work_items/3586153) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint17, category::task, demo, priority::normal Description: **Note that this could be done right after the 1.0 release.** Let's do this after beta3 is created: #3586295+s People have been having some trouble understanding how to set up CCC. Create a simple video for setting it up. ### [[Discuss] Approach for CCC+agent integration testing](https://git.drupalcode.org/project/ai_context/-/work_items/3571117) State: opened | Updated: 2026-08-08 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint17, category::plan, priority::major, sprint candidate Description: **Note that this could be done after the 1.0 release.** >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation We need to test the integration of CCC+agents and possibly other things like the future review system. How can we build such a testing framework? Proposed r… ### [Document how to use RAG with CCC 1.0](https://git.drupalcode.org/project/ai_context/-/work_items/3586371) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint17, category::task, priority::normal, sprint candidate Description: **Note that this could be done after the 1.0 release.** Fable 5 notes Good news: everything needed already exists in the public API — `AiContextRequest::getTask()` gives you a free-text retrieval query, and the `text_rendered` event exposes remaining token budget and lets you rewrite the output. Here's how I'd wire RAG up with ai_context **today**, no changes to the module. ## Pattern A — agentic RAG via tools (no custom code) Use ai_context for what it's best at: injecting *instructions about retrieval* rather than retrieved content. 1. Index your corpus with the AI module's `ai_search` … ### [Document real-world use cases for CCC 1.0](https://git.drupalcode.org/project/ai_context/-/work_items/3586372) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint17, category::task, priority::normal, sprint candidate Description: **Note that this could be done after the 1.0 release.** Fable 5 pass Here's a documentation-ready set of use cases, grouped by consumer and framed for the post-[#3586346](https://git.drupalcode.org/project/ai_context/-/work_items/3586346) world where anything — agents, CKEditor, translation, automators — can be a context consumer. Each one names the CCC features it exercises so readers connect the scenario to the mechanics. --- ## Writing assistance (AI CKEditor) **1. Brand voice everywhere, enforced once.** The marketing team maintains one "Voice and tone" context item — reading level, b… ### [Persist context-item token counts and show token-budget usage in CCC UI](https://git.drupalcode.org/project/ai_context/-/work_items/3586379) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, category::task, priority::major, sprint candidate Description: ## Summary Follow-up to: - #3586337+s - #3586348+s Implement the subscription-limit UX decisions from the Emma+Aidan review on #3586337. Persist each context item's estimated token count at save time, base token badges on percentage of the configured token budget, and add budget summary messaging on the agent subscription settings page. This issue implements the indicator behavior. It does not add new warning components beyond text, badges, and tooltips agreed in the design review. ## Problem Token counts on the context item listing are calculated on the fly from item content. That makes… ### [Pre-1.0 context selection reliability and diagnostics follow-up to issue 3586363](https://git.drupalcode.org/project/ai_context/-/work_items/3586383) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::task, priority::major, sprint candidate Description: **Blocker: Assess #3586348+s before proceeding on this issue.** ## Follow-up issue Follow-up to: #3586363 Child of the "Before 1.0" triage in #3586363+s. Improves selection transparency, conditional-subcontext failure visibility, and debug diagnostics before 1.0. **Scope:** #3, #4, #9 from the Before 1.0 list in #3586363. **Non-goals:** documentation/trust/compatibility work (#1, #2, #5, #6, #8 — separate issue), performance benchmarks (#7 — 1.1), usage vs observability (#10 — #3567803 / #3586213), rich selection diagnostics UI or persistence ([#3586242](https://git.drupalcode.org/projec… ### [CCC Outside AI roadmap discussion meeting August 2026](https://git.drupalcode.org/project/ai_context/-/work_items/3586387) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint17, category::plan, priority::normal, sprint candidate Description: ## Problem Much of CCC's focus has been on "Inside AI" though there are some things that have been prototyped or discussed for "Outside AI". It would be good to get a sense check of where the Outside and Labs teams see CCC fitting into their work in the coming months. This will help direct the 1.1+ roadmap. ## Solution Meeting with Kristen, Scott, Jamie, Marcus, and Vidit to discuss. Add notes here and create any follow-up issues as needed. ## Related - Future milestone: https://git.drupalcode.org/project/ai_context/-/milestones/7#tab-issues - 1.1 rc1 list (not much yet): https://git.dru… ### [Create multi-vocabulary taxonomy scope plugin](https://git.drupalcode.org/project/ai_context/-/work_items/3586237) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::feature, priority::normal, sprint candidate Description: ## Problem/motivation _**Note that this isn't a must have for 1.0 but a nice to have. Given that people think the current "tags" scope plugin previous the behavior this plugin would provide then it it's really nice to have.**_ _**Note that weight = 20 should be used as follow-up to #3586388+s.**_ Follow up to: #3586198+s We do not have a scope plugin that allows associated context with the terms for content entities. Example: * Article **has terms**: foo, bar, hello * Blog post **has terms**: foo, whatever * One context item **has term**: foo * Another context item **has terms**: foo, b… ### [[Meta] CCC MVP 1.0 roadmap](https://git.drupalcode.org/project/ai_context/-/work_items/3567798) State: opened | Updated: 2026-08-08 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint10, 2026Sprint11, 2026Sprint12, 2026Sprint16 Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> --- ## Problem/Motivation We need a stable release of CCC to support Drupal CMS that includes a lot of the ideas and features we've been discussing, including the 1-year plan capabilities. --- ## Proposed resolution Update issue list and work through them --- ## Target dates - March 23rd: Beta1 release - March 23rd to 27th: DrupalCon Chicago - May 10: Beta2 release - July 17: Beta3 release - August x: Beta4 release - August x: Beta5 release - September x: RC1 release - September x: RC2 releas… ### [[Discuss] Add boundaries / exclusions to scope plugins](https://git.drupalcode.org/project/ai_context/-/work_items/3586197) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint10, 2026Sprint11, category::task, priority::major Description: ## Problem/motivation **_Note that this could wait until rc1 or even until 1.1 work starts._** Follow-up to: #3586195 Boundaries / exclusions were discussed quite a bit in the past, but hasn't been implemented yet. Example context item: - Tone and voice - Scope - Use case = Writing Words - Entity bundle = exclude for Support Notes (content type) Translation: The context will be applicable to any agent subscription with use case = writing words unless it's a node that's a Support Notes content type ## Solution Add an exclusion option for each scope item and bake that into the logi… ### [Recruit additional CCC beta testers](https://git.drupalcode.org/project/ai_context/-/work_items/3586235) State: closed | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: ai::context, category::task, priority::major, state::closed Description: ## Problem/motivation Note that Mike Anello (ultimike) is beta testing, but we will try to recruit more after beta3 is created: #3586295+s We want more beta testers. This issue was created for this: #3586234+s ## Solution Promote this in various channels: - Slack - LinkedIn - Planet Drupal? ## Tasks - ~~Create issue with resources~~ - ~~Post in the relevant Slack channels (ai, ai-contrib, ai-context, ai-partner-contributors)~~ - Create a blog post and/or LinkedIn post to promote ### [Add CCC beta tester info to the project page](https://git.drupalcode.org/project/ai_context/-/work_items/3586248) State: closed | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: ai::context, category::task, priority::normal, state::closed Description: ## Problem/motivation We want beta testers, but we need to give them more info on how to get started. ## Solution Update the home page with some more information: - Links to session videos (suggest they watch one) - Link to DrupalCon Chicago Driesnote demo (they can use it and it will have example context to play with) - Point to the readme and docs - Point to how to create a support issue or bug ## Tasks - Gather session videos - Gather other links - Create a section on project page for beta testers - Add the videos and links ### [Update project page to make it more clear that CCC is for agents](https://git.drupalcode.org/project/ai_context/-/work_items/3586278) State: opened | Updated: 2026-08-08 | Author: Michael Anello (ultimike) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint17, AI UX, category::task, priority::normal Description: _**Note that this can happen during rc1 since this is documentation.**_ Note that this will be changing with: #3586346+s Via https://git.drupalcode.org/project/ai_context/-/work_items/3586270#note_1263889, I think the main CCC project page description should be super-clear that CCC is currently designed to only work with AI agents and not other AI-related tasks. At the very least, I suggest the first sentence of the project description on https://www.drupal.org/project/ai_context be changed from: > Context Control Center (CCC) helps Drupal AI use your content, rules, and standards to deli… ### [Clarify scope eligibility, ranking, and limits in UI help and documentation](https://git.drupalcode.org/project/ai_context/-/work_items/3586348) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint17, blocker::stable, needs ux review, priority::major Description: ## Summary _**Note that this could be implemented in rc1 because it's docs/help text and no functionality changes.**_ Follow-up to: - #3586281+s - #3586270+s - #3586335+s - #3586337+s Beta testing confirmed that the **subscription** model can remain for beta4, but the UI and documentation do not clearly explain how scope matching, eligibility, ranking, overrides, and limits work together. This issue improves inline help and user-facing documentation without changing scope behavior, configuration storage, selection logic, or subscription semantics. ## Problem The current Context scope de… ### [Review and update CCC permissions for beta5](https://git.drupalcode.org/project/ai_context/-/work_items/3586358) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, blocker::stable, category::task, priority::major Description: ## Problem/Motivation Replaces the outdated permissions review: #3574937+s That issue and MR !78 targeted an earlier beta and no longer match the current permission model or beta5 scope. Related beta5 work already in progress: #3586356+s Permissions still need a focused beta5 pass before full QA: #3573716+s Goals for this issue: - Confirm the current permission set is sufficient for beta5 roles (author, editor, admin, and published-context consumers). - Add only permissions with a clear beta5 use case. - Avoid a broad redesign or large new own-* permission set in 1.0. Earlier ideas… ### [Review and document context selection ranking factors before 1.0](https://git.drupalcode.org/project/ai_context/-/work_items/3586365) State: closed | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !241 [Issue #3586365: Document scope selection and ranking logic.](https://git.drupalcode.org/project/ai_context/-/merge_requests/241) | State: merged 2026-08-08 | Author: Kristen Pol (kepol), 662 diff lines Description: **Note that I switched this from a discussion issue to a documentation. Discussion has happened. Docs are in the MR.** **IMPORTANT: If #3586388+s is merged first, this issue's MR needs fixing based on that (and vice versa).** ## Summary Before we ship 1.0, we should confirm that the current rules for choosing which context items reach an AI feature are the right set — and whether anything important is missing. This issue is a **discussion**. The goal is shared understanding of what the module does today, in plain language, so product/UX and engineering can decide together whether to add ra… ### [CCC beta4 codebase review (pre-release)](https://git.drupalcode.org/project/ai_context/-/work_items/3586374) State: closed | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::context, blocker::stable Description: ## Problem/motivation Do this right before beta4 release in case there are any serious issues that need addressing before the release. Beta4 will be released shortly. We continually need to check the codebase as it changes for potential security issues, performance issues, and any pre-rc1 features/apis that need to be addressed. ## Solution Run AI checks against the codebase to identify for pre-rc1 and post-1.0: - Security issues (these can be noted since we are still in beta) - Important API gaps - Incorrect docs - Code smell that might indicate potential bugs ## Next steps - Run revie… ### [[Meta] CCC rc cleanup from non-pressing beta code review items](https://git.drupalcode.org/project/ai_context/-/work_items/3586389) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::task, priority::normal, state::postponed, what::code Description: fixme Double check items from: #3586374+s and pull over what makes sense for rc1+rc2 or 1.0.1+ ### [[Meta] CCC 1.1 release planning](https://git.drupalcode.org/project/ai_context/-/work_items/3586373) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: category::plan, priority::major, state::postponed, what::planning Description: Updated the milestone dates to align with DrupalCon Orlando for 1.1 though we could scope down the releases and do a 1.1 in the middle and 1.2 for Orlando... tbd Chatting with fable 5 re With the real 1.1 window being ~6 months (late Sep → mid Mar), my earlier "keep 1.1 tiny" advice no longer applies — the slide's ambition level is reasonable for the timeline. Here's my reassessment. First, one slide bug: the 1.1 column says **"March 2026"** — should be **March 2027**. ## The main gap: the slide and the actual milestone don't overlap The six issues actually sitting in the 1.1 milestone … ### ["Global context" checkbox description renders a literal
              instead of a line break](https://git.drupalcode.org/project/ai_context/-/work_items/3586369) State: opened | Updated: 2026-08-08 | Author: Sohail Lajevardi (doxigo) | Assigned: Daniel Rodriguez (danrod) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::bug Description: On the AI context item edit form, the description under the **Global context** checkbox displays the tag as text: > Always include this context for every agent.\Saving the form with this > enabled will clear previous scope settings. `AiContextScopeGlobal::getFormDescription()` exists specifically so this checkbox can carry a line break. Its own docblock says so: ```php /** * Gets the checkbox description for the context item form. * * Uses a line break that is not safe for settings pages escaped with * Html::escape(), so keep plain text in getDescription() instead. */ protected functio… ### [[Meta] Prepare CCC for Inside AI Rotterdam demo](https://git.drupalcode.org/project/ai_context/-/work_items/3586386) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, category::plan, priority::major, sprint candidate Description: fixme meta issue right now just: #3586385+s but there might be more ### [Create CCC recipe for Inside Rotterdam demo](https://git.drupalcode.org/project/ai_context/-/work_items/3586385) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, sprint candidate Description: Parent: #3586386+s fixme need to figure out where this lives (private GitLab or public) okay if it's public if it works well without a bunch of dependencies (i.e. generic) e.g. https://www.drupal.org/project/ai_recipe_context ### [Align scope scoring, language service, and contextual selection behavior](https://git.drupalcode.org/project/ai_context/-/work_items/3586388) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, blocker::stable, category::task, priority::major Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !242 [Issue #3586388: Align scope scoring and contextual detection.](https://git.drupalcode.org/project/ai_context/-/merge_requests/242) | State: opened | Author: Kristen Pol (kepol), 2177 diff lines Description: ## Summary **IMPORTANT: If #3586365+s is merged first, this issue's MR needs fixing based on that (and vice versa).** Follow-up to: #3586365 Before 1.0, align scope weight, subscription scoring, UI ordering, language handling, hard contextual filtering, and function-call listing so selection behavior is predictable, consistently documented, and safe for agent use. ### 1. Align scope display order with scoring weight Use the existing plugin weight for both subscription scoring and UI display order. A higher weight means: - Greater influence during subscription scoring - Earlier placemen… ### [[Discuss] Evaluate Tool API integration for CCC context tools](https://git.drupalcode.org/project/ai_context/-/work_items/3574926) State: opened | Updated: 2026-08-07 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: Description: ## Problem/Motivation Context Control Center currently provides these AI Function Call plugins: - `ai_context:list_ai_context_items` - `ai_context:load_ai_context_item_by_id` - `ai_context:get_relevant_ai_context_items` The AI module documentation indicates that Function Call plugins may eventually be replaced by Drupal Tool API. Tool API can now integrate with AI Agents, but it does not yet have a supported stable release. Because AI Context supports both AI 1.x and 2.x, replacing the existing plugins could break compatibility. We need to determine whether Tool API integration should be a… ### [[Discuss] Add agent-level context isolation and governance controls](https://git.drupalcode.org/project/ai_context/-/work_items/3586166) State: opened | Updated: 2026-08-07 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::feature, priority::major, state::postponed, what::discussion Description: Follow up to: #3582504 _**NOTE: Before working on this issue, verify it's still relevant and makes sense.**_ **Description:** Introduce governance controls for limiting which agents can access which context. This should support safer multi-agent deployments and reduce accidental context leakage between unrelated use cases. **Includes:** - `2.3` Context isolation between agents **Scope:** - Design an isolation model for agent-specific context access. - Evaluate whether isolation should use domains, taxonomy, config, permissions, or another mechanism. - Ensure isolation works alongside e… ### [Sprint 15 CCC roadmap updates, sprint planning, and issue triage](https://git.drupalcode.org/project/ai_context/-/work_items/3586330) State: closed | Updated: 2026-08-07 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::context, category::plan Description: ## Problem/Motivation Prioritize backlog items for the sprint to align with roadmap, releases, and project needs. --- ## Proposed resolution Groom sprint issues https://git.drupalcode.org/project/ai_context/-/work_items/views/75 --- ## Target date or deadline 25 July to 7 August 2026 --- ## Remaining tasks - Go through backlog and prioritize - Create new issues as needed - Identify what goes into sprint - Tune mid-sprint as needed - Update roadmap meta as needed --- ## Related issues - [#3567798: [META] CCC MVP 1.0 roadmap](https://www.drupal.org/project/ai_context/issues/3567798… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- - [5c9120b0](https://git.drupalcode.org/project/ai_context/-/commit/5c9120b0aa157184c3a1ba804d85427b65703d8e) Issue #3586365: Document scope selection and ranking logic. — Kristen Pol (2026-08-08T01:31:12.000+00:00) ======================================================================== ## [7] summariseModule:ai_dashboard:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Dashboard (machine name: ai_dashboard) Reporting period: last 24h (2026-08-07T05:00:05+00:00 to 2026-08-08T05:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

              AI Dashboard

              then use

              ,

              ,

                /
              • , and as needed. Output only the HTML fragment with no surrounding , , or
                tags. After the project summary prose, add a single subsection titled "

                How can I help on this project?

                " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Configuring Project Browser on a standard Drupal core install (not CMS) to provide "Install" buttons for AI recipes](https://git.drupalcode.org/project/ai_dashboard/-/work_items/3585224) State: opened | Updated: 2026-08-07 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: Description: I have AI Dashboard 1.0.3 installed on a fresh, local Drupal core 11.4.5 with some other AI-related modules. When I go to /admin/config/ai, in the "Features" section I see the recommended recipes, and each as a "View commands" button (not an "Install" button.) In my bid to be able to install these with Project Browser (via the "Install" button), I did the following: 1. Added `$settings['testing_package_manager'] = TRUE;` to my `settings.php` file. 2. Ensured the `package_manager` core module was enabled. 3. Selected the "Allow installing via UI (experimental)" option on /`admin/config/de… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [8] summariseModule:ai_search:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Search (machine name: ai_search) Reporting period: last 24h (2026-08-07T05:00:05+00:00 to 2026-08-08T05:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                AI Search

                then use

                ,

                ,

                  /
                • , and as needed. Output only the HTML fragment with no surrounding , , or
                  tags. After the project summary prose, add a single subsection titled "

                  How can I help on this project?

                  " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [[PP-1] Provide an API for performing access check on non-content entities](https://git.drupalcode.org/project/ai_search/-/work_items/3579758) State: opened | Updated: 2026-08-07 | Author: drupalbot | Assigned: unassigned | Labels: category::feature, code, priority::normal, state::closed Description: >>> [!note] Migrated issue Reported by: [mxr576](https://www.drupal.org/user/315522) >>> Problem/Motivation SearchApiAiSearchBackend used to only have support for content entities (indexed via rupal\search_api\Plugin\search_api\datasource\ContentEntity but that was fixed in #3575999: Fix support of non-content entity SearchAPI datasources. Now SearchApiAiSearchBackend can index and work with other data sources however it does not provide an API for performing access checks on search results before they are returned. The scope of this issue is designing and introducing that new API that con… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [9] summariseModule:agui:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AG-UI (machine name: agui) Reporting period: last 24h (2026-08-07T05:00:05+00:00 to 2026-08-08T05:00:05+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                  AG-UI

                  then use

                  ,

                  ,

                    /
                  • , and as needed. Output only the HTML fragment with no surrounding , , or
                    tags. After the project summary prose, add a single subsection titled "

                    How can I help on this project?

                    " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Fix ai_agents dependency setting that currently can cause config import issue](https://git.drupalcode.org/project/agui/-/work_items/3590048) State: opened | Updated: 2026-08-07 | Author: Takaya Hirose (takayahirose) | Assigned: unassigned | Labels: Description: Fix ai_agents dependency setting that currently can cause config import issue --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [10] generateTldr:developer ======================================================================== You are an editor distilling a Drupal AI project newsletter into its most important highlights. You are writing for a technical developer audience. Be specific — name modules, merged features, and critical bugs. Read all the module summaries below. Separate the highlights into two categories: - SHIPPED: things that were merged, fixed, released, or completed during this period. - ONGOING: things that are actively in progress, under review, or blocked. Be specific — name the module, what happened, and why it matters. Do not use emoticons or mdashes. Do not include any text outside the two sections. When you mention a specific issue or merge request, add an inline citation using [N] where N is the reference number from the list below. You may cite multiple references per item, e.g. [1][3]. Place citations immediately after the relevant phrase, before any punctuation. Format as two HTML sections. Use exactly this structure (all
                  • elements must be inside the
                      , never outside it):

                      Shipped

                      1. Title here — One sentence explanation [1].
                      2. Another title — One sentence explanation.

                      Ongoing

                      1. Title here — One sentence explanation [2].
                      Up to 5 items per section. Do not output any text, tags, or characters outside these two sections. Output only the HTML fragment, no surrounding tags. --- REFERENCE LIST --- [1] LLM: Text / LLM: Text (simple) automators silently drop Base Field content when Base Field and Target Field are both long-text types (Basic input mode) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586659 [2] `AiReranker::extractItemText()` should prefer chunk text over configured indexed fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586637 [3] Release 1.4.6 and 1.3.11 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586650 [4] Drupal 11.4 DeepChat Block does not work with Webprofiler enabled (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586615 [5] Allow Internal Tool Calling (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586616 [6] bug: #3586637 should prefer chunk text over configured indexed fields (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1908 [7] Call with UNDISCLOSED to join AI initiative (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586677 [8] Emails with Vardot to join AI initiative (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586676 [9] Call with will Open sense labs to join AI initiative (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586675 [10] Call with will Jairo from SEEDEM to join AI initiative (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586674 [11] Call with will zoocha to join AI initiative march 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586673 [12] Called mike giamon from elevated third to join aug 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586672 [13] Talked to Prateek from Axelerant to join juli 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586671 [14] Called with Morpht to renew second time in march 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586670 [15] Talked to Morpht in juli 2025 to join initiative (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586669 [16] Talked with Dipen from QED42 on joining in july 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586668 [17] Bring in ImageX Glenn hilton in aug 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586667 [18] Called with Michael from Amazee to bring them in june 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586666 [19] Brought in Acquia as founding sponsor in may 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586665 [20] Call with Kristen to make Salsa join may 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586664 [21] Call FG Jamie at Drupaljam on funding may 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586663 [22] Call with 1xinternet may 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586662 [23] Drupal AI Slide Deck (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3533346 [24] Add OAuth Scope Validation for MCP Authentication (mcp, Issue) — https://git.drupalcode.org/project/mcp/-/work_items/3569845 [25] #3569845: Add Oauth Scope Validation (mcp, MR) — https://git.drupalcode.org/project/mcp/-/merge_requests/44 [26] Enabling Artifact Storage on the "List content entities" tool throws error (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586062 [27] PrivateTempStatusStorage::getTempStoreKey() overflows key_value_expire.name for anonymous users with long ids (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586063 [28] Skip tools that never executed when collecting tool result images (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/339 [29] Agent status tempstore key overflows for anonymous users (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/338 [30] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [31] StaticPropSource widget building is order-dependent: dangling prop fields collide in core's TypedData item-prototype cache (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591918 [32] Clear the component hover outline when a drag starts (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591929 [33] `drush config:import` can fail to update a Component whose `active_version` changed (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591905 [34] Allow component properties to be categorized/grouped/organized (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3492758 [35] Brand Kit color support (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591838 [36] Unnecessary horizontal movement (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3534972 [37] Canvas AI: page builder discards the whole build when the LLM names a region that does not exist (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591876 [38] Component version hashes go stale on single-process installs: prop-shape re-resolution is deferred to teardown and skipped on a cold cache (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591916 [39] Array prop shapes don't inherit their item shape's cache tags, so prop-shape invalidation misses them (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591917 [40] Expose headless page helpers from isomorphic package entries (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591928 [41] Text-based comparison of entities (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591668 [42] [META]Canvas AI: Client-side orchestration loop roadmap (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591777 [43] Canvas AI: Cover the error path that clears stored agent state (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591927 [44] Canvas AI: Add Playwright coverage for the component agent hop loop (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591926 [45] AssetResolver::getJsAssets() is incompatible with core 11.x since #3565258 added $with_dependencies (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591925 [46] Canvas AI: Add a Drupal Canvas Agent that answers general questions (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591924 [47] Canvas AI: Research how a user can cancel a running chat turn (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591923 [48] Canvas AI: Add end-to-end kernel coverage for the dev page builder agent (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591922 [49] Canvas AI: Add a dev page builder agent and wire the placement tools (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591921 [50] Canvas AI: Add a catalog-only parameter to the get_component_context tool (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591920 [51] Canvas AI: Run the agent selected in configuration instead of a hardcoded one (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591919 [52] Canvas AI: Add Tools dropdown to chat UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591856 [53] Prefix-strip redirect misses default-language prefixes and is overridden by ?destination (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591839 [54] Incorrect folder assignment for newly created code components (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591828 [55] Expand conflict detection and resolution entity types other than Page (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591544 [56] chore(deps): update dependency cspell to v10 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1273 [57] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [58] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [59] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [60] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [61] Name dangling prop fields by field type so different-typed prop widgets don't share a TypedData item prototype (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1476 [62] bug: Component hover outline stays visible after a drag starts (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1483 [63] #3591916 Drain invalidated prop shapes before component generation; narrow the cold-cache guard (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1478 [64] #3591838 [PHASE 2] introduce color props (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1432 [65] #3591838 brand kit color implementation (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1385 [66] feat: #3518272 support all entity types with configurable displays for content templates (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/791 [67] Draft: #3591838 Phase 3: Usage data + deletion (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1479 [68] #3591875: "Translatable props missing from TMGMT form when component instances cannot be auto-updated to active version" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1418 [69] Resolve module-contributed import map entries in builds, pushes, and Workbench (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1482 [70] Give the editor canvas a reluctant vertical drag auto-scroll (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1392 [71] #3591870: Add a PHPStan rule to verify PHPUnit coverage attributes reference existing symbols (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1415 [72] Add PHPStan rule: needs*() config detectors must not mutate the entity they inspect (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1416 [73] Self-heal stored default-relative-url `$id` on read, and clean it up on update (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1474 [74] #3591917 Array prop shapes inherit their item shape's cache tags (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1475 [75] chore: version packages (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1481 [76] fix(Headless): #3591928 Expose headless page helpers from isomorphic package entries (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1480 [77] feat(Conflict detection): #3591668 "Text-based Page entity representation via Canvas API" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1241 [78] chore: version packages (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1464 [79] Draft: Resolve #3546597 "Create canvas page in other languages" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/494 [80] feat(CLI Tool): Push components as external metadata when the Headless SDK is present (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1470 [81] bug: #3591839 Preserve the query string when stripping the language prefix; a... (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1387 [82] #3591828: Fixed folder categorization issue follow-up. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1477 [83] Draft: Resolve "Canvas AI: Add Tools dropdown to chat UI" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1447 [84] Document Purpose field guidance for conditional subcontext selection (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586390 [85] Rename entity bundle and target entity scope plugins for better DX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586276 [86] Test current conditional subcontext selection before changing the prompt (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586351 [87] Tune conditional subcontext logic (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586199 [88] Add context item Priority field and use it for selection ordering (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586376 [89] Remove max_items context limit and rely on the token budget (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586378 [90] QA team start testing CCC to get familiar with functionality and create QA plan (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586342 [91] CCC QA scripts for 1.0 testing (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586226 [92] Create CCC beta3 and beta4 and status update video (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586333 [93] Switch CCC documentation link to clean version (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586370 [94] Pre-1.0 documentation, trust, and compatibility follow-up to issue 3586363 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586382 [95] Install `target_entities` field storage when Dynamic Entity Reference is enabled on existing sites (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586375 [96] Update ai_context project page and docs based on new naming approach (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586217 [97] Create CCC video showing how to configure it (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586153 [98] [Discuss] Approach for CCC+agent integration testing (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3571117 [99] Document how to use RAG with CCC 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586371 [100] Document real-world use cases for CCC 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586372 [101] Persist context-item token counts and show token-budget usage in CCC UI (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586379 [102] Pre-1.0 context selection reliability and diagnostics follow-up to issue 3586363 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586383 [103] CCC Outside AI roadmap discussion meeting August 2026 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586387 [104] Create multi-vocabulary taxonomy scope plugin (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586237 [105] [Meta] CCC MVP 1.0 roadmap (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3567798 [106] [Discuss] Add boundaries / exclusions to scope plugins (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586197 [107] Recruit additional CCC beta testers (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586235 [108] Add CCC beta tester info to the project page (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586248 [109] Update project page to make it more clear that CCC is for agents (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586278 [110] Clarify scope eligibility, ranking, and limits in UI help and documentation (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586348 [111] Review and update CCC permissions for beta5 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586358 [112] Review and document context selection ranking factors before 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586365 [113] CCC beta4 codebase review (pre-release) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586374 [114] [Meta] CCC rc cleanup from non-pressing beta code review items (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586389 [115] [Meta] CCC 1.1 release planning (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586373 [116] "Global context" checkbox description renders a literal
                      instead of a line break (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586369 [117] [Meta] Prepare CCC for Inside AI Rotterdam demo (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586386 [118] Create CCC recipe for Inside Rotterdam demo (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586385 [119] Align scope scoring, language service, and contextual selection behavior (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586388 [120] [Discuss] Evaluate Tool API integration for CCC context tools (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3574926 [121] [Discuss] Add agent-level context isolation and governance controls (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586166 [122] Sprint 15 CCC roadmap updates, sprint planning, and issue triage (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586330 [123] Issue #3586376: Add context item priority field and selection tie-breakers. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/245 [124] Issue #3586378: Remove max_items context limit and rely on token budget. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/244 [125] Issue #3586226: Add 1.0 QA test scripts for manual testing. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/243 [126] Issue #3586365: Document scope selection and ranking logic. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/241 [127] Issue #3586388: Align scope scoring and contextual detection. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/242 [128] Issue #3586276: Rename entity bundle and target entity scope plugins for better DX (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/195 [129] Configuring Project Browser on a standard Drupal core install (not CMS) to provide "Install" buttons for AI recipes (ai_dashboard, Issue) — https://git.drupalcode.org/project/ai_dashboard/-/work_items/3585224 [130] [PP-1] Provide an API for performing access check on non-content entities (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3579758 [131] Fix ai_agents dependency setting that currently can cause config import issue (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3590048 --- MODULE SUMMARIES ---

                      AI (Artificial Intelligence)

                      The AI module saw focused issue triage and refinement over the reporting period, though no merge requests were merged or commits pushed. Two bug reports were accepted: LLM: Text / LLM: Text (simple) automators silently drop Base Field content when Base Field and Target Field are both long-text types (Basic input mode) highlights a critical flaw where the llm_text_long and llm_simple_text_long automators fail to include source content from long-text base fields in AI provider requests, causing models to respond as if no input was provided. Meanwhile, AiReranker::extractItemText() should prefer chunk text over configured indexed fields documents a reranking regression in ai_search where chunk-mode results are reranked against entire entity field content instead of individual chunk text from getExtraData('content'), degrading chunk-level relevance. A merge request addressing the reranker issue is under review.

                      The Release 1.4.6 and 1.3.11 task was closed. Work continues on Drupal 11.4 DeepChat Block does not work with Webprofiler enabled and the newly accepted Allow Internal Tool Calling feature request proposing deny/allow lists for provider-native tools.

                      How can I help on this project?

                      Review MR !1908 fixing AiReranker chunk text extraction. Investigate and patch the llm_text_long Base Field content issue. Help scope the Internal Tool Calling feature by proposing API structure for per-operation tool configuration.

                      Contributors: Ann Mary Sruthy (annmarysruthy) ---

                      Drupal AI Initiative

                      The past 24 hours saw significant administrative cleanup as 16 organizational and partnership tracking issues were closed. These covered the onboarding of various sponsors and partners to the AI Initiative, ranging from founding members to silver partners, documented over the past year. Additionally, the Drupal AI Slide Deck issue was closed, which had tracked the creation of presentation materials for pitching Drupal AI to clients and conferences.

                      No merge requests were merged and no commits were pushed during this period. The activity was entirely focused on issue housekeeping and documentation of past partnership activities.

                      How can I help on this project?

                      Check the AI Initiative issue queue for unassigned technical issues without existing merge requests. Consider reviewing open documentation or contributing to companion pages on Drupal.org that align with initiative materials. Test existing AI module integrations and report specific bugs with clear reproduction steps.

                      ---

                      Model Context Protocol

                      The Model Context Protocol module saw development activity focused on OAuth authentication security. A merge request was opened to address Add OAuth Scope Validation for MCP Authentication, which adds validation for OAuth scopes during MCP client-to-server authentication. Currently, authentication succeeds with all dynamically requested scopes, but the proposed changes introduce configuration options to restrict which OAuth fields and scopes are supported. The #3569845: Add Oauth Scope Validation merge request is now available for review, representing 865 lines of diff.

                      How can I help on this project?

                      • Review the OAuth scope validation merge request to provide feedback on the implementation and test the authentication flow with restricted scopes.
                      • Test the proposed OAuth scope validation changes against various MCP client configurations to ensure backward compatibility.

                      Contributors: Shubham Goel (shubhamgoel)

                      ---

                      AI Agents

                      Two bug fixes were advanced during the reporting period. The first addresses an error when Artifact Storage is enabled on the built-in "List content entities" tool, which causes agent runs to fail with "The action result cannot be retrieved until the action ::execute() method has been called." A merge request was opened that skips tools that never executed when collecting tool result images (Skip tools that never executed when collecting tool result images).

                      The second issue concerns PrivateTempStatusStorage::getTempStoreKey(), which builds agent status tempstore keys without length bounds. This causes the key to overflow the key_value_expire.name column (128-character limit) for anonymous users with long session-based identifiers. An open merge request (Agent status tempstore key overflows for anonymous users) addresses this overflow.

                      How can I help on this project?

                      Review the two open merge requests: MR !339 on artifact storage and MR !338 on tempstore key overflow. Test both patches against the reproduction steps in their linked issues to validate the fixes.

                      Contributors: Prabhavathi Vanipenta (prabha1997) ---

                      Drupal Canvas

                      Several critical bug fixes merged during the reporting period. A collision in TypedData item-prototype caching was resolved by namespacing dangling prop fields by field type in StaticPropSource. Array prop shapes now inherit cache tags from their item shapes, fixing missed invalidation when config changes affect array-of-X props. A headless package entry refactor moved page helpers like PageResult and isPageRedirect() to the isomorphic entry, preventing server code leakage into client bundles.

                      On the feature side, Brand Kit color support shipped with phase 1 merged (MR !1385), introducing a Color entity type following the W3C color design tokens spec, a Brand Kit panel, and an entity browser. Phase 2 (color props, MR !1432) and phase 3 (usage data and deletion, MR !1479) remain in progress. The CLI tool now supports pushing components as external metadata when the Headless SDK is present, with SDK detection and explicit type: external opt-in. A reluctant vertical drag auto-scroll landed to eliminate unwanted horizontal canvas movement.

                      Active work continues on component version hash staleness during single-process installs (MR !1478 open), self-healing stored $id in default-relative-url prop sources (MR !1474 open), and clearing component hover outlines on drag start (MR !1483 open). The Canvas AI client-side orchestration loop roadmap has spawned multiple follow-up issues for tooling, coverage, and agent configuration.

                      Blocking progress: AssetResolver signature incompatibility with Drupal 11.x since core added a $with_dependencies parameter. A drush config:import failure when active_version changed was closed as fixed.

                      How can I help on this project?

                      Review MR !1478 addressing component version hash staleness by draining invalidated prop shapes before generation. Review MR !1474 which self-heals stored $id in default-relative-url prop sources. Pick up the unassigned AssetResolver signature incompatibility blocking Drupal 11.x support.

                      Contributors: **** (project_19391_bot_17a61b0edeafd5a3db3e8b2462b6c010), **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Adam G-H (phenaproxima), Ben Mullins (bnjmnm) [1], Canvas version bot [2], Christian López Espínola (penyaskito) [2], David Bravo (davidbp), Feliksas Mazeikis (f.mazeikis), Fons Vandamme (f0ns), Gábor Hojtsy (goba), Harumi Jang (hooroomoo) [1], Kunal Sachdev (kunal.sachdev), Lauri Timmanee (lauriii) [1], utkarsh_33 (Utkarsh_33), wotnak [1]

                      ---

                      Context Control Center (CCC)

                      The module closed Tune conditional subcontext logic after testing showed the current prompt design (parent content, task, and each child's ID and Purpose) is sufficient for well-authored configurations. The work revealed that failures stem from weak Purpose text rather than missing structural data, shifting focus to field guidance for Purpose instead of richer indexing.

                      The codebase review for beta4 closed after identifying no blocking issues, and MR !241 was merged documenting scope selection and ranking logic. Sprint 15 planning wrapped, with issue triage clearing several postponed items and preparing the backlog for the beta4 release cycle.

                      Work is underway on token budget management, priority-based selection tie-breakers, and removal of the max_items configuration in favor of token limits. Open merge requests include MR !195 (scope plugin renaming for better DX), MR !244 (max_items removal), and MR !242 (alignment of scope scoring and contextual selection). A bug was reported where the Global context checkbox description renders a literal <br> tag instead of a line break.

                      The beta tester recruitment issue closed, and the project page was updated with onboarding resources. QA planning continues with script preparation (MR !243) and the QA team becoming familiar with CCC functionality ahead of 1.0 testing.

                      How can I help on this project?

                      Contributors: Kristen Pol (kepol) [1]

                      ---

                      AI Dashboard

                      No merge requests were merged or commits pushed during this reporting period.

                      Discussion continued on Configuring Project Browser on a standard Drupal core install (not CMS) to provide "Install" buttons for AI recipes, which addresses the challenge of enabling one-click recipe installation through Project Browser. The issue examines what configuration is needed beyond enabling Package Manager and experimental UI installation settings to surface "Install" buttons rather than "View commands" buttons for AI recipes on the dashboard configuration page.

                      How can I help on this project?

                      ---

                      AI Search

                      The AI Search module saw minimal activity during the reporting period, with no merge requests merged or commits pushed. The main focus remains on addressing non-content entity support.

                      An issue tracking access control improvements for non-content entities, Provide an API for performing access check on non-content entities, saw updates during the period. Following recent fixes to enable SearchApiAiSearchBackend to work with non-content entity SearchAPI datasources, this issue addresses the need for a new API to perform access checks on search results before they are returned to users. The issue is currently marked as closed, though its state shows as opened.

                      No blocking issues or API changes were reported during this period.

                      How can I help on this project?

                      Review the closed non-content entity access check issue to understand the API design patterns. Consider testing the SearchApiAiSearchBackend with various non-content datasources to identify edge cases or documentation gaps that could benefit from follow-up work.

                      ---

                      AG-UI

                      Activity was light during this period. An issue was opened regarding a configuration import problem caused by ai_agents dependency settings. The issue addresses a dependency declaration that can cause config import failures, though no merge requests or commits were pushed to resolve it yet.

                      No merges or API changes occurred during this reporting window. The dependency configuration issue remains the primary known blocker affecting config management workflows.

                      How can I help on this project?

                      • Investigate the ai_agents dependency configuration import issue and prepare a patch addressing the dependency declaration.
                      • Test AG-UI's config import and export workflows to identify any additional edge cases with module dependencies.
                      ======================================================================== ## [11] factcheck:tldr:developer ======================================================================== Layer-1 corrections: 0 Judge flags: 5 ======================================================================== ## [12] summariseModule:ai:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI (Artificial Intelligence) (machine name: ai) Reporting period: last 24h (2026-08-07T05:00:05+00:00 to 2026-08-08T05:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Ann Mary Sruthy (annmarysruthy)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                      AI (Artificial Intelligence)

                      then use

                      ,

                      ,

                        /
                      • , and as needed. Output only the HTML fragment with no surrounding , , or
                        tags. After the project summary prose, add a single subsection titled "

                        How can I help on this project?

                        " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [LLM: Text / LLM: Text (simple) automators silently drop Base Field content when Base Field and Target Field are both long-text types (Basic input mode)](https://git.drupalcode.org/project/ai/-/work_items/3586659) State: opened | Updated: 2026-08-07 | Author: Adrian McKee (Adrianm6254) | Assigned: unassigned | Labels: category::bug, priority::normal, state::accepted Description: Problem/Motivation When configuring an LLM: Text (llm_text_long) or LLM: Text (simple) (llm_simple_text_long) automator in Basic input mode, with Automator Base Field set to another long-text field on the same entity (e.g. Body → a new summary field, both text_long/string_long type), the Base Field's content is not included in the request sent to the AI provider. The model consistently responds as though no source content was provided at all, e.g.: "I don't see an article provided in your message. Please share the article you'd like me to summarize..." This happens regardless of whether the… ### [`AiReranker::extractItemText()` should prefer chunk text over configured indexed fields](https://git.drupalcode.org/project/ai/-/work_items/3586637) State: opened | Updated: 2026-08-07 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: ai::inside, category::bug, priority::normal, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1908 [bug: #3586637 should prefer chunk text over configured indexed fields](https://git.drupalcode.org/project/ai/-/merge_requests/1908) | State: opened | Author: Ann Mary Sruthy (annmarysruthy), 204 diff lines Description: ## Problem/Motivation `ai_search`'s chunk-mode retrieval (used by `RagTool` and any other consumer querying with `search_api_ai_get_chunks_result`) carries the actual chunk text in `$item->getExtraData('content')`, not in the item's configured indexed source fields. `AiReranker::extractItemText()` only reads the processor's configured `source_fields` off each result item. For chunk-mode results this means every chunk belonging to the same entity reranks against the same text: the entity's full configured field content, not the individual chunk. Chunk-level rerank quality regresses to entity-… ### [Release 1.4.6 and 1.3.11](https://git.drupalcode.org/project/ai/-/work_items/3586650) State: closed | Updated: 2026-08-07 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: category::task, priority::normal Description: Expected release date: 5/Aug/26 QA issue: #3586651 ### [Drupal 11.4 DeepChat Block does not work with Webprofiler enabled](https://git.drupalcode.org/project/ai/-/work_items/3586615) State: opened | Updated: 2026-08-07 | Author: jesmaster (Jesmaster) | Assigned: Rodel Duterte (rduterte) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::bug Description: Chatbot was working on Drupal 11.3, I updated to 11.4 and the chatbot doesn't open when clicked anymore, there are no javascript errors in the console log. I deleted the block and re-created it and I'm getting this AJAX error when choosing the assisstant. ### [Allow Internal Tool Calling](https://git.drupalcode.org/project/ai/-/work_items/3586616) State: opened | Updated: 2026-08-07 | Author: Bryan Sharpe (b_sharpe) | Assigned: unassigned | Labels: aiCoreModule, category::feature, priority::normal, state::accepted Description: ## Summary Most AI providers have their own toolsets that can be used via the APIs, we should have configurable sets to allow/deny provider tools when making calls. ## Problem Currently there is no way to call internal tools provided by the provider. ## Proposed solution *(optional)* - Allow tool deny/allow list per Operation Type, similar to model configuration - This should expose the tool as available, not automatically make it append to requests. For example if we allow the "web_search" tool to be available, the item using it (i.e. Agent) would still need to attach it, just like fun… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [13] summariseModule:ai_initiative:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Drupal AI Initiative (machine name: ai_initiative) Reporting period: last 24h (2026-08-07T05:00:05+00:00 to 2026-08-08T05:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                        Drupal AI Initiative

                        then use

                        ,

                        ,

                          /
                        • , and as needed. Output only the HTML fragment with no surrounding , , or
                          tags. After the project summary prose, add a single subsection titled "

                          How can I help on this project?

                          " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Call with UNDISCLOSED to join AI initiative](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586677) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: They Joined! ### [Emails with Vardot to join AI initiative](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586676) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: They joined! ### [Call with will Open sense labs to join AI initiative](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586675) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: they joined! ### [Call with will Jairo from SEEDEM to join AI initiative](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586674) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: They joined before Vienna! ### [Call with will zoocha to join AI initiative march 2026](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586673) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Call with will zoocha to join AI initiative > joined ### [Called mike giamon from elevated third to join aug 2025](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586672) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Called mike giamon from elevated third to join aug 2025 > they joined ### [Talked to Prateek from Axelerant to join juli 2026](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586671) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Talked to Prateek from Axelerant to join juli 2026 > they joined ### [Called with Morpht to renew second time in march 2026](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586670) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Called with Morpht to renew second time in march 2026 > they renewed ### [Talked to Morpht in juli 2025 to join initiative](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586669) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Talked to Morpht in juli 2025 to join initiative > they joined ### [Talked with Dipen from QED42 on joining in july 2025](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586668) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Talked with Dipen from QED42 on joining in july 2025 > they joined ### [Bring in ImageX Glenn hilton in aug 2025](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586667) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Bring in ImageX Glenn hilton in aug 2025 > they joined as silver partner ### [Called with Michael from Amazee to bring them in june 2025](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586666) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Called with Michael from Amazee to bring them in june 2025, they joined at 20k as the first non founder. ### [Brought in Acquia as founding sponsor in may 2025](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586665) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Messaged and mailed with Dries and Acquia to bring them in as founding member. ### [Call with Kristen to make Salsa join may 2025](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586664) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Made deal with Salsa to join AI initative as a founding member by provide Kristen. ### [Call FG Jamie at Drupaljam on funding may 2025](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586663) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: Sat with Jamie to get the first 20k at Drupaljam 2025 ### [Call with 1xinternet may 2025](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586662) State: closed | Updated: 2026-08-07 | Author: Dominique De Cooman (domidc) | Assigned: Dominique De Cooman (domidc) | Labels: Description: May 2025 called Baddy to get the first 20k for the AI initiative. ### [Drupal AI Slide Deck](https://git.drupalcode.org/project/ai_initiative/-/work_items/3533346) State: closed | Updated: 2026-08-07 | Author: drupalbot | Assigned: James Tillotson (james_tillotson) | Labels: category::task, marketing, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [pdjohnson](https://www.drupal.org/user/72810) >>> Problem/Motivation Drupal AI lacks a presentation that could be used by those wishing to pitch to clients, present to a conference, use as an attachment to email about Drupal AI for a follow up after visiting a booth e.g. AI Summit London. We are building out companion pages on Drupal.org. This deck could help inform those pages and we need to make sure each is aligned. In turn, links could be provided to the D.O pages in the deck. Reference material We have some slides already created which may serv… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [14] summariseModule:mcp:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Model Context Protocol (machine name: mcp) Reporting period: last 24h (2026-08-07T05:00:05+00:00 to 2026-08-08T05:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Shubham Goel (shubhamgoel)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                          Model Context Protocol

                          then use

                          ,

                          ,

                            /
                          • , and as needed. Output only the HTML fragment with no surrounding , , or
                            tags. After the project summary prose, add a single subsection titled "

                            How can I help on this project?

                            " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Add OAuth Scope Validation for MCP Authentication](https://git.drupalcode.org/project/mcp/-/work_items/3569845) State: opened | Updated: 2026-08-07 | Author: drupalbot | Assigned: Shubham Goel (shubhamgoel) | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, ai::outside Description: >>> [!note] Migrated issue Reported by: [shubhamgoel](https://www.drupal.org/user/3682434) Related to !44 >>> When authenticating from the MCP client to the server, the authentication succeeds with all the dynamic scopes requested. There should be an option to enable or configure only the supported OAuth fields/scopes. --- MERGE REQUESTS (24h) --- ### [#3569845: Add Oauth Scope Validation](https://git.drupalcode.org/project/mcp/-/merge_requests/44) State: opened | Author: Shubham Goel (shubhamgoel) | Branch: 3569845-add-oauth-scope | 865 diff lines Description: Closes #3569845 --- COMMITS (24h) --- (none) ======================================================================== ## [15] summariseModule:ai_agents:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Agents (machine name: ai_agents) Reporting period: last 24h (2026-08-07T05:00:05+00:00 to 2026-08-08T05:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Prabhavathi Vanipenta (prabha1997)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                            AI Agents

                            then use

                            ,

                            ,

                              /
                            • , and as needed. Output only the HTML fragment with no surrounding , , or
                              tags. After the project summary prose, add a single subsection titled "

                              How can I help on this project?

                              " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Enabling Artifact Storage on the "List content entities" tool throws error](https://git.drupalcode.org/project/ai_agents/-/work_items/3586062) State: opened | Updated: 2026-08-07 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: category::bug, priority::normal, state::needsReview Description: **Problem** Enabling Artifact Storage on the built-in "List content entities" tool causes agent runs to fail with: `Error: The action result cannot be retrieved until the action ::execute() method has been called.` Enabling Artifact Storage on other tools (e.g. "Set field value") works fine with the same agent/prompt. **Steps to reproduce** 1. Create an agent with three tools: "Set field value" (tool_ai_connector), "List content entities" (ai_agents), "Save content item" (ai). 2. Do not enable Artifact Storage on any tool; do not use any default information tools. 3. Set the Agent prompt … ### [PrivateTempStatusStorage::getTempStoreKey() overflows key_value_expire.name for anonymous users with long ids](https://git.drupalcode.org/project/ai_agents/-/work_items/3586063) State: opened | Updated: 2026-08-07 | Author: Kwame Asamoah Boateng (asamoahboateng) | Assigned: unassigned | Labels: category::bug, priority::normal, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !338 [Agent status tempstore key overflows for anonymous users](https://git.drupalcode.org/project/ai_agents/-/merge_requests/338) | State: opened | Author: Prabhavathi Vanipenta (prabha1997), 21 diff lines Description: `PrivateTempStatusStorage::getTempStoreKey()` builds the agent status tempstore key as `'ai_agents_status_updates_' . $id`, using the caller-supplied `$id` verbatim with no length bound (`web/modules/contrib/ai_agents/src/Service/AgentStatus/Storages/PrivateTempStatusStorage.php:115-117`). `PrivateTempStore::set()` prefixes that key with an owner identifier before writing it to `key_value_expire.name`, a column hard-capped at 128 chars (`varchar_ascii`, length 128). For authenticated users the owner is just the numeric uid (short), but for anonymous visitors it's a ~44-character random sessio… --- MERGE REQUESTS (24h) --- ### [Skip tools that never executed when collecting tool result images](https://git.drupalcode.org/project/ai_agents/-/merge_requests/339) State: opened | Author: Prabhavathi Vanipenta (prabha1997) | Branch: 3586062-enabling-artifact-storage-on-the-list-content-entities-tool-throws-error | 24 diff lines Description: Closes #3586062 --- COMMITS (24h) --- (none) ======================================================================== ## [16] summariseModule:canvas:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Drupal Canvas (machine name: canvas) Reporting period: last 24h (2026-08-07T05:00:05+00:00 to 2026-08-08T05:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: **** (project_19391_bot_17a61b0edeafd5a3db3e8b2462b6c010), **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Adam G-H (phenaproxima), Ben Mullins (bnjmnm) [1], Canvas version bot [2], Christian López Espínola (penyaskito) [2], David Bravo (davidbp), Feliksas Mazeikis (f.mazeikis), Fons Vandamme (f0ns), Gábor Hojtsy (goba), Harumi Jang (hooroomoo) [1], Kunal Sachdev (kunal.sachdev), Lauri Timmanee (lauriii) [1], utkarsh_33 (Utkarsh_33), wotnak [1]". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                              Drupal Canvas

                              then use

                              ,

                              ,

                                /
                              • , and as needed. Output only the HTML fragment with no surrounding , , or
                                tags. After the project summary prose, add a single subsection titled "

                                How can I help on this project?

                                " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Dependency Dashboard](https://git.drupalcode.org/project/canvas/-/work_items/3591657) State: opened | Updated: 2026-08-08 | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Assigned: unassigned | Labels: projectManagement Description: This issue lists Renovate updates and detected dependencies. Read the [Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/) docs to learn more. ## Repository Problems Renovate tried to run on this repository, but found these problems. - ⚠️ WARN: Failed to set branch status - ⚠️ WARN: No github.com token has been configured. Skipping release notes retrieval - ⚠️ WARN: Rate limit exceeded for api.github.com, as no hostRules set for this host. Please set a GITHUB_COM_TOKEN - ⚠️ WARN: No tool releases found. ## Deprecations / Replacements > ⚠️ **Warning** > The foll… ### [StaticPropSource widget building is order-dependent: dangling prop fields collide in core's TypedData item-prototype cache](https://git.drupalcode.org/project/canvas/-/work_items/3591918) State: closed | Updated: 2026-08-08 | Author: Christian López Espínola (penyaskito) | Assigned: unassigned | Labels: category::bug, priority::normal, reduxIntegratedFieldWidgets, state::rtbc Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1476 [Name dangling prop fields by field type so different-typed prop widgets don't share a TypedData item prototype](https://git.drupalcode.org/project/canvas/-/merge_requests/1476) | State: merged 2026-08-08 | Author: Christian López Espínola (penyaskito), 78 diff lines Description: ## Problem/Motivation `StaticPropSource` conjures a host-less, nameless field item list to render a widget for a single component prop. `StaticPropSource::formTemporaryRemoveThisExclamationExclamationExclamation()` then re-parents that field under a host entity via `setContext(NULL, EntityAdapter::createFromEntity($host_entity))`. Drupal core's `TypedDataManager::getPropertyInstance()` caches field item *prototypes* keyed by the root object's data type plus the field's property path. After re-parenting, every synthetic prop field — whatever its own field type — presents the same root (`entit… ### [Clear the component hover outline when a drag starts](https://git.drupalcode.org/project/canvas/-/work_items/3591929) State: opened | Updated: 2026-08-08 | Author: Lauri Timmanee (lauriii) | Assigned: unassigned | Labels: Needs review Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1483 [bug: Component hover outline stays visible after a drag starts](https://git.drupalcode.org/project/canvas/-/merge_requests/1483) | State: opened | Author: Lauri Timmanee (lauriii), 79 diff lines Description: ## Overview In the Canvas editor, the hover outline on a component in the preview stays visible after you start dragging it, and is still there after the drag ends, after an invalid drop, and after cancelling with Escape. To reproduce: hover a component in the preview, press the mouse down, and move a small distance without leaving that component's bounds. The editor stores a single hovered component uuid, written on `mouseover` and cleared on `mouseout`. The drag sensor activates after 3px, so a normal drag starts without the pointer crossing the component's boundary, no `mouseout` fires, … ### [`drush config:import` can fail to update a Component whose `active_version` changed](https://git.drupalcode.org/project/canvas/-/work_items/3591905) State: closed | Updated: 2026-08-07 | Author: Dave Long (longwave) | Assigned: unassigned | Labels: category::bug, dataModel, priority::major, state::fixed Description: Importing configuration for an existing `canvas.component.*` config entity can fail when its `active_version` differs from the one in the target database: ``` Unexpected error during import with operation update for canvas.component.extjs.my_component: 'component' entity is a versioned config entity, and its loaded version is not the active version. ``` This blocks the standard `drush deploy` workflow: change a component's props in one environment, export, then deploy to another. Any deploy that bumps a version hash can fail, unless a cache clear takes place immediately before importing confi… ### [Allow component properties to be categorized/grouped/organized](https://git.drupalcode.org/project/canvas/-/work_items/3492758) State: opened | Updated: 2026-08-07 | Author: drupalbot | Assigned: unassigned | Labels: category::feature, pageBuilder, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) Related to !1071 >>> Overview Right now, if you have a number of component properties, they all show up in the UI with no organization other than the order they show up in the yml file. There are reasons why it could improve the UX to allow for the categorization of the properties. For example, if there are properties for filling in the content of the component vs properties for styling the component, they could be separated to make this more clear, e.g. a button might have: Content - icon- text- urlSt… ### [Brand Kit color support](https://git.drupalcode.org/project/canvas/-/work_items/3591838) State: closed | Updated: 2026-08-07 | Author: Ben Mullins (bnjmnm) | Assigned: Ben Mullins (bnjmnm) | Labels: state::rtbc Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1432 [#3591838 [PHASE 2] introduce color props](https://git.drupalcode.org/project/canvas/-/merge_requests/1432) | State: opened | Author: Ben Mullins (bnjmnm), 4472 diff lines - MR !1385 [#3591838 brand kit color implementation](https://git.drupalcode.org/project/canvas/-/merge_requests/1385) | State: merged 2026-08-07 | Author: Ben Mullins (bnjmnm), 8092 diff lines - MR !1479 [Draft: #3591838 Phase 3: Usage data + deletion](https://git.drupalcode.org/project/canvas/-/merge_requests/1479) | State: opened | Author: Ben Mullins (bnjmnm), 14666 diff lines Description: ## Brand Kit: Color management ### Summary Add a Color entity type to Brand Kit, enabling brand owners to define, organize, and manage a color palette globally. This is the foundational layer — color props on components (allowing editors to select brand colors when configuring components) will follow in a later issue. ### What this adds - **Color entity type** using the [W3C color design tokens spec](https://www.designtokens.org/tr/2025.10/color/#srgb-linear) for storing color values, along with a human-readable name and CSS variable name. - **Brand Kit panel** — colors tab in Brand Kit fo… ### [Unnecessary horizontal movement](https://git.drupalcode.org/project/canvas/-/work_items/3534972) State: closed | Updated: 2026-08-07 | Author: drupalbot | Assigned: unassigned | Labels: category::bug, pageBuilder, priority::major, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1392 [Give the editor canvas a reluctant vertical drag auto-scroll](https://git.drupalcode.org/project/canvas/-/merge_requests/1392) | State: merged 2026-08-07 | Author: Lauri Timmanee (lauriii), 403 diff lines Description: >>> [!note] Migrated issue Reported by: [lauriii](https://www.drupal.org/user/1078742) >>> Overview For some reason, XB tries to move horizontal position when I drag a component to some slots. It makes sense that the canvas scrolls when you try to drag something to the edge. In this scenario, I'm pretty far away from the edge so I'm not sure what's causing the movement. Proposed resolution User interface changes ### [Canvas AI: page builder discards the whole build when the LLM names a region that does not exist](https://git.drupalcode.org/project/canvas/-/work_items/3591876) State: opened | Updated: 2026-08-07 | Author: Rajab Natshah (RajabNatshah) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai, ai::inside Description: ## Problem/Motivation `CanvasAiPageBuilderHelper` throws when the AI names a target region that is not present in the current layout: ``` Region "%s" not found in layout ``` The LLM commonly guesses a generic region name that does not exist on the entity's actual layout (for example `content` capitalized, `0`, or `header` on a single-region layout). The exception aborts the entire page-build operation, so the whole AI response is discarded instead of degrading gracefully into a usable page. ## Steps to reproduce 1. Use the Canvas AI page builder to add components on a page whose layout do… ### [Component version hashes go stale on single-process installs: prop-shape re-resolution is deferred to teardown and skipped on a cold cache](https://git.drupalcode.org/project/canvas/-/work_items/3591916) State: opened | Updated: 2026-08-07 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito) | Labels: category::bug, priority::major, shapeMatching, state::needsReview Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1478 [#3591916 Drain invalidated prop shapes before component generation; narrow the cold-cache guard](https://git.drupalcode.org/project/canvas/-/merge_requests/1478) | State: opened | Author: Christian López Espínola (penyaskito), 476 diff lines Description: ### Overview A site installed with `drush site:install` (or any single-process recipe apply) can end up with Component config entities whose `active_version` hash does not match what the current site state generates — and the site stays that way until an unrelated event regenerates components. The same recipes applied through the browser installer produce a different (correct) version history, because the work is split across multiple requests. The cause is how `PersistentPropShapeRepository` refreshes storable prop shapes: - When config that affects prop shapes changes mid-process (e.g. a … ### [Array prop shapes don't inherit their item shape's cache tags, so prop-shape invalidation misses them](https://git.drupalcode.org/project/canvas/-/work_items/3591917) State: closed | Updated: 2026-08-07 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito) | Labels: category::bug, priority::normal, shapeMatching, state::rtbc Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1475 [#3591917 Array prop shapes inherit their item shape's cache tags](https://git.drupalcode.org/project/canvas/-/merge_requests/1475) | State: merged 2026-08-07 | Author: Christian López Espínola (penyaskito), 284 diff lines Description: ### Overview Components with an array prop (e.g. an array-of-images prop, mapped to a multi-value field) do not get a new version when config changes the storable prop shape of the array's *items* — even in situations where components using the same item shape directly *do* get one. Cause: when an array shape's storable prop shape is computed, the item shape is resolved through the prop shape repository and its field type, widget, and settings are copied into the array's `StorablePropShape` — but the cache tags that alter hooks attach to the *item* candidate (e.g. `config:media_type_list` fr… ### [Expose headless page helpers from isomorphic package entries](https://git.drupalcode.org/project/canvas/-/work_items/3591928) State: closed | Updated: 2026-08-07 | Author: wotnak | Assigned: wotnak | Labels: headless Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1480 [fix(Headless): #3591928 Expose headless page helpers from isomorphic package entries](https://git.drupalcode.org/project/canvas/-/merge_requests/1480) | State: merged 2026-08-07 | Author: wotnak, 694 diff lines Description: `PageResult`, `isPageRedirect()`, and page-head serialization are currently exported only from the server entry. Nuxt and TanStack routes receive these serializable results through server endpoints or functions but execute in isomorphic bundles. Using the server entry adds server code to client bundles, while avoiding it requires duplicate response types. ### Proposed resolution Move the page contracts and pure helpers to the isomorphic `@drupal-canvas/headless` entry while preserving existing server re-exports. Add a client-safe `@drupal-canvas/headless-tanstack-start/head` entry for `toTan… ### [Text-based comparison of entities](https://git.drupalcode.org/project/canvas/-/work_items/3591668) State: opened | Updated: 2026-08-07 | Author: Feliksas Mazeikis (f.mazeikis) | Assigned: Feliksas Mazeikis (f.mazeikis), Ravi Maniyar (ravi.maniyar.123) | Labels: Conflict resolution, auto-save, autoSave, backend Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1241 [feat(Conflict detection): #3591668 "Text-based Page entity representation via Canvas API"](https://git.drupalcode.org/project/canvas/-/merge_requests/1241) | State: opened | Author: Feliksas Mazeikis (f.mazeikis), 685 diff lines Description: ### Overview As part of #3587587 we need to be able to compare entities with conflicts not only using visual preview, but also using text-based side-by-side comparison. This issue adds such functionality for Page entities in Canvas. There are two separate MRs: 1. !1241+ is adding BE changes and is currently blocked on !1356 2. !1266 is the MR with FE changes adding this functionality ### Proposed resolution * Add BE endpoint that: * Accepts `'autoSaved'` boolean query argument, allowing user to request auto-save draft or published version of the entity * Response contains only serves… ### [[META]Canvas AI: Client-side orchestration loop roadmap](https://git.drupalcode.org/project/canvas/-/work_items/3591777) State: opened | Updated: 2026-08-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: ai Description: ## Development strategy Breaking changes and new features ship behind a dev module, the way Canvas already does it for conflict detection with `canvas_dev_cd`. We create `canvas_dev_ai` and hide the revamped flow behind it. - **New tools and services merge directly into `canvas_ai`**, not the dev module: `place_components`, `edit_components`, `set_page_value`, `get_component_details`, and their supporting services. - **The controller is cloned into `canvas_dev_ai`.** Copy `canvas_ai`'s existing `CanvasBuilder` into the dev module with the hop-loop `render()`, served at `/admin/api/canvas/ai-… ### [Canvas AI: Cover the error path that clears stored agent state](https://git.drupalcode.org/project/canvas/-/work_items/3591927) State: opened | Updated: 2026-08-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: ai Description: ## Summary When an agent run throws, the dev controller deletes the stored agent state for that turn and returns an error response. Nothing asserts either half. Part of https://git.drupalcode.org/project/canvas/-/work_items/3591777. ## What the test should validate - The stored agent state for the turn is deleted. - The response reports failure and does not ask for another hop. ## Current behavior `CanvasDevAiBuilder::render()` wraps `determineSolvability()` in a try/catch. The catch deletes the stored agent state for the turn and returns `status: false` with `should_continue: false`. No … ### [Canvas AI: Add Playwright coverage for the component agent hop loop](https://git.drupalcode.org/project/canvas/-/work_items/3591926) State: opened | Updated: 2026-08-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: ai Description: ## Summary The dev chat runs a turn as several requests — the agent pauses after each tool decision and the browser re-POSTs until `should_continue` is false. Nothing covers that loop in a browser. Part of https://git.drupalcode.org/project/canvas/-/work_items/3591777. ## What the test should validate - The user's message is rendered in the chat UI. - The progress message is rendered. - The progress loader appears while the turn is running. - The turn keeps hopping until a response reports `should_continue: false`, and stops there. - The final message returned by the controller is rendered … ### [AssetResolver::getJsAssets() is incompatible with core 11.x since #3565258 added $with_dependencies](https://git.drupalcode.org/project/canvas/-/work_items/3591925) State: opened | Updated: 2026-08-07 | Author: Nodar Davituri (Davituri) | Assigned: unassigned | Labels: Description: ## Problem/Motivation `Drupal\canvas\Asset\AssetResolver` extends core's `AssetResolver` and is registered as a decorator of `asset.resolver` in `canvas.services.yml`. Core changed the signature of the method Canvas overrides, so on current `11.x` the class can no longer be declared and PHP fatals: ``` PHP Fatal error: Declaration of Drupal\canvas\Asset\AssetResolver::getJsAssets( Drupal\Core\Asset\AttachedAssetsInterface $assets, $optimize, ?Drupal\Core\Language\LanguageInterface $language = null): array must be compatible with Drupal\Core\Asset\AssetResolver::getJsAssets( Drupal\Core… ### [Canvas AI: Add a Drupal Canvas Agent that answers general questions](https://git.drupalcode.org/project/canvas/-/work_items/3591924) State: opened | Updated: 2026-08-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: ai Description: ## Summary Add an `ai_agent` config entity to `canvas_dev_ai`, labelled **Drupal Canvas Agent**, that answers general questions about Canvas from its system prompt and uses no tools. It is the main agent of the dev chat. Part of https://git.drupalcode.org/project/canvas/-/work_items/3591777. ## Why Every agent in the dev chat performs work. A user who asks what Canvas can do, or which Tool to pick, has nothing to talk to — the turn goes to whichever working agent is configured. This agent is the chat's entry point; Tools are what the user switches to for a task. ## Proposed Create the age… ### [Canvas AI: Research how a user can cancel a running chat turn](https://git.drupalcode.org/project/canvas/-/work_items/3591923) State: opened | Updated: 2026-08-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: ai Description: ## Summary Research issue — no implementation. A user cannot cancel a running turn in the dev chat, and the approach is not obvious because deep-chat offers no stop control on the request path the wizard uses. Decide the route here; implementation lands in a follow-up. Part of https://git.drupalcode.org/project/canvas/-/work_items/3591777. ## Current behavior - **deep-chat renders no stop control on our path.** `changeToStopIcon()` is wired as `streamHandlers.onOpen`, and only deep-chat's `stream()` path invokes `streamHandlers`. `AiWizardDev.tsx` passes no `stream` prop, so the submit butt… ### [Canvas AI: Add end-to-end kernel coverage for the dev page builder agent](https://git.drupalcode.org/project/canvas/-/work_items/3591922) State: opened | Updated: 2026-08-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: ai Description: ## Summary Follow-up to https://git.drupalcode.org/project/canvas/-/work_items/3591921. Cover `canvas_dev_ai_page_builder_agent` turns driven through the dev AI controller, the way `CanvasComponentAgentEndToEndTest` covers the component agent. Part of https://git.drupalcode.org/project/canvas/-/work_items/3591777. ## Current behavior 3591921 lands the agent with a single two-hop placement turn as its acceptance proof. Nothing covers a multi-row build, an edit turn, or a page-value write. ## Proposed Add `CanvasDevPageBuilderAgentEndToEndTest` beside `modules/canvas_ai/tests/src/Kernel/Age… ### [Canvas AI: Add a dev page builder agent and wire the placement tools](https://git.drupalcode.org/project/canvas/-/work_items/3591921) State: opened | Updated: 2026-08-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: ai Description: ## Summary Add an `ai_agent` config entity to `canvas_dev_ai` that builds a page by placing one component row per hop, and wire the four placement tools that currently ship inert. Part of https://git.drupalcode.org/project/canvas/-/work_items/3591777. ## Current behavior `canvas_dev_ai` runs one agent per chat turn as a client-side hop loop, and only `canvas_component_agent` is wired to it — so the dev flow can build JS code components but cannot build a page. `canvas_ai:place_components`, `canvas_ai:edit_components`, `canvas_ai:set_page_value` and `canvas_ai:get_component_details` are all … ### [Canvas AI: Add a catalog-only parameter to the get_component_context tool](https://git.drupalcode.org/project/canvas/-/work_items/3591920) State: opened | Updated: 2026-08-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: ai Description: ## Summary `canvas_ai:get_component_context` always returns every component with all its props and slots. Add a parameter that returns only the id, name and description, reusing the helper method that already produces it. Part of https://git.drupalcode.org/project/canvas/-/work_items/3591777. ## Current behavior `GetComponentContext::execute()` returns `CanvasAiPageBuilderHelper::getComponentContextForAi()`, and the tool declares no context definitions. `CanvasAiComponentContextHelper::getComponentCatalog()` already returns the lean listing — `name` and `description` keyed by component id —… ### [Canvas AI: Run the agent selected in configuration instead of a hardcoded one](https://git.drupalcode.org/project/canvas/-/work_items/3591919) State: opened | Updated: 2026-08-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: ai Description: ## Summary `canvas_dev_ai` stores `main_agent` and `tools` in `canvas_dev_ai.settings`, set at `/admin/config/ai/canvas-ai-agent-selection`. Nothing reads them. Make the controller run the configured agent. Part of https://git.drupalcode.org/project/canvas/-/work_items/3591777. ## Current behavior `CanvasDevAiBuilder.php:111` instantiates `canvas_component_agent` as a literal, so the form has no effect. ## Proposed - Every hop sends the target agent ID. Validate it against `main_agent` and `tools`; anything else is an error response. - When no target agent is sent, run `main_agent`. - Shi… ### [Canvas AI: Add Tools dropdown to chat UI](https://git.drupalcode.org/project/canvas/-/work_items/3591856) State: opened | Updated: 2026-08-07 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 1.x-dev, 2026Sprint15, AI Initiative Sprint, ai Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1447 [Draft: Resolve "Canvas AI: Add Tools dropdown to chat UI"](https://git.drupalcode.org/project/canvas/-/merge_requests/1447) | State: opened | Author: David Bravo (davidbp), 476 diff lines Description: ## Background — how Canvas AI works today The Canvas AI chat is an **orchestrator system**. Every message goes first to a single orchestrator agent. The orchestrator reads the message, infers the intent, and launches the matching sub-agent: - "Build me a landing page" → orchestrator → page-builder sub-agent - "Create a React component" → orchestrator → component sub-agent - "Write a title / meta description" → orchestrator → the relevant sub-agent The routing is implicit — the user never chooses which sub-agent runs; the orchestrator decides on every turn. Roadmap: https://git.drupalcode.o… ### [Prefix-strip redirect misses default-language prefixes and is overridden by ?destination](https://git.drupalcode.org/project/canvas/-/work_items/3591839) State: opened | Updated: 2026-08-07 | Author: Fons Vandamme (f0ns) | Assigned: unassigned | Labels: Drupal canvas, category::bug, priority::major, state::needsWork Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1387 [bug: #3591839 Preserve the query string when stripping the language prefix; a...](https://git.drupalcode.org/project/canvas/-/merge_requests/1387) | State: opened | Author: Fons Vandamme (f0ns), 193 diff lines Description: ## Problem/Motivation Follow-up to #3591585. That issue added `CanvasRouteOptionsEventSubscriber::redirectCanvasToDefaultLanguage()`, which strips the language prefix from `/canvas` paths with a 302 redirect. It has two gaps: 1. The redirect only runs when the current language differs from the default. Drupal allows a URL prefix for the default language too. In that case current equals default, the redirect is skipped, and the editor receives a prefixed path. The React app cannot route it and renders an empty gray screen. 2. The redirect drops the query string, and a `destination` query pa… ### [Incorrect folder assignment for newly created code components](https://git.drupalcode.org/project/canvas/-/work_items/3591828) State: closed | Updated: 2026-08-07 | Author: Vipin Mittal (vipin.mittal18) | Assigned: unassigned | Labels: state::rtbc Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1477 [#3591828: Fixed folder categorization issue follow-up.](https://git.drupalcode.org/project/canvas/-/merge_requests/1477) | State: opened | Author: utkarsh_33 (Utkarsh_33), 141 diff lines Description: **Problem** When creating a new Code Component and selecting a destination folder, the component is not saved in the selected folder. Instead, it is placed in a different folder within the Canvas Library. This prevents users from organizing code components correctly and leads to inconsistent folder categorization. **Acceptance Criteria** - A newly created Code Component is saved in the folder selected by the user. - The component is displayed in the selected folder immediately after creation. - No component is placed into an incorrect folder during the creation process. - The selected folde… ### [Expand conflict detection and resolution entity types other than Page](https://git.drupalcode.org/project/canvas/-/work_items/3591544) State: opened | Updated: 2026-08-07 | Author: drupalbot | Assigned: Feliksas Mazeikis (f.mazeikis) | Labels: Conflict resolution, auto-save, autoSave, backend Description: >>> [!note] Migrated issue Reported by: [f.mazeikis](https://www.drupal.org/user/3513671) >>> Overview Initial implementation of #3587587 will expand current conflict detection and will add new "review of changes" and "conflict resolution UI". To limit the scope of work, new functionality will be added only to Page entities. This issue describes how this new functionality will be expanded to additional Canvas entity types. Specifically, this is a placeholder issue that will be used in BE child issues of #3587587 to document planned changes and link various @todo sections as the work progre… --- MERGE REQUESTS (24h) --- ### [chore(deps): update dependency cspell to v10](https://git.drupalcode.org/project/canvas/-/merge_requests/1273) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/major-cspell-monorepo | 13 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [cspell](https://cspell.org/) ([source](https://github.com/streetsidesoftware/cspell/tree/HEAD/packages/cspell)) | [`^9.2.0` → `^10.0.0`](https://renovatebot.com/diffs/npm/cspell/9.7.0/10.0.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/cspell/10.0.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/cspell/9.7.0/10.0.1?slim=true) | > :exclamation: **I… ### [chore(deps): update dependency @eslint/compat to v2](https://git.drupalcode.org/project/canvas/-/merge_requests/1306) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/eslint-compat-2.x | 13 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@eslint/compat](https://github.com/eslint/rewrite/tree/main/packages/compat#readme) ([source](https://github.com/eslint/rewrite/tree/HEAD/packages/compat)) | [`^1.3.1` → `^2.0.0`](https://renovatebot.com/diffs/npm/@eslint%2fcompat/1.4.1/2.1.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@eslint%2fcompat/2.1.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confide… ### [chore(deps): update dependency @chromatic-com/storybook to v5](https://git.drupalcode.org/project/canvas/-/merge_requests/1305) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/chromatic-com-storybook-5.x | 13 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@chromatic-com/storybook](https://github.com/chromaui/addon-visual-tests) | [`^3.2.2` → `^5.0.0`](https://renovatebot.com/diffs/npm/@chromatic-com%2fstorybook/3.2.7/5.2.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@chromatic-com%2fstorybook/5.2.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@chromatic-com%2fstorybook/3.2.7/5.2.1?slim=true) | >… ### [fix(deps): update npm minor and patch](https://git.drupalcode.org/project/canvas/-/merge_requests/1238) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/npm-minor-and-patch | 55 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@axe-core/playwright](https://github.com/dequelabs/axe-core-npm) | [`4.11.1` → `4.12.1`](https://renovatebot.com/diffs/npm/@axe-core%2fplaywright/4.11.1/4.12.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@axe-core%2fplaywright/4.12.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@axe-core%2fplaywright/4.11.1/4.12.1?slim=true) | | [@babel/parser](… ### [chore(deps): update mysql docker tag to v8.4](https://git.drupalcode.org/project/canvas/-/merge_requests/1272) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/mysql-8.x | 13 diff lines Description: This MR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [mysql](https://hub.docker.com/_/mysql) ([source](https://github.com/docker-library/mysql)) | service-image | minor | `8.0` → `8.4` | > :exclamation: **Important** > > Release Notes retrieval for this MR were skipped because no github.com credentials were available. > If you are self-hosted, please see [this instruction](https://github.com/renovatebot/renovate/blob/master/docs/usage/examples/self-hosting.md#githubcom-token-for-release-notes). --- ### Configuration 📅 **Schedule**: (UTC) - Br… ### [feat: #3518272 support all entity types with configurable displays for content templates](https://git.drupalcode.org/project/canvas/-/merge_requests/791) State: opened | Author: Adam G-H (phenaproxima) | Branch: 3518272-field-ui-base-route | 2287 diff lines Description: Closes #3518272 . ### [#3591875: "Translatable props missing from TMGMT form when component instances cannot be auto-updated to active version"](https://git.drupalcode.org/project/canvas/-/merge_requests/1418) State: opened | Author: Kunal Sachdev (kunal.sachdev) | Branch: 3591875-translatable-props-missing-from-tmgmt-form-when-component-instances-cannot-be-auto-updated-to-active-version | 986 diff lines Description: AI-Generated: Yes (Used Github Copilot(Claude Sonnet 4.6) for the solution and test coverage). ### [Resolve module-contributed import map entries in builds, pushes, and Workbench](https://git.drupalcode.org/project/canvas/-/merge_requests/1482) State: opened | Author: Lauri Timmanee (lauriii) | Branch: 3591914-support-code-component-imports-contributed-by-modules-to-the-canvas-import-map | 1461 diff lines Description: Co-created by Claude Opus 5. ## Testing instructions - [ ] First step for someone to test the changes in this MR Closes #3591914 ### [#3591870: Add a PHPStan rule to verify PHPUnit coverage attributes reference existing symbols](https://git.drupalcode.org/project/canvas/-/merge_requests/1415) State: opened | Author: Christian López Espínola (penyaskito) | Branch: 3591870-phpstan-rule-coverage-attributes-reference-existing-symbols | 204 diff lines Description: Closes #3591870 ## What this MR does Adds `CoverageAttributesReferenceExistingSymbolsRule`, a PHPStan rule that checks `#[CoversFunction]`, `#[CoversClass]`, `#[CoversMethod]`, `#[UsesFunction]`, and `#[UsesClass]` attributes against `ReflectionProvider`, so a stale or misspelled coverage target is caught at lint time instead of silently attributing coverage to the wrong (or a non-existent) target. Modeled on `ComponentPreSaveUpdateMethodsRule`'s attribute → symbol-name → existence-check pattern. The first run surfaced one existing stale reference, fixed in the second commit. AI-Generated: … ### [Add PHPStan rule: needs*() config detectors must not mutate the entity they inspect](https://git.drupalcode.org/project/canvas/-/merge_requests/1416) State: opened | Author: Christian López Espínola (penyaskito) | Branch: 3591855-phpstan-rule-needs-must-not-mutate | 241 diff lines Description: Closes #3591855 ## What this MR does The escaped-config health check (`Doctor::runUpdatesEscapedConfigCheck()`) reflects every public `needs*()` detector on `CanvasConfigUpdater` and runs them all against one shared, loaded config entity. A detector that mutates the entity it is passed leaks that change into every detector that runs after it, corrupting the audit's result. This has happened twice: one detector mutated via `setComponentTree()`/`set()`, another had to `clone` before `calculateDependencies()`. This adds a PHPStan rule (`NeedsDetectorMustNotMutateEntityRule`) that enforces the … ### [Self-heal stored default-relative-url `$id` on read, and clean it up on update](https://git.drupalcode.org/project/canvas/-/merge_requests/1474) State: opened | Author: Christian López Espínola (penyaskito) | Branch: 3591904-missing-upgrade-path-stored-default-relative-url-prop-sources-with-id | 1328 diff lines Description: Closes #3591904 ## What this MR does Data written before Canvas 1.5.1 stored a `default-relative-url` prop source's resolved JSON Schema including the `$id` keys the schema resolver emits. Since 1.5.1 (#3591629) `PropShape::normalize()` strips `id`/`$id`, so `DefaultRelativeUrlPropSource::parse()` re-normalizes the stored schema, finds it differs, and throws — a 500 from the layout endpoint, and a fatal in any update or health path that reads it. There was no upgrade path to migrate the stored data. Three commits, one concern each: 1. **Fix the read.** `parse()` now strips the resolver-inj… ### [chore: version packages](https://git.drupalcode.org/project/canvas/-/merge_requests/1481) State: merged 2026-08-07 | Author: **** (project_19391_bot_17a61b0edeafd5a3db3e8b2462b6c010) | Branch: changeset-release/1.x | 404 diff lines Description: Automated merge request created from pending changesets. Merging it publishes the new package versions to npm. Do not commit to this branch manually; it is force-pushed on every push to 1.x. ### [chore: version packages](https://git.drupalcode.org/project/canvas/-/merge_requests/1464) State: merged 2026-08-07 | Author: **** (project_19391_bot_17a61b0edeafd5a3db3e8b2462b6c010) | Branch: changeset-release/1.x | 595 diff lines Description: Automated merge request created from pending changesets. Merging it publishes the new package versions to npm. Do not commit to this branch manually; it is force-pushed on every push to 1.x. ### [Draft: Resolve #3546597 "Create canvas page in other languages"](https://git.drupalcode.org/project/canvas/-/merge_requests/494) State: opened | Author: Gábor Hojtsy (goba) | Branch: 3546597-create-canvas-page | 638 diff lines Description: Closes #3546597 ### [feat(CLI Tool): Push components as external metadata when the Headless SDK is present](https://git.drupalcode.org/project/canvas/-/merge_requests/1470) State: merged 2026-08-07 | Author: Harumi Jang (hooroomoo) | Branch: mark-external | 1081 diff lines Description: #3591912 AI Disclosure: yes used Claude canvas push: support pushing components as type: external with their metadata when the Headless SDK is present - SDK detection: when @drupal-canvas/headless is in the project's dependencies or devDependencies, every discovered component is pushed as type: external. - Explicit opt-in: a type: external in a component's component.yml is honored the same way, with or without the SDK. The YAML file is never mutated — type is set on the API payload only. - Entry-less discovery: framework single-file components (.vue, .astro, .svelte) and other entry-less ex… --- COMMITS (24h) --- - [2ef8b6e6](https://git.drupalcode.org/project/canvas/-/commit/2ef8b6e62ff7eeb148ffb2c47a58e0ac975c132e) fix(Redux-integrated field widgets): #3591918 StaticPropSource widget building is order-dependent: dangling prop fields collide in core's TypedData item-prototype cache — Christian López Espínola (2026-08-08T03:56:08.000+00:00) - [b6155f66](https://git.drupalcode.org/project/canvas/-/commit/b6155f66fef2720f18f987b99993b46901dbd39f) feat: #3591838 Brand Kit color support — Ben Mullins (2026-08-07T20:27:16.000+00:00) - [c98dfb6c](https://git.drupalcode.org/project/canvas/-/commit/c98dfb6cb6e1f2cd8b43b6409c7699253a790640) bug: #3534972 Unnecessary horizontal movement — Lauri Timmanee (2026-08-07T17:09:57.000+00:00) - [5601db8e](https://git.drupalcode.org/project/canvas/-/commit/5601db8ed53364f1544932cb959b3f3851583961) fix(Shape matching): #3591917 Array prop shapes don't inherit their item shape's cache tags, so prop-shape invalidation misses them — Christian López Espínola (2026-08-07T15:54:14.000+00:00) - [8cafa335](https://git.drupalcode.org/project/canvas/-/commit/8cafa3351e5fe5cf2658751e79ec10990a81de53) chore: version packages — Canvas version bot (2026-08-07T15:23:45.000+00:00) - [9c6de1e1](https://git.drupalcode.org/project/canvas/-/commit/9c6de1e15bace071a0426f16cc8b37399477f07a) fix(Headless): #3591928 Expose headless page helpers from isomorphic package entries — wotnak (2026-08-07T15:22:10.000+00:00) - [392b7050](https://git.drupalcode.org/project/canvas/-/commit/392b7050c3ed3817ea98c6d413ddd7303b2e47e3) chore: version packages — Canvas version bot (2026-08-07T12:33:43.000+00:00) - [9bcfe160](https://git.drupalcode.org/project/canvas/-/commit/9bcfe160d3fb7feaced7d7025f44cb366583c678) feat(CLI Tool): #3591912 Support pushing code components from a headless codebase — Harumi Jang (2026-08-07T12:32:07.000+00:00) ======================================================================== ## [17] summariseModule:ai_context:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Context Control Center (CCC) (machine name: ai_context) Reporting period: last 24h (2026-08-07T05:00:05+00:00 to 2026-08-08T05:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Kristen Pol (kepol) [1], Tamas Balog (tbalog)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                Context Control Center (CCC)

                                then use

                                ,

                                ,

                                  /
                                • , and as needed. Output only the HTML fragment with no surrounding , , or
                                  tags. After the project summary prose, add a single subsection titled "

                                  How can I help on this project?

                                  " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Document Purpose field guidance for conditional subcontext selection](https://git.drupalcode.org/project/ai_context/-/work_items/3586390) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, category::task, priority::normal, sprint candidate Description: ## Problem/motivation Follow-up to: - #3586351+s - #3586199+s Real-provider testing showed the current conditional subcontext prompt (parent Content + task + each child’s **ID and Purpose**) is sufficient for most well-authored configurations. Failures were more often caused by weak or overlapping Purpose text than by missing child labels or descriptions. Authors may not realize that **Purpose is the primary signal** the model uses to decide whether a conditional child applies. The field is required, but there is little guidance on writing effective inclusion criteria or avoiding overlap b… ### [Rename entity bundle and target entity scope plugins for better DX](https://git.drupalcode.org/project/ai_context/-/work_items/3586276) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint12, 2026Sprint13, 2026Sprint14, 2026Sprint15 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !195 [Issue #3586276: Rename entity bundle and target entity scope plugins for better DX](https://git.drupalcode.org/project/ai_context/-/merge_requests/195) | State: opened | Author: Tamas Balog (tbalog), 7313 diff lines Description: ## Problem/solution Follow up to: #3586148+s The naming of the entity bundle and target entity scope plugins is confusing. ## Solution **AiContextScopeEntityBundle** Rename Entity Bundle => Entity Type at a code-level because there are bundleless content entities. Label: Entity Types Description: Apply this context to every entity of a chosen type, for example all Article nodes, every Document media item, or every Canvas page. Choose this when the context is true for the whole type, not a single item. **AiContextScopeTargetEntity** Rename Target Entity => Entity Item because target… ### [Test current conditional subcontext selection before changing the prompt](https://git.drupalcode.org/project/ai_context/-/work_items/3586351) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, blocker::stable, category::task, priority::major Description: ## Summary _**Note: this is a tricky issue to test.**_ Follow-up to #3586194+. This issue should be completed before #3586199+. ## Problem/motivation #3586199+ proposes adding a richer subcontext index to improve conditional child selection. Since that issue was created, the current implementation has begun sending each candidate child’s ID and Purpose to the AI provider. It is not yet known whether the richer index is still needed. Existing automated tests verify selection mechanics with fixed responses but do not assess real-model relevance decisions. ## Solution The detailed assessme… ### [Tune conditional subcontext logic](https://git.drupalcode.org/project/ai_context/-/work_items/3586199) State: closed | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::task, priority::major, state::closed, what::code Description: _**Note that we can hopefully defer this to 1.1 or maybe even close it.**_ Follow up to: #3586194+s Blocked by: #3586351+s It would be good to get these in before this one: - #3586218+s - #3586292+s ## Problem/motivation Conditional subcontext logic needs to be fine-tuned. See related issue above. ## Solution Add the subcontext as an "index" to the parent when asking the LLM which conditional subcontext items are good to include. See issue above for some possible structure. Fill out more details here as this is thought through more. ## Tasks - Review existing logic and test - Docum… ### [Add context item Priority field and use it for selection ordering](https://git.drupalcode.org/project/ai_context/-/work_items/3586376) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::feature, priority::major, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !245 [Issue #3586376: Add context item priority field and selection tie-breakers.](https://git.drupalcode.org/project/ai_context/-/merge_requests/245) | State: opened | Author: Kristen Pol (kepol), 890 diff lines Description: ## Summary Follow-up to: #3586364+s Context selection currently breaks ties between equally weighted candidates using the item `changed` timestamp. That is opaque to editors and does not reflect editorial intent when multiple items compete for the same slots. Add a **Priority** field on context items and use it consistently when the selector chooses and orders candidates within each selection group. ## Problem When more context items qualify than fit under `max_items` (or `max_global_items`), the selector must decide which items to keep and in what order. Today: - Global, scored, and ma… ### [Remove max_items context limit and rely on the token budget](https://git.drupalcode.org/project/ai_context/-/work_items/3586378) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol), Aidan Foster (aidanfoster), Emma Horrell (emma-horrell) | Labels: 2026Sprint16, category::task, priority::normal, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !244 [Issue #3586378: Remove max_items context limit and rely on token budget.](https://git.drupalcode.org/project/ai_context/-/merge_requests/244) | State: opened | Author: Kristen Pol (kepol), 2544 diff lines Description: ## Summary Follow-up to: - #3586337+s The **Max context items to inject** setting (`max_items`) adds UX and DX complexity without providing a meaningful limit on its own. Context items vary widely in size, so a token budget is the more accurate control for how much context can reach an agent prompt. Remove `max_items` from configuration, forms, validation, selection logic, documentation, and tests. After this change, the token budget (`max_tokens`) is the primary module-wide limit on injected context. ## Problem Site builders currently configure two overlapping limits: - **Max context i… ### [QA team start testing CCC to get familiar with functionality and create QA plan](https://git.drupalcode.org/project/ai_context/-/work_items/3586342) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Bruna Emerich (brunaemerich) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, blocker::stable Description: ## Problem CCC is huge and there's a lot to test. Beta3 was released last week and there were bugs: - #3586338+s - #3586341+s These most likely would have be caught by the QA team. I tested here with AI on Drupal CMS / Drupal 11: #3586296+s but neglected to test with Drupal 10. Not sure why the settings pages didn't get hit though. I tested manually with Canvas AI though it would be amazing if that could be automated somehow. ## Solution QA team plays around with CCC to understand the functionality and starts a draft QA plan. Here's the QA plan from AI: https://git.drupalcode.org/-/… ### [CCC QA scripts for 1.0 testing](https://git.drupalcode.org/project/ai_context/-/work_items/3586226) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, blocker::stable, category::task, priority::major Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !243 [Issue #3586226: Add 1.0 QA test scripts for manual testing.](https://git.drupalcode.org/project/ai_context/-/merge_requests/243) | State: opened | Author: Kristen Pol (kepol), 751 diff lines Description: ## Problem/motivation Need to make sure we're ready for the QA team to do pre-1.0 testing. ## Solution From Bruna Emerich (Zoocha): Documentation covering the functionality, along with a test script (such as the example in this ticket, where an .md file is included), is sufficient for us to carry out testing. If any questions come up, we’ll raise them directly in the channel and tag you. Regarding lead time, it depends on the size of the functionality, but generally one week’s notice is sufficient. If there’s a fixed release date, allowing around 14 days is preferable, as it gives enough … ### [Create CCC beta3 and beta4 and status update video](https://git.drupalcode.org/project/ai_context/-/work_items/3586333) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, ai::context, category::task, demo Description: Create a video on beta3 and beta4 and the current status of CCC and what's coming up. ### [Switch CCC documentation link to clean version](https://git.drupalcode.org/project/ai_context/-/work_items/3586370) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint17, ai::context, category::task, priority::normal Description: **Note that this could be done after the 1.0 release.** ## Problem I tried switching the documentation link: https://ai-context-b13f05.pages.drupalcode.org/ to https://ai-context.pages.drupalcode.org/ via the settings in gitlab including rerunning a CI build to get it in place. But it never worked. ## Solution Figure out how to get it to work properly. Note it shows up here ./ai_context.module: ':docs' => 'https://ai-context-b13f05.pages.drupalcode.org/', and is linked from the d.o project page ### [Pre-1.0 documentation, trust, and compatibility follow-up to issue 3586363](https://git.drupalcode.org/project/ai_context/-/work_items/3586382) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint17, category::task, priority::normal, sprint candidate Description: ## Follow-up to: #3586363+s Follow-up to "Before 1.0" triage in #3586363. Combines documentation, API annotation, security guidance, and release-policy work that should land before 1.0 without adding new functionality. **Scope:** #1, #2, #5, #6, #8 from the Before 1.0 list in #3586363+s. **Non-goals:** selector/diagnostics work (#3, #4, #9 — separate issue), performance benchmarks (#7 — 1.1), usage vs observability decision (#10 — #3567803 / #3586213). ## Problem / motivation _**Note that the following needs to be rechecked before working on this issue as some things may have been fixed.… ### [Install `target_entities` field storage when Dynamic Entity Reference is enabled on existing sites](https://git.drupalcode.org/project/ai_context/-/work_items/3586375) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::bug, priority::normal, sprint candidate Description: ## Problem Sites that already have `ai_context` installed can fatal when `dynamic_entity_reference` is enabled (or was enabled without a matching schema update). The context item listing and other entity loads fail with: `Table 'db.ai_context_item__target_entities' doesn't exist` Example stack: `SqlContentEntityStorage->loadFromDedicatedTables()` while `AiContextItemListBuilder->load()` renders `/admin/config/ai/context/items`. ### Root cause `target_entities` is not defined in `AiContextItem::baseFieldDefinitions()`. It is added at runtime via `DynamicEntityReferenceHooks::entityBaseFiel… ### [Update ai_context project page and docs based on new naming approach](https://git.drupalcode.org/project/ai_context/-/work_items/3586217) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint17, ai::context, category::task, priority::normal Description: **Note that this could be done right after the 1.0 release.** ## Problem/motivation Although people will likely continue to call it CCC rather than AI Context, we've decided to embrace a combined naming approach outlined here: #3556881 ## Solution Update the project page and README/docs to use this. ## Tasks - [ ] Update project page - [ ] Update README - [ ] Update docs if necessary ### [Create CCC video showing how to configure it](https://git.drupalcode.org/project/ai_context/-/work_items/3586153) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint17, category::task, demo, priority::normal Description: **Note that this could be done right after the 1.0 release.** Let's do this after beta3 is created: #3586295+s People have been having some trouble understanding how to set up CCC. Create a simple video for setting it up. ### [[Discuss] Approach for CCC+agent integration testing](https://git.drupalcode.org/project/ai_context/-/work_items/3571117) State: opened | Updated: 2026-08-08 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint17, category::plan, priority::major, sprint candidate Description: **Note that this could be done after the 1.0 release.** >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation We need to test the integration of CCC+agents and possibly other things like the future review system. How can we build such a testing framework? Proposed r… ### [Document how to use RAG with CCC 1.0](https://git.drupalcode.org/project/ai_context/-/work_items/3586371) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint17, category::task, priority::normal, sprint candidate Description: **Note that this could be done after the 1.0 release.** Fable 5 notes Good news: everything needed already exists in the public API — `AiContextRequest::getTask()` gives you a free-text retrieval query, and the `text_rendered` event exposes remaining token budget and lets you rewrite the output. Here's how I'd wire RAG up with ai_context **today**, no changes to the module. ## Pattern A — agentic RAG via tools (no custom code) Use ai_context for what it's best at: injecting *instructions about retrieval* rather than retrieved content. 1. Index your corpus with the AI module's `ai_search` … ### [Document real-world use cases for CCC 1.0](https://git.drupalcode.org/project/ai_context/-/work_items/3586372) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint17, category::task, priority::normal, sprint candidate Description: **Note that this could be done after the 1.0 release.** Fable 5 pass Here's a documentation-ready set of use cases, grouped by consumer and framed for the post-[#3586346](https://git.drupalcode.org/project/ai_context/-/work_items/3586346) world where anything — agents, CKEditor, translation, automators — can be a context consumer. Each one names the CCC features it exercises so readers connect the scenario to the mechanics. --- ## Writing assistance (AI CKEditor) **1. Brand voice everywhere, enforced once.** The marketing team maintains one "Voice and tone" context item — reading level, b… ### [Persist context-item token counts and show token-budget usage in CCC UI](https://git.drupalcode.org/project/ai_context/-/work_items/3586379) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, category::task, priority::major, sprint candidate Description: ## Summary Follow-up to: - #3586337+s - #3586348+s Implement the subscription-limit UX decisions from the Emma+Aidan review on #3586337. Persist each context item's estimated token count at save time, base token badges on percentage of the configured token budget, and add budget summary messaging on the agent subscription settings page. This issue implements the indicator behavior. It does not add new warning components beyond text, badges, and tooltips agreed in the design review. ## Problem Token counts on the context item listing are calculated on the fly from item content. That makes… ### [Pre-1.0 context selection reliability and diagnostics follow-up to issue 3586363](https://git.drupalcode.org/project/ai_context/-/work_items/3586383) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::task, priority::major, sprint candidate Description: **Blocker: Assess #3586348+s before proceeding on this issue.** ## Follow-up issue Follow-up to: #3586363 Child of the "Before 1.0" triage in #3586363+s. Improves selection transparency, conditional-subcontext failure visibility, and debug diagnostics before 1.0. **Scope:** #3, #4, #9 from the Before 1.0 list in #3586363. **Non-goals:** documentation/trust/compatibility work (#1, #2, #5, #6, #8 — separate issue), performance benchmarks (#7 — 1.1), usage vs observability (#10 — #3567803 / #3586213), rich selection diagnostics UI or persistence ([#3586242](https://git.drupalcode.org/projec… ### [CCC Outside AI roadmap discussion meeting August 2026](https://git.drupalcode.org/project/ai_context/-/work_items/3586387) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint17, category::plan, priority::normal, sprint candidate Description: ## Problem Much of CCC's focus has been on "Inside AI" though there are some things that have been prototyped or discussed for "Outside AI". It would be good to get a sense check of where the Outside and Labs teams see CCC fitting into their work in the coming months. This will help direct the 1.1+ roadmap. ## Solution Meeting with Kristen, Scott, Jamie, Marcus, and Vidit to discuss. Add notes here and create any follow-up issues as needed. ## Related - Future milestone: https://git.drupalcode.org/project/ai_context/-/milestones/7#tab-issues - 1.1 rc1 list (not much yet): https://git.dru… ### [Create multi-vocabulary taxonomy scope plugin](https://git.drupalcode.org/project/ai_context/-/work_items/3586237) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::feature, priority::normal, sprint candidate Description: ## Problem/motivation _**Note that this isn't a must have for 1.0 but a nice to have. Given that people think the current "tags" scope plugin previous the behavior this plugin would provide then it it's really nice to have.**_ _**Note that weight = 20 should be used as follow-up to #3586388+s.**_ Follow up to: #3586198+s We do not have a scope plugin that allows associated context with the terms for content entities. Example: * Article **has terms**: foo, bar, hello * Blog post **has terms**: foo, whatever * One context item **has term**: foo * Another context item **has terms**: foo, b… ### [[Meta] CCC MVP 1.0 roadmap](https://git.drupalcode.org/project/ai_context/-/work_items/3567798) State: opened | Updated: 2026-08-08 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint10, 2026Sprint11, 2026Sprint12, 2026Sprint16 Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> --- ## Problem/Motivation We need a stable release of CCC to support Drupal CMS that includes a lot of the ideas and features we've been discussing, including the 1-year plan capabilities. --- ## Proposed resolution Update issue list and work through them --- ## Target dates - March 23rd: Beta1 release - March 23rd to 27th: DrupalCon Chicago - May 10: Beta2 release - July 17: Beta3 release - August x: Beta4 release - August x: Beta5 release - September x: RC1 release - September x: RC2 releas… ### [[Discuss] Add boundaries / exclusions to scope plugins](https://git.drupalcode.org/project/ai_context/-/work_items/3586197) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint10, 2026Sprint11, category::task, priority::major Description: ## Problem/motivation **_Note that this could wait until rc1 or even until 1.1 work starts._** Follow-up to: #3586195 Boundaries / exclusions were discussed quite a bit in the past, but hasn't been implemented yet. Example context item: - Tone and voice - Scope - Use case = Writing Words - Entity bundle = exclude for Support Notes (content type) Translation: The context will be applicable to any agent subscription with use case = writing words unless it's a node that's a Support Notes content type ## Solution Add an exclusion option for each scope item and bake that into the logi… ### [Recruit additional CCC beta testers](https://git.drupalcode.org/project/ai_context/-/work_items/3586235) State: closed | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: ai::context, category::task, priority::major, state::closed Description: ## Problem/motivation Note that Mike Anello (ultimike) is beta testing, but we will try to recruit more after beta3 is created: #3586295+s We want more beta testers. This issue was created for this: #3586234+s ## Solution Promote this in various channels: - Slack - LinkedIn - Planet Drupal? ## Tasks - ~~Create issue with resources~~ - ~~Post in the relevant Slack channels (ai, ai-contrib, ai-context, ai-partner-contributors)~~ - Create a blog post and/or LinkedIn post to promote ### [Add CCC beta tester info to the project page](https://git.drupalcode.org/project/ai_context/-/work_items/3586248) State: closed | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: ai::context, category::task, priority::normal, state::closed Description: ## Problem/motivation We want beta testers, but we need to give them more info on how to get started. ## Solution Update the home page with some more information: - Links to session videos (suggest they watch one) - Link to DrupalCon Chicago Driesnote demo (they can use it and it will have example context to play with) - Point to the readme and docs - Point to how to create a support issue or bug ## Tasks - Gather session videos - Gather other links - Create a section on project page for beta testers - Add the videos and links ### [Update project page to make it more clear that CCC is for agents](https://git.drupalcode.org/project/ai_context/-/work_items/3586278) State: opened | Updated: 2026-08-08 | Author: Michael Anello (ultimike) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint17, AI UX, category::task, priority::normal Description: _**Note that this can happen during rc1 since this is documentation.**_ Note that this will be changing with: #3586346+s Via https://git.drupalcode.org/project/ai_context/-/work_items/3586270#note_1263889, I think the main CCC project page description should be super-clear that CCC is currently designed to only work with AI agents and not other AI-related tasks. At the very least, I suggest the first sentence of the project description on https://www.drupal.org/project/ai_context be changed from: > Context Control Center (CCC) helps Drupal AI use your content, rules, and standards to deli… ### [Clarify scope eligibility, ranking, and limits in UI help and documentation](https://git.drupalcode.org/project/ai_context/-/work_items/3586348) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint17, blocker::stable, needs ux review, priority::major Description: ## Summary _**Note that this could be implemented in rc1 because it's docs/help text and no functionality changes.**_ Follow-up to: - #3586281+s - #3586270+s - #3586335+s - #3586337+s Beta testing confirmed that the **subscription** model can remain for beta4, but the UI and documentation do not clearly explain how scope matching, eligibility, ranking, overrides, and limits work together. This issue improves inline help and user-facing documentation without changing scope behavior, configuration storage, selection logic, or subscription semantics. ## Problem The current Context scope de… ### [Review and update CCC permissions for beta5](https://git.drupalcode.org/project/ai_context/-/work_items/3586358) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, blocker::stable, category::task, priority::major Description: ## Problem/Motivation Replaces the outdated permissions review: #3574937+s That issue and MR !78 targeted an earlier beta and no longer match the current permission model or beta5 scope. Related beta5 work already in progress: #3586356+s Permissions still need a focused beta5 pass before full QA: #3573716+s Goals for this issue: - Confirm the current permission set is sufficient for beta5 roles (author, editor, admin, and published-context consumers). - Add only permissions with a clear beta5 use case. - Avoid a broad redesign or large new own-* permission set in 1.0. Earlier ideas… ### [Review and document context selection ranking factors before 1.0](https://git.drupalcode.org/project/ai_context/-/work_items/3586365) State: closed | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !241 [Issue #3586365: Document scope selection and ranking logic.](https://git.drupalcode.org/project/ai_context/-/merge_requests/241) | State: merged 2026-08-08 | Author: Kristen Pol (kepol), 662 diff lines Description: **Note that I switched this from a discussion issue to a documentation. Discussion has happened. Docs are in the MR.** **IMPORTANT: If #3586388+s is merged first, this issue's MR needs fixing based on that (and vice versa).** ## Summary Before we ship 1.0, we should confirm that the current rules for choosing which context items reach an AI feature are the right set — and whether anything important is missing. This issue is a **discussion**. The goal is shared understanding of what the module does today, in plain language, so product/UX and engineering can decide together whether to add ra… ### [CCC beta4 codebase review (pre-release)](https://git.drupalcode.org/project/ai_context/-/work_items/3586374) State: closed | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::context, blocker::stable Description: ## Problem/motivation Do this right before beta4 release in case there are any serious issues that need addressing before the release. Beta4 will be released shortly. We continually need to check the codebase as it changes for potential security issues, performance issues, and any pre-rc1 features/apis that need to be addressed. ## Solution Run AI checks against the codebase to identify for pre-rc1 and post-1.0: - Security issues (these can be noted since we are still in beta) - Important API gaps - Incorrect docs - Code smell that might indicate potential bugs ## Next steps - Run revie… ### [[Meta] CCC rc cleanup from non-pressing beta code review items](https://git.drupalcode.org/project/ai_context/-/work_items/3586389) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::task, priority::normal, state::postponed, what::code Description: fixme Double check items from: #3586374+s and pull over what makes sense for rc1+rc2 or 1.0.1+ ### [[Meta] CCC 1.1 release planning](https://git.drupalcode.org/project/ai_context/-/work_items/3586373) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: category::plan, priority::major, state::postponed, what::planning Description: Updated the milestone dates to align with DrupalCon Orlando for 1.1 though we could scope down the releases and do a 1.1 in the middle and 1.2 for Orlando... tbd Chatting with fable 5 re With the real 1.1 window being ~6 months (late Sep → mid Mar), my earlier "keep 1.1 tiny" advice no longer applies — the slide's ambition level is reasonable for the timeline. Here's my reassessment. First, one slide bug: the 1.1 column says **"March 2026"** — should be **March 2027**. ## The main gap: the slide and the actual milestone don't overlap The six issues actually sitting in the 1.1 milestone … ### ["Global context" checkbox description renders a literal
                                  instead of a line break](https://git.drupalcode.org/project/ai_context/-/work_items/3586369) State: opened | Updated: 2026-08-08 | Author: Sohail Lajevardi (doxigo) | Assigned: Daniel Rodriguez (danrod) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::bug Description: On the AI context item edit form, the description under the **Global context** checkbox displays the tag as text: > Always include this context for every agent.\Saving the form with this > enabled will clear previous scope settings. `AiContextScopeGlobal::getFormDescription()` exists specifically so this checkbox can carry a line break. Its own docblock says so: ```php /** * Gets the checkbox description for the context item form. * * Uses a line break that is not safe for settings pages escaped with * Html::escape(), so keep plain text in getDescription() instead. */ protected functio… ### [[Meta] Prepare CCC for Inside AI Rotterdam demo](https://git.drupalcode.org/project/ai_context/-/work_items/3586386) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, category::plan, priority::major, sprint candidate Description: fixme meta issue right now just: #3586385+s but there might be more ### [Create CCC recipe for Inside Rotterdam demo](https://git.drupalcode.org/project/ai_context/-/work_items/3586385) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, sprint candidate Description: Parent: #3586386+s fixme need to figure out where this lives (private GitLab or public) okay if it's public if it works well without a bunch of dependencies (i.e. generic) e.g. https://www.drupal.org/project/ai_recipe_context ### [Align scope scoring, language service, and contextual selection behavior](https://git.drupalcode.org/project/ai_context/-/work_items/3586388) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, blocker::stable, category::task, priority::major Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !242 [Issue #3586388: Align scope scoring and contextual detection.](https://git.drupalcode.org/project/ai_context/-/merge_requests/242) | State: opened | Author: Kristen Pol (kepol), 2177 diff lines Description: ## Summary **IMPORTANT: If #3586365+s is merged first, this issue's MR needs fixing based on that (and vice versa).** Follow-up to: #3586365 Before 1.0, align scope weight, subscription scoring, UI ordering, language handling, hard contextual filtering, and function-call listing so selection behavior is predictable, consistently documented, and safe for agent use. ### 1. Align scope display order with scoring weight Use the existing plugin weight for both subscription scoring and UI display order. A higher weight means: - Greater influence during subscription scoring - Earlier placemen… ### [[Discuss] Evaluate Tool API integration for CCC context tools](https://git.drupalcode.org/project/ai_context/-/work_items/3574926) State: opened | Updated: 2026-08-07 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: Description: ## Problem/Motivation Context Control Center currently provides these AI Function Call plugins: - `ai_context:list_ai_context_items` - `ai_context:load_ai_context_item_by_id` - `ai_context:get_relevant_ai_context_items` The AI module documentation indicates that Function Call plugins may eventually be replaced by Drupal Tool API. Tool API can now integrate with AI Agents, but it does not yet have a supported stable release. Because AI Context supports both AI 1.x and 2.x, replacing the existing plugins could break compatibility. We need to determine whether Tool API integration should be a… ### [[Discuss] Add agent-level context isolation and governance controls](https://git.drupalcode.org/project/ai_context/-/work_items/3586166) State: opened | Updated: 2026-08-07 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::feature, priority::major, state::postponed, what::discussion Description: Follow up to: #3582504 _**NOTE: Before working on this issue, verify it's still relevant and makes sense.**_ **Description:** Introduce governance controls for limiting which agents can access which context. This should support safer multi-agent deployments and reduce accidental context leakage between unrelated use cases. **Includes:** - `2.3` Context isolation between agents **Scope:** - Design an isolation model for agent-specific context access. - Evaluate whether isolation should use domains, taxonomy, config, permissions, or another mechanism. - Ensure isolation works alongside e… ### [Sprint 15 CCC roadmap updates, sprint planning, and issue triage](https://git.drupalcode.org/project/ai_context/-/work_items/3586330) State: closed | Updated: 2026-08-07 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::context, category::plan Description: ## Problem/Motivation Prioritize backlog items for the sprint to align with roadmap, releases, and project needs. --- ## Proposed resolution Groom sprint issues https://git.drupalcode.org/project/ai_context/-/work_items/views/75 --- ## Target date or deadline 25 July to 7 August 2026 --- ## Remaining tasks - Go through backlog and prioritize - Create new issues as needed - Identify what goes into sprint - Tune mid-sprint as needed - Update roadmap meta as needed --- ## Related issues - [#3567798: [META] CCC MVP 1.0 roadmap](https://www.drupal.org/project/ai_context/issues/3567798… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- - [5c9120b0](https://git.drupalcode.org/project/ai_context/-/commit/5c9120b0aa157184c3a1ba804d85427b65703d8e) Issue #3586365: Document scope selection and ranking logic. — Kristen Pol (2026-08-08T01:31:12.000+00:00) ======================================================================== ## [18] summariseModule:ai_dashboard:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Dashboard (machine name: ai_dashboard) Reporting period: last 24h (2026-08-07T05:00:05+00:00 to 2026-08-08T05:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                                  AI Dashboard

                                  then use

                                  ,

                                  ,

                                    /
                                  • , and as needed. Output only the HTML fragment with no surrounding , , or
                                    tags. After the project summary prose, add a single subsection titled "

                                    How can I help on this project?

                                    " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Configuring Project Browser on a standard Drupal core install (not CMS) to provide "Install" buttons for AI recipes](https://git.drupalcode.org/project/ai_dashboard/-/work_items/3585224) State: opened | Updated: 2026-08-07 | Author: Michael Anello (ultimike) | Assigned: unassigned | Labels: Description: I have AI Dashboard 1.0.3 installed on a fresh, local Drupal core 11.4.5 with some other AI-related modules. When I go to /admin/config/ai, in the "Features" section I see the recommended recipes, and each as a "View commands" button (not an "Install" button.) In my bid to be able to install these with Project Browser (via the "Install" button), I did the following: 1. Added `$settings['testing_package_manager'] = TRUE;` to my `settings.php` file. 2. Ensured the `package_manager` core module was enabled. 3. Selected the "Allow installing via UI (experimental)" option on /`admin/config/de… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [19] summariseModule:ai_search:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Search (machine name: ai_search) Reporting period: last 24h (2026-08-07T05:00:05+00:00 to 2026-08-08T05:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                                    AI Search

                                    then use

                                    ,

                                    ,

                                      /
                                    • , and as needed. Output only the HTML fragment with no surrounding , , or
                                      tags. After the project summary prose, add a single subsection titled "

                                      How can I help on this project?

                                      " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [[PP-1] Provide an API for performing access check on non-content entities](https://git.drupalcode.org/project/ai_search/-/work_items/3579758) State: opened | Updated: 2026-08-07 | Author: drupalbot | Assigned: unassigned | Labels: category::feature, code, priority::normal, state::closed Description: >>> [!note] Migrated issue Reported by: [mxr576](https://www.drupal.org/user/315522) >>> Problem/Motivation SearchApiAiSearchBackend used to only have support for content entities (indexed via rupal\search_api\Plugin\search_api\datasource\ContentEntity but that was fixed in #3575999: Fix support of non-content entity SearchAPI datasources. Now SearchApiAiSearchBackend can index and work with other data sources however it does not provide an API for performing access checks on search results before they are returned. The scope of this issue is designing and introducing that new API that con… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [20] summariseModule:agui:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AG-UI (machine name: agui) Reporting period: last 24h (2026-08-07T05:00:05+00:00 to 2026-08-08T05:00:05+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                                      AG-UI

                                      then use

                                      ,

                                      ,

                                        /
                                      • , and as needed. Output only the HTML fragment with no surrounding , , or
                                        tags. After the project summary prose, add a single subsection titled "

                                        How can I help on this project?

                                        " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Fix ai_agents dependency setting that currently can cause config import issue](https://git.drupalcode.org/project/agui/-/work_items/3590048) State: opened | Updated: 2026-08-07 | Author: Takaya Hirose (takayahirose) | Assigned: unassigned | Labels: Description: Fix ai_agents dependency setting that currently can cause config import issue --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [21] generateTldr:executive ======================================================================== You are an editor distilling a Drupal AI project newsletter into its most important highlights. You are writing for a non-technical executive audience. Focus on business impact, strategic progress, and delivery milestones. Avoid all technical jargon. Read all the module summaries below. Separate the highlights into two categories: - SHIPPED: things that were merged, fixed, released, or completed during this period. - ONGOING: things that are actively in progress, under review, or blocked. Be specific — name the module, what happened, and why it matters. Do not use emoticons or mdashes. Do not include any text outside the two sections. When you mention a specific issue or merge request, add an inline citation using [N] where N is the reference number from the list below. You may cite multiple references per item, e.g. [1][3]. Place citations immediately after the relevant phrase, before any punctuation. Format as two HTML sections. Use exactly this structure (all
                                      • elements must be inside the
                                          , never outside it):

                                          Shipped

                                          1. Title here — One sentence explanation [1].
                                          2. Another title — One sentence explanation.

                                          Ongoing

                                          1. Title here — One sentence explanation [2].
                                          Up to 5 items per section. Do not output any text, tags, or characters outside these two sections. Output only the HTML fragment, no surrounding tags. --- REFERENCE LIST --- [1] LLM: Text / LLM: Text (simple) automators silently drop Base Field content when Base Field and Target Field are both long-text types (Basic input mode) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586659 [2] `AiReranker::extractItemText()` should prefer chunk text over configured indexed fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586637 [3] Release 1.4.6 and 1.3.11 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586650 [4] Drupal 11.4 DeepChat Block does not work with Webprofiler enabled (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586615 [5] Allow Internal Tool Calling (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586616 [6] bug: #3586637 should prefer chunk text over configured indexed fields (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1908 [7] Call with UNDISCLOSED to join AI initiative (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586677 [8] Emails with Vardot to join AI initiative (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586676 [9] Call with will Open sense labs to join AI initiative (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586675 [10] Call with will Jairo from SEEDEM to join AI initiative (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586674 [11] Call with will zoocha to join AI initiative march 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586673 [12] Called mike giamon from elevated third to join aug 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586672 [13] Talked to Prateek from Axelerant to join juli 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586671 [14] Called with Morpht to renew second time in march 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586670 [15] Talked to Morpht in juli 2025 to join initiative (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586669 [16] Talked with Dipen from QED42 on joining in july 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586668 [17] Bring in ImageX Glenn hilton in aug 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586667 [18] Called with Michael from Amazee to bring them in june 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586666 [19] Brought in Acquia as founding sponsor in may 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586665 [20] Call with Kristen to make Salsa join may 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586664 [21] Call FG Jamie at Drupaljam on funding may 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586663 [22] Call with 1xinternet may 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586662 [23] Drupal AI Slide Deck (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3533346 [24] Add OAuth Scope Validation for MCP Authentication (mcp, Issue) — https://git.drupalcode.org/project/mcp/-/work_items/3569845 [25] #3569845: Add Oauth Scope Validation (mcp, MR) — https://git.drupalcode.org/project/mcp/-/merge_requests/44 [26] Enabling Artifact Storage on the "List content entities" tool throws error (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586062 [27] PrivateTempStatusStorage::getTempStoreKey() overflows key_value_expire.name for anonymous users with long ids (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586063 [28] Skip tools that never executed when collecting tool result images (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/339 [29] Agent status tempstore key overflows for anonymous users (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/338 [30] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [31] StaticPropSource widget building is order-dependent: dangling prop fields collide in core's TypedData item-prototype cache (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591918 [32] Clear the component hover outline when a drag starts (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591929 [33] `drush config:import` can fail to update a Component whose `active_version` changed (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591905 [34] Allow component properties to be categorized/grouped/organized (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3492758 [35] Brand Kit color support (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591838 [36] Unnecessary horizontal movement (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3534972 [37] Canvas AI: page builder discards the whole build when the LLM names a region that does not exist (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591876 [38] Component version hashes go stale on single-process installs: prop-shape re-resolution is deferred to teardown and skipped on a cold cache (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591916 [39] Array prop shapes don't inherit their item shape's cache tags, so prop-shape invalidation misses them (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591917 [40] Expose headless page helpers from isomorphic package entries (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591928 [41] Text-based comparison of entities (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591668 [42] [META]Canvas AI: Client-side orchestration loop roadmap (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591777 [43] Canvas AI: Cover the error path that clears stored agent state (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591927 [44] Canvas AI: Add Playwright coverage for the component agent hop loop (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591926 [45] AssetResolver::getJsAssets() is incompatible with core 11.x since #3565258 added $with_dependencies (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591925 [46] Canvas AI: Add a Drupal Canvas Agent that answers general questions (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591924 [47] Canvas AI: Research how a user can cancel a running chat turn (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591923 [48] Canvas AI: Add end-to-end kernel coverage for the dev page builder agent (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591922 [49] Canvas AI: Add a dev page builder agent and wire the placement tools (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591921 [50] Canvas AI: Add a catalog-only parameter to the get_component_context tool (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591920 [51] Canvas AI: Run the agent selected in configuration instead of a hardcoded one (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591919 [52] Canvas AI: Add Tools dropdown to chat UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591856 [53] Prefix-strip redirect misses default-language prefixes and is overridden by ?destination (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591839 [54] Incorrect folder assignment for newly created code components (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591828 [55] Expand conflict detection and resolution entity types other than Page (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591544 [56] chore(deps): update dependency cspell to v10 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1273 [57] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [58] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [59] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [60] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [61] Name dangling prop fields by field type so different-typed prop widgets don't share a TypedData item prototype (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1476 [62] bug: Component hover outline stays visible after a drag starts (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1483 [63] #3591916 Drain invalidated prop shapes before component generation; narrow the cold-cache guard (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1478 [64] #3591838 [PHASE 2] introduce color props (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1432 [65] #3591838 brand kit color implementation (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1385 [66] feat: #3518272 support all entity types with configurable displays for content templates (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/791 [67] Draft: #3591838 Phase 3: Usage data + deletion (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1479 [68] #3591875: "Translatable props missing from TMGMT form when component instances cannot be auto-updated to active version" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1418 [69] Resolve module-contributed import map entries in builds, pushes, and Workbench (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1482 [70] Give the editor canvas a reluctant vertical drag auto-scroll (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1392 [71] #3591870: Add a PHPStan rule to verify PHPUnit coverage attributes reference existing symbols (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1415 [72] Add PHPStan rule: needs*() config detectors must not mutate the entity they inspect (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1416 [73] Self-heal stored default-relative-url `$id` on read, and clean it up on update (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1474 [74] #3591917 Array prop shapes inherit their item shape's cache tags (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1475 [75] chore: version packages (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1481 [76] fix(Headless): #3591928 Expose headless page helpers from isomorphic package entries (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1480 [77] feat(Conflict detection): #3591668 "Text-based Page entity representation via Canvas API" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1241 [78] chore: version packages (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1464 [79] Draft: Resolve #3546597 "Create canvas page in other languages" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/494 [80] feat(CLI Tool): Push components as external metadata when the Headless SDK is present (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1470 [81] bug: #3591839 Preserve the query string when stripping the language prefix; a... (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1387 [82] #3591828: Fixed folder categorization issue follow-up. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1477 [83] Draft: Resolve "Canvas AI: Add Tools dropdown to chat UI" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1447 [84] Document Purpose field guidance for conditional subcontext selection (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586390 [85] Rename entity bundle and target entity scope plugins for better DX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586276 [86] Test current conditional subcontext selection before changing the prompt (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586351 [87] Tune conditional subcontext logic (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586199 [88] Add context item Priority field and use it for selection ordering (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586376 [89] Remove max_items context limit and rely on the token budget (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586378 [90] QA team start testing CCC to get familiar with functionality and create QA plan (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586342 [91] CCC QA scripts for 1.0 testing (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586226 [92] Create CCC beta3 and beta4 and status update video (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586333 [93] Switch CCC documentation link to clean version (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586370 [94] Pre-1.0 documentation, trust, and compatibility follow-up to issue 3586363 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586382 [95] Install `target_entities` field storage when Dynamic Entity Reference is enabled on existing sites (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586375 [96] Update ai_context project page and docs based on new naming approach (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586217 [97] Create CCC video showing how to configure it (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586153 [98] [Discuss] Approach for CCC+agent integration testing (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3571117 [99] Document how to use RAG with CCC 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586371 [100] Document real-world use cases for CCC 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586372 [101] Persist context-item token counts and show token-budget usage in CCC UI (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586379 [102] Pre-1.0 context selection reliability and diagnostics follow-up to issue 3586363 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586383 [103] CCC Outside AI roadmap discussion meeting August 2026 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586387 [104] Create multi-vocabulary taxonomy scope plugin (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586237 [105] [Meta] CCC MVP 1.0 roadmap (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3567798 [106] [Discuss] Add boundaries / exclusions to scope plugins (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586197 [107] Recruit additional CCC beta testers (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586235 [108] Add CCC beta tester info to the project page (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586248 [109] Update project page to make it more clear that CCC is for agents (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586278 [110] Clarify scope eligibility, ranking, and limits in UI help and documentation (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586348 [111] Review and update CCC permissions for beta5 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586358 [112] Review and document context selection ranking factors before 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586365 [113] CCC beta4 codebase review (pre-release) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586374 [114] [Meta] CCC rc cleanup from non-pressing beta code review items (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586389 [115] [Meta] CCC 1.1 release planning (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586373 [116] "Global context" checkbox description renders a literal
                                          instead of a line break (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586369 [117] [Meta] Prepare CCC for Inside AI Rotterdam demo (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586386 [118] Create CCC recipe for Inside Rotterdam demo (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586385 [119] Align scope scoring, language service, and contextual selection behavior (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586388 [120] [Discuss] Evaluate Tool API integration for CCC context tools (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3574926 [121] [Discuss] Add agent-level context isolation and governance controls (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586166 [122] Sprint 15 CCC roadmap updates, sprint planning, and issue triage (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586330 [123] Issue #3586376: Add context item priority field and selection tie-breakers. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/245 [124] Issue #3586378: Remove max_items context limit and rely on token budget. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/244 [125] Issue #3586226: Add 1.0 QA test scripts for manual testing. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/243 [126] Issue #3586365: Document scope selection and ranking logic. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/241 [127] Issue #3586388: Align scope scoring and contextual detection. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/242 [128] Issue #3586276: Rename entity bundle and target entity scope plugins for better DX (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/195 [129] Configuring Project Browser on a standard Drupal core install (not CMS) to provide "Install" buttons for AI recipes (ai_dashboard, Issue) — https://git.drupalcode.org/project/ai_dashboard/-/work_items/3585224 [130] [PP-1] Provide an API for performing access check on non-content entities (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3579758 [131] Fix ai_agents dependency setting that currently can cause config import issue (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3590048 --- MODULE SUMMARIES ---

                                          AI (Artificial Intelligence)

                                          Work this period focused on identifying and documenting quality issues in the module's content processing capabilities. Two bugs affecting accuracy have been confirmed:

                                          • A content-dropping issue was accepted where the module's text processing features fail to send source content to the AI provider when both the input and output fields use the same long-text format. This causes the system to produce responses based on missing information.
                                          • A reranking accuracy problem was identified in the search component. When processing chunked content, the system currently re-scores all chunks from the same document using the full document text rather than individual chunk content, reducing the precision of search result ranking. A draft fix is under review.

                                          Additionally, a feature request to support provider-native toolsets was accepted, which would allow the module to leverage search, calculation, and other capabilities built into AI platforms rather than reimplementing them.

                                          A maintenance release (version 1.4.6 and 1.3.11) was completed during this window.

                                          How can I help on this project?

                                          • Prioritise testing resources for the content-dropping bug, which affects core text processing workflows and may be impacting production use cases.
                                          • Clarify strategic direction on provider-native tooling: should the module integrate third-party capabilities or maintain full control through custom implementations?

                                          Contributors: Ann Mary Sruthy (annmarysruthy)

                                          ---

                                          Drupal AI Initiative

                                          The Drupal AI Initiative has completed a significant partnership expansion milestone, closing out documentation of 16 successful sponsorship engagements that have built the initiative's funding base over the past year. These partnerships range from founding-level sponsors to silver-tier contributors, representing diverse organizations across the Drupal ecosystem including hosting providers, development agencies, and enterprise platforms.

                                          The closed engagements track the progression from initial founding sponsors in mid-2025 through continued expansion and renewals into 2026, demonstrating sustained momentum in securing financial backing for the initiative. Additionally, a Drupal AI Slide Deck for use in client pitches, conference presentations, and business development communications was finalized.

                                          This body of work represents the completion of administrative tracking rather than new activity in the reporting period, but confirms that partnership development efforts have successfully established a diverse sponsor base to fund ongoing development work.

                                          How can I help on this project?

                                          • Support continued sponsor retention by championing visible deliverables and demonstrating return on investment to current partners as renewal discussions approach.
                                          • Identify and facilitate introductions to potential new organizational sponsors who could benefit from Drupal AI capabilities.
                                          ---

                                          Model Context Protocol

                                          The Model Context Protocol module saw focused development work on improving security controls for authentication. A new validation feature for OAuth scopes is now under development to give administrators control over which authentication permissions are allowed when external clients connect to the server. Currently, clients can request any scope during authentication, which may grant broader access than intended. The new capability will allow site administrators to configure and restrict which OAuth scopes are supported, ensuring tighter security boundaries.

                                          A merge request implementing this scope validation was opened during the period and is progressing through review. This work supports the module's broader goal of providing secure, controlled integration between Drupal and AI-powered tools.

                                          How can I help on this project?

                                          • Prioritize security review resources to ensure the OAuth scope validation feature meets enterprise authentication standards before release.
                                          • Clarify governance around default scope configurations to guide what should be enabled out-of-the-box versus requiring explicit administrator action.

                                          Contributors: Shubham Goel (shubhamgoel)

                                          ---

                                          AI Agents

                                          Over the past 24 hours, work has focused on addressing two storage and execution issues affecting agent reliability. A merge request was opened to resolve an error that occurs when Artifact Storage is enabled on the built-in content listing tool. The failure prevented agent runs from completing, while the same feature worked correctly on other tools. The fix ensures that tools which were never executed during a run are skipped when the system collects stored results, preventing premature retrieval attempts.

                                          A second bug was identified involving how agent status is temporarily stored for anonymous users. When anonymous visitors trigger agents, the system generates long session identifiers that, when combined with internal prefixes, exceed database column limits and cause storage failures. A merge request is already in progress to address the key length overflow.

                                          Both issues affect core agent functionality but are being actively addressed. This is typical maintenance work for a module in active development.

                                          How can I help on this project?

                                          • Prioritize code review bandwidth for the two open merge requests to move fixes into production quickly.
                                          • Consider resourcing for expanded automated testing to catch storage and edge-case failures earlier in development.

                                          Contributors: Prabhavathi Vanipenta (prabha1997)

                                          ---

                                          Drupal Canvas

                                          The past 24 hours saw several important fixes merged that resolve issues affecting both the page builder and headless implementations. A critical bug was fixed where certain field widget configurations could cause system failures due to naming collisions in the internal data prototype cache. Another fix ensures that when component data structures change, all related elements are properly invalidated and updated—previously, nested array properties could be missed during this refresh process.

                                          The Brand Kit color management feature was merged, enabling brand owners to define and organize a central color palette. This provides the foundation for future work that will allow editors to apply brand colors when configuring components. An auto-scroll issue in the drag-and-drop interface was also resolved, and headless page helpers were reorganized to ensure client and server code remain properly separated in JavaScript bundles.

                                          On the AI front, significant planning and architecture work is underway to support a new client-side orchestration model. Multiple issues were opened to document the roadmap, though no implementations were merged during this period. Several component version tracking issues remain open, including one where version hashes can become stale during single-process installations, and another affecting configuration import workflows. Work is in progress to address these through open merge requests.

                                          How can I help on this project?

                                          • Prioritize resources to complete the component version tracking fixes currently in review—these affect deployment workflows and recipe-based installations.
                                          • Support stakeholder alignment on the AI orchestration roadmap to ensure the architecture meets production requirements before implementation begins.

                                          Contributors: **** (project_19391_bot_17a61b0edeafd5a3db3e8b2462b6c010), **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Adam G-H (phenaproxima), Ben Mullins (bnjmnm) [1], Canvas version bot [2], Christian López Espínola (penyaskito) [2], David Bravo (davidbp), Feliksas Mazeikis (f.mazeikis), Fons Vandamme (f0ns), Gábor Hojtsy (goba), Harumi Jang (hooroomoo) [1], Kunal Sachdev (kunal.sachdev), Lauri Timmanee (lauriii) [1], utkarsh_33 (Utkarsh_33), wotnak [1]

                                          ---

                                          Context Control Center (CCC)

                                          The Context Control Center reached an important milestone during the reporting period: a comprehensive review of how the system chooses and ranks contextual information was completed and merged. This work establishes the documented foundation for the 1.0 release, ensuring that users can predict which context items reach AI features and in what order.

                                          Separately, Tune conditional subcontext logic was closed after testing determined the existing prompt structure is sufficient for most configurations. Failures were traced to weak guidance on the Purpose field rather than missing technical functionality, and documentation work to help authors write clearer inclusion criteria is now in progress.

                                          Several significant updates are in late-stage review, including changes that remove overlapping configuration limits in favor of token-budget controls, add priority fields for editorial control over selection order, and improve visibility into how context fits within token budgets. These updates refine the configuration experience ahead of the 1.0 candidate releases.

                                          Preparation for formal quality assurance is underway, with test scripts and documentation being developed to support structured pre-release validation. Beta 4 is scheduled for imminent release following a final codebase review.

                                          How can I help on this project?

                                          • Confirm resourcing for structured QA testing against the planned test scripts and schedule to avoid delaying the release candidate.
                                          • Review and approve the strategic roadmap discussion scheduled with Outside AI and Labs stakeholders to align post-1.0 priorities.

                                          Contributors: Kristen Pol (kepol) [1], Tamas Balog (tbalog)

                                          ---

                                          AI Dashboard

                                          No development activity was recorded during this period. One configuration issue remains under investigation: Configuring Project Browser on a standard Drupal core install (not CMS) to provide "Install" buttons for AI recipes. This issue relates to how site administrators can install recommended AI features through the interface, which currently shows command-line options rather than one-click installation buttons when using standard Drupal installations.

                                          The module is in early release (version 1.0.3), and this type of configuration question is typical for new integrations between experimental features. The issue does not block core functionality.

                                          How can I help on this project?

                                          • Clarify whether one-click installation of AI features is a priority for the target user base, or whether command-line installation is acceptable for technical teams during this phase.
                                          • Ensure the team has access to testing environments that match the deployment scenarios being reported by early adopters.
                                          ---

                                          AI Search

                                          Activity remained minimal during this period, with no code merged or committed. The module continues to evolve around a key challenge: ensuring that when users search for non-content items (such as configuration data or other structured information), the system respects access permissions before displaying results.

                                          An issue addressing this gap—Provide an API for performing access check on non-content entities—was recently closed. The module had previously only supported content searches with built-in permission handling. Extending search capabilities to other data types required a new mechanism to verify what each user is allowed to see. This work ensures that sensitive or restricted information is not inadvertently exposed through search results, which is critical for data governance and compliance.

                                          No development work was completed in the last 24 hours, suggesting either planning phases or resource allocation elsewhere in the project.

                                          How can I help on this project?

                                          • Clarify priority and timeline expectations for the module's roadmap to help contributors focus effort appropriately.
                                          • Ensure adequate developer capacity is allocated if active progress is needed in the near term.
                                          ---

                                          AG-UI

                                          Activity this week remained limited to issue tracking. A configuration dependency issue was identified that may affect installations attempting to import configuration related to AI agent functionality. The issue was opened to address potential problems during the configuration import process, which if left unresolved could complicate deployment workflows for sites using this module.

                                          No code changes were merged or committed during this period. The module remains in active development with this newly reported issue awaiting resolution.

                                          How can I help on this project?

                                          • Allocate developer time to resolve the configuration import issue, which could block smooth deployments for users.
                                          • Clarify the project's roadmap priorities to help contributors focus on the most impactful work.
                                          ======================================================================== ## [22] factcheck:tldr:executive ======================================================================== Layer-1 corrections: 1 Judge flags: 2 ======================================================================== ## [23] generate2026Capabilities ======================================================================== You are an editor writing a strategic section for a non-technical executive audience. The Drupal AI initiative has 8 planned capabilities for 2026. Your task is to read the module activity summaries below and explain how today's progress moves each capability forward — or note where there was no relevant progress today. Be concise and direct. Focus on what matters to a business leader: is progress happening, what is the next milestone, and are there any risks? When you describe progress on a capability, add inline citations using [N] where N is the reference number from the list below. You may cite multiple references per item, e.g. [1][3]. Place citations at the end of the relevant sentence, before the closing punctuation. Output an HTML fragment using exactly this structure:

                                          2026 Capabilities Progress

                                          1. Capability name — One or two sentences on how today's activity relates to this goal, or "No direct progress today" if nothing relevant occurred.
                                          Use only the 8 capabilities listed below, in the same order. Do not add, remove, or rename them. Do not output any text outside the

                                          and
                                            tags. --- 2026 CAPABILITIES --- 1. Page generation — Describe what you need and get a usable page, built from your actual design system components 2. Context management — A central place to define brand voice, style guides, audience profiles, and governance rules that AI can use 3. Background agents — AI that works without being prompted, responding to triggers and schedules while respecting editorial workflows 4. Design system integration — AI that builds with your components and can propose new ones when needed 5. Content creation and discovery — Smarter search, AI-powered optimization, and content drafting assistance 6. Advanced governance — Batch approvals, branch-based versioning, and comprehensive audit trails for AI changes 7. Intelligent website improvements — AI that learns from performance data, proposes concrete changes, and gets smarter over time through editorial review 8. Multi-channel campaigns — Create content for websites, social, email, and automation platforms from a single campaign goal --- REFERENCE LIST --- [1] LLM: Text / LLM: Text (simple) automators silently drop Base Field content when Base Field and Target Field are both long-text types (Basic input mode) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586659 [2] `AiReranker::extractItemText()` should prefer chunk text over configured indexed fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586637 [3] Release 1.4.6 and 1.3.11 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586650 [4] Drupal 11.4 DeepChat Block does not work with Webprofiler enabled (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586615 [5] Allow Internal Tool Calling (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586616 [6] bug: #3586637 should prefer chunk text over configured indexed fields (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1908 [7] Call with UNDISCLOSED to join AI initiative (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586677 [8] Emails with Vardot to join AI initiative (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586676 [9] Call with will Open sense labs to join AI initiative (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586675 [10] Call with will Jairo from SEEDEM to join AI initiative (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586674 [11] Call with will zoocha to join AI initiative march 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586673 [12] Called mike giamon from elevated third to join aug 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586672 [13] Talked to Prateek from Axelerant to join juli 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586671 [14] Called with Morpht to renew second time in march 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586670 [15] Talked to Morpht in juli 2025 to join initiative (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586669 [16] Talked with Dipen from QED42 on joining in july 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586668 [17] Bring in ImageX Glenn hilton in aug 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586667 [18] Called with Michael from Amazee to bring them in june 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586666 [19] Brought in Acquia as founding sponsor in may 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586665 [20] Call with Kristen to make Salsa join may 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586664 [21] Call FG Jamie at Drupaljam on funding may 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586663 [22] Call with 1xinternet may 2025 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586662 [23] Drupal AI Slide Deck (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3533346 [24] Add OAuth Scope Validation for MCP Authentication (mcp, Issue) — https://git.drupalcode.org/project/mcp/-/work_items/3569845 [25] #3569845: Add Oauth Scope Validation (mcp, MR) — https://git.drupalcode.org/project/mcp/-/merge_requests/44 [26] Enabling Artifact Storage on the "List content entities" tool throws error (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586062 [27] PrivateTempStatusStorage::getTempStoreKey() overflows key_value_expire.name for anonymous users with long ids (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586063 [28] Skip tools that never executed when collecting tool result images (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/339 [29] Agent status tempstore key overflows for anonymous users (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/338 [30] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [31] StaticPropSource widget building is order-dependent: dangling prop fields collide in core's TypedData item-prototype cache (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591918 [32] Clear the component hover outline when a drag starts (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591929 [33] `drush config:import` can fail to update a Component whose `active_version` changed (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591905 [34] Allow component properties to be categorized/grouped/organized (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3492758 [35] Brand Kit color support (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591838 [36] Unnecessary horizontal movement (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3534972 [37] Canvas AI: page builder discards the whole build when the LLM names a region that does not exist (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591876 [38] Component version hashes go stale on single-process installs: prop-shape re-resolution is deferred to teardown and skipped on a cold cache (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591916 [39] Array prop shapes don't inherit their item shape's cache tags, so prop-shape invalidation misses them (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591917 [40] Expose headless page helpers from isomorphic package entries (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591928 [41] Text-based comparison of entities (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591668 [42] [META]Canvas AI: Client-side orchestration loop roadmap (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591777 [43] Canvas AI: Cover the error path that clears stored agent state (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591927 [44] Canvas AI: Add Playwright coverage for the component agent hop loop (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591926 [45] AssetResolver::getJsAssets() is incompatible with core 11.x since #3565258 added $with_dependencies (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591925 [46] Canvas AI: Add a Drupal Canvas Agent that answers general questions (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591924 [47] Canvas AI: Research how a user can cancel a running chat turn (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591923 [48] Canvas AI: Add end-to-end kernel coverage for the dev page builder agent (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591922 [49] Canvas AI: Add a dev page builder agent and wire the placement tools (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591921 [50] Canvas AI: Add a catalog-only parameter to the get_component_context tool (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591920 [51] Canvas AI: Run the agent selected in configuration instead of a hardcoded one (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591919 [52] Canvas AI: Add Tools dropdown to chat UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591856 [53] Prefix-strip redirect misses default-language prefixes and is overridden by ?destination (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591839 [54] Incorrect folder assignment for newly created code components (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591828 [55] Expand conflict detection and resolution entity types other than Page (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591544 [56] chore(deps): update dependency cspell to v10 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1273 [57] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [58] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [59] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [60] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [61] Name dangling prop fields by field type so different-typed prop widgets don't share a TypedData item prototype (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1476 [62] bug: Component hover outline stays visible after a drag starts (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1483 [63] #3591916 Drain invalidated prop shapes before component generation; narrow the cold-cache guard (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1478 [64] #3591838 [PHASE 2] introduce color props (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1432 [65] #3591838 brand kit color implementation (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1385 [66] feat: #3518272 support all entity types with configurable displays for content templates (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/791 [67] Draft: #3591838 Phase 3: Usage data + deletion (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1479 [68] #3591875: "Translatable props missing from TMGMT form when component instances cannot be auto-updated to active version" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1418 [69] Resolve module-contributed import map entries in builds, pushes, and Workbench (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1482 [70] Give the editor canvas a reluctant vertical drag auto-scroll (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1392 [71] #3591870: Add a PHPStan rule to verify PHPUnit coverage attributes reference existing symbols (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1415 [72] Add PHPStan rule: needs*() config detectors must not mutate the entity they inspect (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1416 [73] Self-heal stored default-relative-url `$id` on read, and clean it up on update (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1474 [74] #3591917 Array prop shapes inherit their item shape's cache tags (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1475 [75] chore: version packages (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1481 [76] fix(Headless): #3591928 Expose headless page helpers from isomorphic package entries (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1480 [77] feat(Conflict detection): #3591668 "Text-based Page entity representation via Canvas API" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1241 [78] chore: version packages (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1464 [79] Draft: Resolve #3546597 "Create canvas page in other languages" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/494 [80] feat(CLI Tool): Push components as external metadata when the Headless SDK is present (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1470 [81] bug: #3591839 Preserve the query string when stripping the language prefix; a... (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1387 [82] #3591828: Fixed folder categorization issue follow-up. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1477 [83] Draft: Resolve "Canvas AI: Add Tools dropdown to chat UI" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1447 [84] Document Purpose field guidance for conditional subcontext selection (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586390 [85] Rename entity bundle and target entity scope plugins for better DX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586276 [86] Test current conditional subcontext selection before changing the prompt (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586351 [87] Tune conditional subcontext logic (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586199 [88] Add context item Priority field and use it for selection ordering (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586376 [89] Remove max_items context limit and rely on the token budget (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586378 [90] QA team start testing CCC to get familiar with functionality and create QA plan (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586342 [91] CCC QA scripts for 1.0 testing (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586226 [92] Create CCC beta3 and beta4 and status update video (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586333 [93] Switch CCC documentation link to clean version (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586370 [94] Pre-1.0 documentation, trust, and compatibility follow-up to issue 3586363 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586382 [95] Install `target_entities` field storage when Dynamic Entity Reference is enabled on existing sites (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586375 [96] Update ai_context project page and docs based on new naming approach (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586217 [97] Create CCC video showing how to configure it (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586153 [98] [Discuss] Approach for CCC+agent integration testing (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3571117 [99] Document how to use RAG with CCC 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586371 [100] Document real-world use cases for CCC 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586372 [101] Persist context-item token counts and show token-budget usage in CCC UI (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586379 [102] Pre-1.0 context selection reliability and diagnostics follow-up to issue 3586363 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586383 [103] CCC Outside AI roadmap discussion meeting August 2026 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586387 [104] Create multi-vocabulary taxonomy scope plugin (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586237 [105] [Meta] CCC MVP 1.0 roadmap (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3567798 [106] [Discuss] Add boundaries / exclusions to scope plugins (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586197 [107] Recruit additional CCC beta testers (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586235 [108] Add CCC beta tester info to the project page (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586248 [109] Update project page to make it more clear that CCC is for agents (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586278 [110] Clarify scope eligibility, ranking, and limits in UI help and documentation (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586348 [111] Review and update CCC permissions for beta5 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586358 [112] Review and document context selection ranking factors before 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586365 [113] CCC beta4 codebase review (pre-release) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586374 [114] [Meta] CCC rc cleanup from non-pressing beta code review items (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586389 [115] [Meta] CCC 1.1 release planning (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586373 [116] "Global context" checkbox description renders a literal
                                            instead of a line break (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586369 [117] [Meta] Prepare CCC for Inside AI Rotterdam demo (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586386 [118] Create CCC recipe for Inside Rotterdam demo (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586385 [119] Align scope scoring, language service, and contextual selection behavior (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586388 [120] [Discuss] Evaluate Tool API integration for CCC context tools (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3574926 [121] [Discuss] Add agent-level context isolation and governance controls (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586166 [122] Sprint 15 CCC roadmap updates, sprint planning, and issue triage (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586330 [123] Issue #3586376: Add context item priority field and selection tie-breakers. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/245 [124] Issue #3586378: Remove max_items context limit and rely on token budget. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/244 [125] Issue #3586226: Add 1.0 QA test scripts for manual testing. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/243 [126] Issue #3586365: Document scope selection and ranking logic. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/241 [127] Issue #3586388: Align scope scoring and contextual detection. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/242 [128] Issue #3586276: Rename entity bundle and target entity scope plugins for better DX (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/195 [129] Configuring Project Browser on a standard Drupal core install (not CMS) to provide "Install" buttons for AI recipes (ai_dashboard, Issue) — https://git.drupalcode.org/project/ai_dashboard/-/work_items/3585224 [130] [PP-1] Provide an API for performing access check on non-content entities (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3579758 [131] Fix ai_agents dependency setting that currently can cause config import issue (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3590048 --- TODAY'S MODULE SUMMARIES ---

                                            AI (Artificial Intelligence)

                                            Work this period focused on identifying and documenting quality issues in the module's content processing capabilities. Two bugs affecting accuracy have been confirmed:

                                            • A content-dropping issue was accepted where the module's text processing features fail to send source content to the AI provider when both the input and output fields use the same long-text format. This causes the system to produce responses based on missing information.
                                            • A reranking accuracy problem was identified in the search component. When processing chunked content, the system currently re-scores all chunks from the same document using the full document text rather than individual chunk content, reducing the precision of search result ranking. A draft fix is under review.

                                            Additionally, a feature request to support provider-native toolsets was accepted, which would allow the module to leverage search, calculation, and other capabilities built into AI platforms rather than reimplementing them.

                                            A maintenance release (version 1.4.6 and 1.3.11) was completed during this window.

                                            How can I help on this project?

                                            • Prioritise testing resources for the content-dropping bug, which affects core text processing workflows and may be impacting production use cases.
                                            • Clarify strategic direction on provider-native tooling: should the module integrate third-party capabilities or maintain full control through custom implementations?

                                            Contributors: Ann Mary Sruthy (annmarysruthy)

                                            ---

                                            Drupal AI Initiative

                                            The Drupal AI Initiative has completed a significant partnership expansion milestone, closing out documentation of 16 successful sponsorship engagements that have built the initiative's funding base over the past year. These partnerships range from founding-level sponsors to silver-tier contributors, representing diverse organizations across the Drupal ecosystem including hosting providers, development agencies, and enterprise platforms.

                                            The closed engagements track the progression from initial founding sponsors in mid-2025 through continued expansion and renewals into 2026, demonstrating sustained momentum in securing financial backing for the initiative. Additionally, a Drupal AI Slide Deck for use in client pitches, conference presentations, and business development communications was finalized.

                                            This body of work represents the completion of administrative tracking rather than new activity in the reporting period, but confirms that partnership development efforts have successfully established a diverse sponsor base to fund ongoing development work.

                                            How can I help on this project?

                                            • Support continued sponsor retention by championing visible deliverables and demonstrating return on investment to current partners as renewal discussions approach.
                                            • Identify and facilitate introductions to potential new organizational sponsors who could benefit from Drupal AI capabilities.
                                            ---

                                            Model Context Protocol

                                            The Model Context Protocol module saw focused development work on improving security controls for authentication. A new validation feature for OAuth scopes is now under development to give administrators control over which authentication permissions are allowed when external clients connect to the server. Currently, clients can request any scope during authentication, which may grant broader access than intended. The new capability will allow site administrators to configure and restrict which OAuth scopes are supported, ensuring tighter security boundaries.

                                            A merge request implementing this scope validation was opened during the period and is progressing through review. This work supports the module's broader goal of providing secure, controlled integration between Drupal and AI-powered tools.

                                            How can I help on this project?

                                            • Prioritize security review resources to ensure the OAuth scope validation feature meets enterprise authentication standards before release.
                                            • Clarify governance around default scope configurations to guide what should be enabled out-of-the-box versus requiring explicit administrator action.

                                            Contributors: Shubham Goel (shubhamgoel)

                                            ---

                                            AI Agents

                                            Over the past 24 hours, work has focused on addressing two storage and execution issues affecting agent reliability. A merge request was opened to resolve an error that occurs when Artifact Storage is enabled on the built-in content listing tool. The failure prevented agent runs from completing, while the same feature worked correctly on other tools. The fix ensures that tools which were never executed during a run are skipped when the system collects stored results, preventing premature retrieval attempts.

                                            A second bug was identified involving how agent status is temporarily stored for anonymous users. When anonymous visitors trigger agents, the system generates long session identifiers that, when combined with internal prefixes, exceed database column limits and cause storage failures. A merge request is already in progress to address the key length overflow.

                                            Both issues affect core agent functionality but are being actively addressed. This is typical maintenance work for a module in active development.

                                            How can I help on this project?

                                            • Prioritize code review bandwidth for the two open merge requests to move fixes into production quickly.
                                            • Consider resourcing for expanded automated testing to catch storage and edge-case failures earlier in development.

                                            Contributors: Prabhavathi Vanipenta (prabha1997)

                                            ---

                                            Drupal Canvas

                                            The past 24 hours saw several important fixes merged that resolve issues affecting both the page builder and headless implementations. A critical bug was fixed where certain field widget configurations could cause system failures due to naming collisions in the internal data prototype cache. Another fix ensures that when component data structures change, all related elements are properly invalidated and updated—previously, nested array properties could be missed during this refresh process.

                                            The Brand Kit color management feature was merged, enabling brand owners to define and organize a central color palette. This provides the foundation for future work that will allow editors to apply brand colors when configuring components. An auto-scroll issue in the drag-and-drop interface was also resolved, and headless page helpers were reorganized to ensure client and server code remain properly separated in JavaScript bundles.

                                            On the AI front, significant planning and architecture work is underway to support a new client-side orchestration model. Multiple issues were opened to document the roadmap, though no implementations were merged during this period. Several component version tracking issues remain open, including one where version hashes can become stale during single-process installations, and another affecting configuration import workflows. Work is in progress to address these through open merge requests.

                                            How can I help on this project?

                                            • Prioritize resources to complete the component version tracking fixes currently in review—these affect deployment workflows and recipe-based installations.
                                            • Support stakeholder alignment on the AI orchestration roadmap to ensure the architecture meets production requirements before implementation begins.

                                            Contributors: **** (project_19391_bot_17a61b0edeafd5a3db3e8b2462b6c010), **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Adam G-H (phenaproxima), Ben Mullins (bnjmnm) [1], Canvas version bot [2], Christian López Espínola (penyaskito) [2], David Bravo (davidbp), Feliksas Mazeikis (f.mazeikis), Fons Vandamme (f0ns), Gábor Hojtsy (goba), Harumi Jang (hooroomoo) [1], Kunal Sachdev (kunal.sachdev), Lauri Timmanee (lauriii) [1], utkarsh_33 (Utkarsh_33), wotnak [1]

                                            ---

                                            Context Control Center (CCC)

                                            The Context Control Center reached an important milestone during the reporting period: a comprehensive review of how the system chooses and ranks contextual information was completed and merged. This work establishes the documented foundation for the 1.0 release, ensuring that users can predict which context items reach AI features and in what order.

                                            Separately, Tune conditional subcontext logic was closed after testing determined the existing prompt structure is sufficient for most configurations. Failures were traced to weak guidance on the Purpose field rather than missing technical functionality, and documentation work to help authors write clearer inclusion criteria is now in progress.

                                            Several significant updates are in late-stage review, including changes that remove overlapping configuration limits in favor of token-budget controls, add priority fields for editorial control over selection order, and improve visibility into how context fits within token budgets. These updates refine the configuration experience ahead of the 1.0 candidate releases.

                                            Preparation for formal quality assurance is underway, with test scripts and documentation being developed to support structured pre-release validation. Beta 4 is scheduled for imminent release following a final codebase review.

                                            How can I help on this project?

                                            • Confirm resourcing for structured QA testing against the planned test scripts and schedule to avoid delaying the release candidate.
                                            • Review and approve the strategic roadmap discussion scheduled with Outside AI and Labs stakeholders to align post-1.0 priorities.

                                            Contributors: Kristen Pol (kepol) [1], Tamas Balog (tbalog)

                                            ---

                                            AI Dashboard

                                            No development activity was recorded during this period. One configuration issue remains under investigation: Configuring Project Browser on a standard Drupal core install (not CMS) to provide "Install" buttons for AI recipes. This issue relates to how site administrators can install recommended AI features through the interface, which currently shows command-line options rather than one-click installation buttons when using standard Drupal installations.

                                            The module is in early release (version 1.0.3), and this type of configuration question is typical for new integrations between experimental features. The issue does not block core functionality.

                                            How can I help on this project?

                                            • Clarify whether one-click installation of AI features is a priority for the target user base, or whether command-line installation is acceptable for technical teams during this phase.
                                            • Ensure the team has access to testing environments that match the deployment scenarios being reported by early adopters.
                                            ---

                                            AI Search

                                            Activity remained minimal during this period, with no code merged or committed. The module continues to evolve around a key challenge: ensuring that when users search for non-content items (such as configuration data or other structured information), the system respects access permissions before displaying results.

                                            An issue addressing this gap—Provide an API for performing access check on non-content entities—was recently closed. The module had previously only supported content searches with built-in permission handling. Extending search capabilities to other data types required a new mechanism to verify what each user is allowed to see. This work ensures that sensitive or restricted information is not inadvertently exposed through search results, which is critical for data governance and compliance.

                                            No development work was completed in the last 24 hours, suggesting either planning phases or resource allocation elsewhere in the project.

                                            How can I help on this project?

                                            • Clarify priority and timeline expectations for the module's roadmap to help contributors focus effort appropriately.
                                            • Ensure adequate developer capacity is allocated if active progress is needed in the near term.
                                            ---

                                            AG-UI

                                            Activity this week remained limited to issue tracking. A configuration dependency issue was identified that may affect installations attempting to import configuration related to AI agent functionality. The issue was opened to address potential problems during the configuration import process, which if left unresolved could complicate deployment workflows for sites using this module.

                                            No code changes were merged or committed during this period. The module remains in active development with this newly reported issue awaiting resolution.

                                            How can I help on this project?

                                            • Allocate developer time to resolve the configuration import issue, which could block smooth deployments for users.
                                            • Clarify the project's roadmap priorities to help contributors focus on the most impactful work.
                                            ======================================================================== ## [24] factcheck:capabilities:executive ======================================================================== Layer-1 corrections: 2 Judge flags: 7