# Prompt log — 24h 2026-08-08 ======================================================================== ## [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-08T05:00:07+00:00 to 2026-08-09T05:00:07+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: Avinash jha (avinash.jha)". 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). ### [Fields with optional summary field, have no AI Automator option to fill it as well.](https://git.drupalcode.org/project/ai/-/work_items/3586550) State: opened | Updated: 2026-08-08 | Author: ro-no-lo | Assigned: unassigned | Labels: Quick Win, category::feature, priority::minor, state::accepted Description: A "formated text, long, with summary" field can be filled via AI Automator, which in my case functions very nicely. (Thank you AI team). But we noticed, that the "summary" which comes with that field is left empty. I know that there are display options like "smart trim" or so, but having the AI to summarize a huge text field into one or two sentences is not possible. We will work around that by telling AI to create a summary within the main field and add `....` and extract it via post-processing or so. But a checkbox, with a sub-prompt for that extra-field would be nice. Contextual inform… ### [Update the testing steps docs to 1.4.x](https://git.drupalcode.org/project/ai/-/work_items/3586463) State: opened | Updated: 2026-08-08 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: category::task, priority::normal, state::needs review Description: ## Description Update the doc: https://project.pages.drupalcode.org/ai/1.4.x/contribute/testing/full_patch_test/ - To have 1.4.x based testing steps - more importantly Adding global guardrails test - Find out anything more changes in 1.4.x which should be added. Check the diff. ## Tasks * [ ] ## Acceptance criteria * ## Testing instructions *(added by implementor before review)* 1. ## Related issues *(optional)* --- MERGE REQUESTS (24h) --- ### [Issue #3586463: Update testing steps documentation to 1.4.x and add global guardrails test](https://git.drupalcode.org/project/ai/-/merge_requests/1922) State: opened | Author: Avinash jha (avinash.jha) | Branch: 3586463-update-the-testing-steps-docs-to-14x | 60 diff lines --- 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-08T05:00:07+00:00 to 2026-08-09T05:00:07+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). ### [[META] AI Demo Site Content + Architecture - Rotterdam](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586678) State: opened | Updated: 2026-08-08 | Author: Aidan Foster (aidanfoster) | Assigned: Aidan Foster (aidanfoster) | Labels: AI Initiative Sprint Description: Area meta issue for "Demo content and site", area 1 of {#3586657} ## Scope The university corpus exists in the demo content recipe as reviewable source files, separated from configuration. Site structure is Home, Demo, Courses, Staff, News and a small set of standard pages. The Demo section carries one page per area, written by that area's lead and added to the corpus by the demo team. The whole site installs from the starter template as a single Drupal Forge template launch, with no signup form in front of it. ## Must-have for Rotterdam - Entity architecture and corpus scope agreed. - Con… ### [[META] 2026 AI Inside Roadmap to DrupalCon Rotterdam 2026](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586657) State: opened | Updated: 2026-08-08 | Author: Christoph Breidert (breidert) | Assigned: Christoph Breidert (breidert) | Labels: AI Initiative, ai::inside, roadmap Description: ## Why this roadmap exists At DrupalCon Rotterdam at the end of September we want to show a single Drupal site where AI Search, AI content review, AI translation, an editor-facing chat, observability and guardrails all work together on real, multilingual content. Rather than describing these features one by one, we let people see them working together on one site, and we let anyone launch that site for themselves in a few seconds on Drupal Forge. Most of these features already work today. The gap is almost never the core capability. The gap is that we have not yet shipped the recipes and dem… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [3] summariseModule:tool:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Tool API (machine name: tool) Reporting period: last 24h (2026-08-08T05:00:07+00:00 to 2026-08-09T05:00:07+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: Marcus Johansson (Marcus_Johansson)". 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

      Tool API

      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). (none) --- MERGE REQUESTS (24h) --- ### [Resolve #3582955 "Write documentation and enable project pages"](https://git.drupalcode.org/project/tool/-/merge_requests/105) State: opened | Author: Marcus Johansson (Marcus_Johansson) | Branch: 3582955-write-documentation-and-enable-project-pages | 955 diff lines Description: Closes #3582955 --- COMMITS (24h) --- (none) ======================================================================== ## [4] 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-08T05:00:07+00:00 to 2026-08-09T05:00:07+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_cb443e60680723bba08a5351bf595251), Christian López Espínola (penyaskito) [1], Lauri Timmanee (lauriii)". 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-09 | 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… ### [Apply brand kit colour changes optimistically](https://git.drupalcode.org/project/canvas/-/work_items/3591930) State: opened | Updated: 2026-08-08 | Author: Lauri Timmanee (lauriii) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1484 [feat(Brand kit): apply color edits optimistically with rollback](https://git.drupalcode.org/project/canvas/-/merge_requests/1484) | State: opened | Author: Lauri Timmanee (lauriii), 1583 diff lines Description: ## Overview Every brand kit colour write blocks on the network before anything visible changes. Saving an edit awaits the PATCH, and only when that resolves does the resulting tag invalidation refetch the brand kit and repaint the row — two serialised round trips, with the form held open on a spinner throughout. To reproduce: open the brand kit panel, edit a color, and save. The swatch and the form both wait for the server. Three related defects sit in the same path. Color mutations invalidate only the `BrandKits` tags, but `useBrandKitColors` prefers the auto-save draft's colors, so while … ### [SDC: support selection of image styles or aspect ratio](https://git.drupalcode.org/project/canvas/-/work_items/3562276) State: opened | Updated: 2026-08-08 | Author: drupalbot | Assigned: unassigned | Labels: DX (Developer Experience), Needs change record, Needs manual testing, category::feature Description: >>> [!note] Migrated issue Reported by: [tijanam](https://www.drupal.org/user/3843197) Related to !536 >>> Overview The canvas image solution does not allow fine control over image sizes, ratios or crops which can be achieved in Drupal with existing tools. Many sites are already using image styles and/or image display modes and focal point, so it would make sense for these to be supported in some way to allow an easy transition to canvas or to allow us to use canvas on sections of existing sites. Proposed resolution User interface changes > Related issue: [Issue #3532718](https://www.dr… ### [[later phase] Make it possible to translate the Drupal Canvas UI itself](https://git.drupalcode.org/project/canvas/-/work_items/3457634) State: opened | Updated: 2026-08-08 | Author: drupalbot | Assigned: unassigned | Labels: category::task, pageBuilder, priority::major, state::accepted Description: >>> [!note] Migrated issue Reported by: [lauriii](https://www.drupal.org/user/1078742) Related to !72 >>> Problem/Motivation We should add support for translating the Drupal Canvas UI itself to other languages, to make sure that users who are not using Drupal in English, can use Drupal Canvas in their local language. Proposed resolution Use Drupal's built in UI translation system: https://www.drupal.org/docs/8/api/translation-api/overview#s-translation-in-javascript-files ### [Support code component imports contributed by modules to the Canvas import map](https://git.drupalcode.org/project/canvas/-/work_items/3591914) State: opened | Updated: 2026-08-08 | Author: Lauri Timmanee (lauriii) | Assigned: unassigned | Labels: Needs review Description: A module can add entries to the Canvas import map through `hook_canvas_importmap_alter()`. A code component that imports such an entry works in the in-browser code editor, which compiles the source and lets the browser resolve the specifier at runtime, but it cannot be pushed with the CLI. To reproduce: implement `hook_canvas_importmap_alter()` in a module to add a specifier such as `my_module/useThing`, then import it from a code component and run `canvas push`. The build fails with `Could not resolve entry module "my_module/useThing"` and nothing is uploaded. `canvas validate` passes, so th… ### [PHPStan rule: needs*() config detectors must not mutate the entity they inspect](https://git.drupalcode.org/project/canvas/-/work_items/3591855) State: closed | Updated: 2026-08-08 | Author: Christian López Espínola (penyaskito) | Assigned: Adam G-H (phenaproxima) | Labels: DX (Developer Experience), PHPStan, category::task, data integrity Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1416 [Add PHPStan rule: needs*() config detectors must not mutate the entity they inspect](https://git.drupalcode.org/project/canvas/-/merge_requests/1416) | State: merged 2026-08-08 | Author: Christian López Espínola (penyaskito), 241 diff lines Description: ### Overview Canvas's data-health "escaped config" check (`Doctor::runUpdatesEscapedConfigCheck()`) reflects and runs every `needs*()` detector on `CanvasConfigUpdater` against a single, shared, loaded config entity to decide whether that config has a pending data-model migration. These detectors must be side-effect-free: if one mutates the entity it is passed, the change leaks into every detector that runs after it on the same entity, silently corrupting the audit's result. Today that contract is enforced only by convention and review. It has already been violated twice in practice: one det… ### [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::fixed 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… --- 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… ### [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 | 1306 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… ### [Add a entity reference prop data shape preview to code editor](https://git.drupalcode.org/project/canvas/-/merge_requests/1351) State: opened | Author: Lauri Timmanee (lauriii) | Branch: 3591805-code-editor-developers-cannot-see-what-a-content-entity-reference-prop-delivers-to-their-component | 3523 diff lines Description: AI was used to accelerate with the development of this MR. ## Testing instructions * [ ] Create a new Code Component * [ ] Add Entity Reference Prop to the component * [ ] Select Content Type + Fields * [ ] Confirm there is an approximation of the shape that's loaded after selecting fields * [ ] Select a preview entity * [ ] Confirm there is an actual API response displayed using the preview entity Closes #3591805 ### [Do not mangle absolute or protocol-relative stylesheet URLs in scopeCss](https://git.drupalcode.org/project/canvas/-/merge_requests/1384) State: opened | Author: Lauri Timmanee (lauriii) | Branch: 3580207-error-with-cdn | 150 diff lines Description: Fixes https://www.drupal.org/i/3580207 . scopeCss() rewrote every stylesheet href as if it were relative, corrupting absolute (https://cdn.example.com/...) and protocol-relative (//cdn.example.com/...) URLs when a code component's styles were loaded from a CDN. The fix leaves absolute and protocol-relative hrefs untouched and only resolves genuinely relative ones. Covered by a new vitest unit test (ui/tests/vitest/unit/scope-css-fetch-href.test.js, 3 cases: absolute, protocol-relative, relative). Verified green locally and on the GitHub CI mirror. Closes #3580207 ### [Draft: Add Twig filter for image styles](https://git.drupalcode.org/project/canvas/-/merge_requests/536) State: opened | Author: Lauri Timmanee (lauriii) | Branch: 3562276-support-selection-of | 1298 diff lines Description: Closes #3562276 ### [#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) | Branch: 3591916-component-version-hashes-go-stale-on-single-process-installs | 476 diff lines Description: Closes #3591916 Depends on !1475 — this branch is based on it and includes its two commits; only `0f53719b6` and `8316a7023` are new here. The array-prop test coverage below needs !1475's fix to pass. ## What this MR does Two changes to `PersistentPropShapeRepository`, one per commit: 1. **Drain invalidated prop shapes before generating components.** New public `resolveInvalidatedPropShapes()` processes the queued re-resolutions; it is called at the three full-regeneration triggers (`RecipeSubscriber::ensureComponentsExist()`, `hook_rebuild()`, `hook_modules_installed()`), so the regenerat… --- COMMITS (24h) --- - [82b5209a](https://git.drupalcode.org/project/canvas/-/commit/82b5209a4c2875b71e4ba9ada031c894f617b241) chore(Project management): #3591855 PHPStan rule: needs*() config detectors must not mutate the entity they inspect — Christian López Espínola (2026-08-08T09:34:25.000+00:00) ======================================================================== ## [5] 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-08T05:00:07+00:00 to 2026-08-09T05:00:07+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)". 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). ### [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-09 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, category::task, priority::major, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !248 [Issue #3586379: Persist token counts and show budget usage in CCC UI.](https://git.drupalcode.org/project/ai_context/-/merge_requests/248) | State: opened | Author: Kristen Pol (kepol), 3644 diff lines 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. **Implementation:** [MR !248](https://git.drupalcode.org/project/ai_context/-/merge_requests/248) on branch … ### [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-09 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, 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… ### [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-09 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, category::task, priority::normal, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !253 [Issue #3586382: Pre-1.0 documentation, trust, and compatibility follow-up.](https://git.drupalcode.org/project/ai_context/-/merge_requests/253) | State: opened | Author: Kristen Pol (kepol), 571 diff lines 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.… ### [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-09 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint12, 2026Sprint13, 2026Sprint14, 2026Sprint15 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… ### [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-09 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::task, needs manual testing, priority::major Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !252 [Issue #3586383: Pre-1.0 context selection reliability and diagnostics follow-up.](https://git.drupalcode.org/project/ai_context/-/merge_requests/252) | State: opened | Author: Kristen Pol (kepol), 1013 diff lines 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… ### [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-09 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::bug, priority::normal, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !251 [Issue #3586375: Install target_entities storage when DER is enabled later.](https://git.drupalcode.org/project/ai_context/-/merge_requests/251) | State: opened | Author: Kristen Pol (kepol), 452 diff lines 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… ### [Redesign selection modes as a nested Minimal / Relevant / Broad ladder and remove match_all](https://git.drupalcode.org/project/ai_context/-/work_items/3586394) State: opened | Updated: 2026-08-09 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, category::feature, needs ux review, priority::major Description: ## Problem/motivation Follow-up to: #3586237+s Agent context selection is confusing today because the two selection modes encode mechanisms instead of user intent, and they are not supersets of each other: - **Minimal** (default) with **no subscriptions** injects almost nothing except Global, Always include, and **Target Entity** auto-matches. New agents silently get no situational context. - **Subscriptions** are required to inject Use Case, Context Tags, Taxonomy Terms, Entity Bundle, etc. — and an **empty scope on an item counts as a full subscription match**, so unscoped "gener… ### [Create multi-vocabulary taxonomy scope plugin](https://git.drupalcode.org/project/ai_context/-/work_items/3586237) State: opened | Updated: 2026-08-09 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::feature, priority::normal, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !250 [Issue #3586237: Add multi-vocabulary taxonomy scope plugin.](https://git.drupalcode.org/project/ai_context/-/merge_requests/250) | State: opened | Author: Kristen Pol (kepol), 1714 diff lines 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 is 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, bar… ### [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-09 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol), Aidan Foster (aidanfoster), Emma Horrell (emma-horrell) | Labels: 2026Sprint16, category::task, priority::normal, sprint candidate 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… ### [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-09 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::feature, priority::major, sprint candidate 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… ### [[Meta] Prepare demo content and demo context items for the CCC to show how it works](https://git.drupalcode.org/project/ai_context/-/work_items/3586339) State: opened | Updated: 2026-08-08 | Author: Emma Horrell (emma-horrell) | Assigned: Emma Horrell (emma-horrell) | Labels: 2026Sprint15, AI Initiative Sprint, AI UX, ai::inside Description: ## Problem/motivation _**Note that if we at least get the code with one draft example merged in for beta4 that we can add the additional sample context in rc1 since it would be "documentation" in a sense.**_ Follow-up to: - #3586335 - #3586279 A new Context Control Center (CCC) installation is empty. People unfamiliar with CCC terminology and structure cannot easily see how source content, context items, scopes and consumer subscriptions work together. Provide realistic, optional demo data that lets people explore a complete CCC workflow before configuring it for their own organisation. … ### [Review and document context selection ranking factors before 1.0](https://git.drupalcode.org/project/ai_context/-/work_items/3586365) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task 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… ### [Clarify and stabilize the scope plugin extension boundary for 1.0](https://git.drupalcode.org/project/ai_context/-/work_items/3586392) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, category::task, priority::normal, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !249 [Issue #3586392: Clarify and stabilize scope plugin extension boundary for 1.0.](https://git.drupalcode.org/project/ai_context/-/merge_requests/249) | State: opened | Author: Kristen Pol (kepol), 989 diff lines Description: ## Summary Follow-up to: #3586243+s Before 1.0, lock down what custom scope authors and contrib can safely depend on, without landing the full persistence/orchestration refactor from [#3586243](https://git.drupalcode.org/project/ai_context/-/work_items/3586243). This issue is documentation and internal seam-setting only: no new public interface methods and no user-visible behavior changes. The current scope plugin API is already broad enough for map-backed custom scopes, but docs and code send mixed signals. The scope manager is marked `@internal` while developer docs show injection patter… ### [[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, category::feature, must have, priority::major 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 ### [Complete scope plugin persistence API: manager orchestration, target entity encapsulation, and plugin-driven admin/selection](https://git.drupalcode.org/project/ai_context/-/work_items/3586243) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint11, 2026Sprint16, category::feature, must have Description: ## Description _**Note that this needs to be rethought to minimize the impact on 1.0 and figure out what can happen in 1.1 instead.**_ Blocked by: #3586295+s ### Summary The scope plugin API was asymmetric: read and match were abstracted, but write, clear, index, cleanup, form integration, and save-time validation leaked storage details into callers. `AiContextItemForm`, entity presave, `hook_entity_delete()`, and `AiContextScopeIndexService` contained special cases — especially the `target_entities` DER field — that would repeat for every new scope. This issue completes the scope plugin… ### [[Meta] Add capability-based scope persistence and integration APIs (1.1)](https://git.drupalcode.org/project/ai_context/-/work_items/3586393) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::plan, priority::major, state::postponed, what::planning Description: ## Summary Follow-up to: #3586243+s After the 1.0 boundary-clarification issue lands, complete the scope plugin **lifecycle** contract so callers delegate to `AiContextScopeManager` and optional capability interfaces instead of hardcoding storage, form, index, cleanup, and presentation details. This is the architectural follow-up to the original [#3586243](https://git.drupalcode.org/project/ai_context/-/work_items/3586243) work. It changes *how* scope behavior is expressed and persisted internally. It does **not** introduce the inclusion-mode UX model, agent-subscription behavior changes, … ### [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… ### [Resolve `use_default` provider config for conditional subcontext selection](https://git.drupalcode.org/project/ai_context/-/work_items/3586391) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::bug, priority::normal, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !247 [Issue #3586391: Resolve use_default provider for conditional subcontext.](https://git.drupalcode.org/project/ai_context/-/merge_requests/247) | State: opened | Author: Kristen Pol (kepol), 698 diff lines Description: ## Problem / motivation Follow-up to: - #3586351+s - #3586207+s During real-provider conditional subcontext testing (#3586351+), conditional children were **silently excluded** even though: - **Enable conditional subcontext AI decisions** was on - Published conditional subcontext items existed - The site had a working chat default at **AI → Settings → Default providers** Root cause: `ai_context` stores settings in `ai_context.settings:provider_config`, but runtime code only reads **`provider`** and **`model`**. It ignores **`use_default`**. Install config ships with: ```yaml provider_co… ### [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: unassigned | Labels: 2026Sprint16, category::task, priority::normal, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !246 [Issue #3586390: Document purpose guidance for conditional subcontext.](https://git.drupalcode.org/project/ai_context/-/merge_requests/246) | State: opened | Author: Kristen Pol (kepol), 125 diff lines 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… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [6] summariseModule:ai_translate:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI translate (machine name: ai_translate) Reporting period: last 24h (2026-08-08T05:00:07+00:00 to 2026-08-09T05:00:07+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: Tekla Aivazashvili (aivazashvilit)". 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 translate

            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). ### [Feature: Translation result caching and cross-field deduplication](https://git.drupalcode.org/project/ai_translate/-/work_items/3585529) State: opened | Updated: 2026-08-08 | Author: Christoph Breidert (breidert) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::feature Description: ## Problem/Motivation `ai_translate` re-sends every field to the LLM on every translation run, with no memory of previous translations. This causes two avoidable costs: 1. **Re-translation of unchanged content.** On a re-translation run (fixing one typo, updating a single field), every unchanged field is sent to the LLM again, even though the output would be identical to the previous run. 2. **Repeated translation of identical strings.** Paragraph-heavy entities and Layout Builder pages often contain the same short string in multiple components (shared CTA labels, navigation titles, standard… --- MERGE REQUESTS (24h) --- ### [Issue #3585529: Add translation result caching and cross-field deduplication.](https://git.drupalcode.org/project/ai_translate/-/merge_requests/37) State: opened | Author: Tekla Aivazashvili (aivazashvilit) | Branch: 3585529-translation-caching-1.3 | 835 diff lines Description: ## Description Adds a translation result cache so the same text is not sent to an LLM twice. `TextTranslator::translateContent()` is the single point where text reaches a provider — `src/TextTranslator.php:54` holds the only `translateText()` call, and all five call sites route through it (the "Translate" tab batch, both interface translation paths, and both Drush commands). This MR puts a cache in front of that one seam. It does so with a **decorator**, `CachedTextTranslator`, registered against `ai_translate.text_translator`. `TextTranslator` and `TextTranslatorInterface` are untouched, a… --- COMMITS (24h) --- (none) ======================================================================== ## [7] summariseModule:flowdrop:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: FlowDrop (machine name: flowdrop) Reporting period: last 24h (2026-08-08T05:00:07+00:00 to 2026-08-09T05:00:07+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

              FlowDrop

              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 a requires_confirmation flag to flowdrop_node_type, wired to the existing interrupt/HITL engine](https://git.drupalcode.org/project/flowdrop/-/work_items/3592383) State: opened | Updated: 2026-08-08 | Author: Shibin Das (D34dMan) | Assigned: unassigned | Labels: Description: ## Summary Add an optional `requires_confirmation` flag to the `flowdrop_node_type` config entity. When set, the workflow engine pauses before that tool node fires and asks the operator to confirm — **reusing FlowDrop's existing interrupt / human-in-the-loop (ChoiceNode) machinery** rather than introducing new pause infrastructure. ## Motivation Any agent-builder eventually wants *"pause and ask me before this tool node runs"* for outward-facing or irreversible actions (publish, send mail, external API writes, delete). Today `flowdrop_node_type` has no risk/confirmation field, so downstream… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [8] 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] Fields with optional summary field, have no AI Automator option to fill it as well. (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586550 [2] Update the testing steps docs to 1.4.x (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586463 [3] Issue #3586463: Update testing steps documentation to 1.4.x and add global guardrails test (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1922 [4] [META] AI Demo Site Content + Architecture - Rotterdam (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586678 [5] [META] 2026 AI Inside Roadmap to DrupalCon Rotterdam 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586657 [6] Resolve #3582955 "Write documentation and enable project pages" (tool, MR) — https://git.drupalcode.org/project/tool/-/merge_requests/105 [7] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [8] Apply brand kit colour changes optimistically (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591930 [9] SDC: support selection of image styles or aspect ratio (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3562276 [10] [later phase] Make it possible to translate the Drupal Canvas UI itself (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3457634 [11] Support code component imports contributed by modules to the Canvas import map (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591914 [12] PHPStan rule: needs*() config detectors must not mutate the entity they inspect (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591855 [13] 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 [14] chore(deps): update dependency cspell to v10 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1273 [15] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [16] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [17] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [18] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [19] feat(Brand kit): apply color edits optimistically with rollback (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1484 [20] 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 [21] Add a entity reference prop data shape preview to code editor (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1351 [22] Do not mangle absolute or protocol-relative stylesheet URLs in scopeCss (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1384 [23] Draft: Add Twig filter for image styles (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/536 [24] #3591916 Drain invalidated prop shapes before component generation; narrow the cold-cache guard (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1478 [25] Add PHPStan rule: needs*() config detectors must not mutate the entity they inspect (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1416 [26] 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 [27] Clarify scope eligibility, ranking, and limits in UI help and documentation (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586348 [28] 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 [29] Rename entity bundle and target entity scope plugins for better DX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586276 [30] 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 [31] 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 [32] Redesign selection modes as a nested Minimal / Relevant / Broad ladder and remove match_all (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586394 [33] Create multi-vocabulary taxonomy scope plugin (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586237 [34] Remove max_items context limit and rely on the token budget (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586378 [35] Add context item Priority field and use it for selection ordering (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586376 [36] [Meta] Prepare demo content and demo context items for the CCC to show how it works (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586339 [37] Review and document context selection ranking factors before 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586365 [38] Clarify and stabilize the scope plugin extension boundary for 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586392 [39] [Meta] Prepare CCC for Inside AI Rotterdam demo (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586386 [40] Create CCC recipe for Inside Rotterdam demo (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586385 [41] Complete scope plugin persistence API: manager orchestration, target entity encapsulation, and plugin-driven admin/selection (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586243 [42] [Meta] Add capability-based scope persistence and integration APIs (1.1) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586393 [43] Test current conditional subcontext selection before changing the prompt (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586351 [44] Resolve `use_default` provider config for conditional subcontext selection (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586391 [45] Document Purpose field guidance for conditional subcontext selection (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586390 [46] Issue #3586379: Persist token counts and show budget usage in CCC UI. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/248 [47] Issue #3586392: Clarify and stabilize scope plugin extension boundary for 1.0. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/249 [48] Issue #3586382: Pre-1.0 documentation, trust, and compatibility follow-up. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/253 [49] Issue #3586383: Pre-1.0 context selection reliability and diagnostics follow-up. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/252 [50] Issue #3586375: Install target_entities storage when DER is enabled later. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/251 [51] Issue #3586237: Add multi-vocabulary taxonomy scope plugin. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/250 [52] Issue #3586391: Resolve use_default provider for conditional subcontext. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/247 [53] Issue #3586390: Document purpose guidance for conditional subcontext. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/246 [54] Feature: Translation result caching and cross-field deduplication (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585529 [55] Issue #3585529: Add translation result caching and cross-field deduplication. (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/37 [56] Add a requires_confirmation flag to flowdrop_node_type, wired to the existing interrupt/HITL engine (flowdrop, Issue) — https://git.drupalcode.org/project/flowdrop/-/work_items/3592383 --- MODULE SUMMARIES ---

                  AI (Artificial Intelligence)

                  Activity over the past 24 hours focused on documentation and feature requests. A merge request was opened for Update the testing steps docs to 1.4.x, which aims to bring the testing documentation current with the 1.4.x branch and add global guardrails testing steps. The corresponding MR !1922 is now awaiting review with 60 lines of changes.

                  On the feature request front, an accepted issue was updated regarding Fields with optional summary field, have no AI Automator option to fill it as well. The issue highlights that while AI Automator can populate formatted text fields with summaries, there's currently no option to automatically fill the summary subfield itself. This is marked as a Quick Win and remains unassigned, making it a good candidate for new contributors looking to add functionality to the AI Automator component.

                  How can I help on this project?

                  • Review MR !1922 for the 1.4.x testing documentation updates and verify the global guardrails testing steps are comprehensive.
                  • Pick up the unassigned summary field feature request and implement AI Automator support for optional summary subfields.
                  Contributors: Avinash jha (avinash.jha) ---

                  Drupal AI Initiative

                  Activity this period focused on planning and coordination for DrupalCon Rotterdam 2026. Two meta issues were updated to track progress toward a unified demonstration site that will showcase AI features including search, content review, translation, editor chat, observability, and guardrails working together on multilingual content.

                  The [META] 2026 AI Inside Roadmap to DrupalCon Rotterdam 2026 issue outlines the overall vision: a single deployable Drupal site where visitors can see integrated AI capabilities rather than isolated features, launchable in seconds via Drupal Forge. The [META] AI Demo Site Content + Architecture - Rotterdam issue tracks the demo content and site architecture work, including entity structure and a university corpus separated from configuration.

                  No merge requests were merged and no commits were pushed during this period. The focus remains on scoping and architectural planning for the Rotterdam demonstration.

                  How can I help on this project?

                  Review the Rotterdam roadmap meta issues to understand the demo site requirements and contribute to architectural discussions. Help define the entity structure or prepare demo content for the university corpus that will showcase multilingual AI capabilities.

                  ---

                  Tool API

                  A new merge request was opened to resolve documentation and enable project pages. The MR contains 955 lines of changes and is currently awaiting review. No merge activity occurred during this period, and no issues saw status changes or new discussion.

                  How can I help on this project?

                  Review the pending documentation and project pages MR to help move it toward merge. Testing the changes and providing feedback on documentation clarity would be valuable contributions.

                  Contributors: Marcus Johansson (Marcus_Johansson)

                  ---

                  Drupal Canvas

                  Two critical data-integrity fixes were merged over the weekend. A PHPStan rule now enforces that needs*() detector methods in CanvasConfigUpdater remain side-effect-free; previously, mutations leaked across detectors and silently corrupted the escaped-config audit. The rule was merged via MR !1416. A second fix addresses a cache-key collision bug in StaticPropSource widget building, where core's TypedDataManager cached field-item prototypes using only the root entity type, causing the wrong widget to render when multiple props on a component had different field types.

                  Work continues on several open MRs. Optimistic brand-kit colour updates are under development to eliminate blocking network round trips during edits. A self-healing migration for stored default-relative-url prop sources strips resolver-injected $id keys on read and update, preventing 500s from pre-1.5.1 data. The absolute URL mangling bug in scopeCss() now has test coverage and a fix awaiting review. Module-contributed import-map entries still break CLI push operations, though in-browser editing works.

                  How can I help on this project?

                  Review the open MR for absolute stylesheet URLs in scopeCss or the default-relative-url self-healing migration. Help reproduce the CLI import-map resolution failure with module-contributed specifiers and validate the proposed fix direction.

                  Contributors: **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Christian López Espínola (penyaskito) [1], Lauri Timmanee (lauriii)

                  ---

                  Context Control Center (CCC)

                  Progress concentrated on pre-1.0 stabilization work across multiple fronts. A bug affecting sites that enable Dynamic Entity Reference after installing ai_context was addressed: MR !251 now installs the target_entities field storage when DER is enabled on existing sites, preventing fatal errors on the context item listing page.

                  Work continued on token budget integration. MR !248 implements token count persistence and budget usage indicators in the CCC UI, with badges showing percentage of configured limits. Related refactoring in Remove max_items context limit and rely on the token budget proposes removing the max_items setting entirely in favor of token budgets as the primary limit.

                  Conditional subcontext improvements are in flight. MR !247 fixes provider configuration resolution when use_default is set, preventing silent exclusion of conditional children. MR !246 adds documentation guiding authors to write effective Purpose field text for model decision-making.

                  API boundary work includes MR !249 to clarify the scope plugin extension contract before 1.0. Feature additions include MR !250 for a multi-vocabulary taxonomy scope plugin and design discussion on redesigning selection modes as a nested Minimal/Relevant/Broad ladder. Pre-1.0 documentation and diagnostics improvements are staged in MR !253 and MR !252.

                  How can I help on this project?

                  Review MR !248 for token budget UI implementation or MR !251 for DER field storage fixes. Test conditional subcontext selection with real AI providers to validate Purpose-based filtering.

                  Contributors: Kristen Pol (kepol), Emma Horrell (emma-horrell), Aidan Foster (aidanfoster)

                  ---

                  AI translate

                  A new merge request was opened to address Translation result caching and cross-field deduplication. The proposed implementation introduces a decorator pattern around TextTranslator, adding a cache layer at the single choke point where all translation requests pass through the translateText() call in TextTranslator::translateContent(). The CachedTextTranslator decorator is registered against ai_translate.text_translator, leaving TextTranslator and TextTranslatorInterface unchanged to maintain backward compatibility. This approach targets two cost inefficiencies: re-translation of unchanged content on subsequent runs and duplicate translation of identical strings that appear in multiple fields or paragraph components within the same entity.

                  The caching merge request spans 835 lines of diff and is currently open for review. No commits were pushed or merges completed during this period.

                  How can I help on this project?

                  • Review the open caching and deduplication MR, testing the decorator pattern implementation and verifying cache invalidation logic.
                  • Test the cache behavior with paragraph-heavy entities and Layout Builder pages to validate deduplication effectiveness across repeated strings.

                  Contributors: Tekla Aivazashvili (aivazashvilit)

                  ---

                  FlowDrop

                  A new issue was opened proposing the addition of a requires_confirmation flag to the flowdrop_node_type config entity. The Add a requires_confirmation flag to flowdrop_node_type, wired to the existing interrupt/HITL engine issue describes leveraging FlowDrop's existing interrupt and human-in-the-loop machinery (ChoiceNode) to pause workflow execution before specific tool nodes fire. This would allow operators to confirm actions before execution of outward-facing or irreversible operations such as publishing content, sending mail, or making external API calls, without requiring new pause infrastructure.

                  No merge requests were opened or merged during the reporting period, and no commits were pushed.

                  How can I help on this project?

                  • Pick up the requires_confirmation flag issue, which is currently unassigned with no merge request, and begin implementing the proposed config schema changes and ChoiceNode integration.
                  • Review the existing interrupt and human-in-the-loop machinery to identify integration points for the confirmation feature.
                  ======================================================================== ## [9] factcheck:tldr:developer ======================================================================== Layer-1 corrections: 1 Judge flags: 5 ======================================================================== ## [10] 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-08T05:00:07+00:00 to 2026-08-09T05:00:07+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: Avinash jha (avinash.jha)". 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). ### [Fields with optional summary field, have no AI Automator option to fill it as well.](https://git.drupalcode.org/project/ai/-/work_items/3586550) State: opened | Updated: 2026-08-08 | Author: ro-no-lo | Assigned: unassigned | Labels: Quick Win, category::feature, priority::minor, state::accepted Description: A "formated text, long, with summary" field can be filled via AI Automator, which in my case functions very nicely. (Thank you AI team). But we noticed, that the "summary" which comes with that field is left empty. I know that there are display options like "smart trim" or so, but having the AI to summarize a huge text field into one or two sentences is not possible. We will work around that by telling AI to create a summary within the main field and add `....` and extract it via post-processing or so. But a checkbox, with a sub-prompt for that extra-field would be nice. Contextual inform… ### [Update the testing steps docs to 1.4.x](https://git.drupalcode.org/project/ai/-/work_items/3586463) State: opened | Updated: 2026-08-08 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: category::task, priority::normal, state::needs review Description: ## Description Update the doc: https://project.pages.drupalcode.org/ai/1.4.x/contribute/testing/full_patch_test/ - To have 1.4.x based testing steps - more importantly Adding global guardrails test - Find out anything more changes in 1.4.x which should be added. Check the diff. ## Tasks * [ ] ## Acceptance criteria * ## Testing instructions *(added by implementor before review)* 1. ## Related issues *(optional)* --- MERGE REQUESTS (24h) --- ### [Issue #3586463: Update testing steps documentation to 1.4.x and add global guardrails test](https://git.drupalcode.org/project/ai/-/merge_requests/1922) State: opened | Author: Avinash jha (avinash.jha) | Branch: 3586463-update-the-testing-steps-docs-to-14x | 60 diff lines --- COMMITS (24h) --- (none) ======================================================================== ## [11] 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-08T05:00:07+00:00 to 2026-08-09T05:00:07+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). ### [[META] AI Demo Site Content + Architecture - Rotterdam](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586678) State: opened | Updated: 2026-08-08 | Author: Aidan Foster (aidanfoster) | Assigned: Aidan Foster (aidanfoster) | Labels: AI Initiative Sprint Description: Area meta issue for "Demo content and site", area 1 of {#3586657} ## Scope The university corpus exists in the demo content recipe as reviewable source files, separated from configuration. Site structure is Home, Demo, Courses, Staff, News and a small set of standard pages. The Demo section carries one page per area, written by that area's lead and added to the corpus by the demo team. The whole site installs from the starter template as a single Drupal Forge template launch, with no signup form in front of it. ## Must-have for Rotterdam - Entity architecture and corpus scope agreed. - Con… ### [[META] 2026 AI Inside Roadmap to DrupalCon Rotterdam 2026](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586657) State: opened | Updated: 2026-08-08 | Author: Christoph Breidert (breidert) | Assigned: Christoph Breidert (breidert) | Labels: AI Initiative, ai::inside, roadmap Description: ## Why this roadmap exists At DrupalCon Rotterdam at the end of September we want to show a single Drupal site where AI Search, AI content review, AI translation, an editor-facing chat, observability and guardrails all work together on real, multilingual content. Rather than describing these features one by one, we let people see them working together on one site, and we let anyone launch that site for themselves in a few seconds on Drupal Forge. Most of these features already work today. The gap is almost never the core capability. The gap is that we have not yet shipped the recipes and dem… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [12] summariseModule:tool:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Tool API (machine name: tool) Reporting period: last 24h (2026-08-08T05:00:07+00:00 to 2026-08-09T05:00:07+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: Marcus Johansson (Marcus_Johansson)". 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

                      Tool API

                      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). (none) --- MERGE REQUESTS (24h) --- ### [Resolve #3582955 "Write documentation and enable project pages"](https://git.drupalcode.org/project/tool/-/merge_requests/105) State: opened | Author: Marcus Johansson (Marcus_Johansson) | Branch: 3582955-write-documentation-and-enable-project-pages | 955 diff lines Description: Closes #3582955 --- COMMITS (24h) --- (none) ======================================================================== ## [13] 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-08T05:00:07+00:00 to 2026-08-09T05:00:07+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_cb443e60680723bba08a5351bf595251), Christian López Espínola (penyaskito) [1], Lauri Timmanee (lauriii)". 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-09 | 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… ### [Apply brand kit colour changes optimistically](https://git.drupalcode.org/project/canvas/-/work_items/3591930) State: opened | Updated: 2026-08-08 | Author: Lauri Timmanee (lauriii) | Assigned: unassigned | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1484 [feat(Brand kit): apply color edits optimistically with rollback](https://git.drupalcode.org/project/canvas/-/merge_requests/1484) | State: opened | Author: Lauri Timmanee (lauriii), 1583 diff lines Description: ## Overview Every brand kit colour write blocks on the network before anything visible changes. Saving an edit awaits the PATCH, and only when that resolves does the resulting tag invalidation refetch the brand kit and repaint the row — two serialised round trips, with the form held open on a spinner throughout. To reproduce: open the brand kit panel, edit a color, and save. The swatch and the form both wait for the server. Three related defects sit in the same path. Color mutations invalidate only the `BrandKits` tags, but `useBrandKitColors` prefers the auto-save draft's colors, so while … ### [SDC: support selection of image styles or aspect ratio](https://git.drupalcode.org/project/canvas/-/work_items/3562276) State: opened | Updated: 2026-08-08 | Author: drupalbot | Assigned: unassigned | Labels: DX (Developer Experience), Needs change record, Needs manual testing, category::feature Description: >>> [!note] Migrated issue Reported by: [tijanam](https://www.drupal.org/user/3843197) Related to !536 >>> Overview The canvas image solution does not allow fine control over image sizes, ratios or crops which can be achieved in Drupal with existing tools. Many sites are already using image styles and/or image display modes and focal point, so it would make sense for these to be supported in some way to allow an easy transition to canvas or to allow us to use canvas on sections of existing sites. Proposed resolution User interface changes > Related issue: [Issue #3532718](https://www.dr… ### [[later phase] Make it possible to translate the Drupal Canvas UI itself](https://git.drupalcode.org/project/canvas/-/work_items/3457634) State: opened | Updated: 2026-08-08 | Author: drupalbot | Assigned: unassigned | Labels: category::task, pageBuilder, priority::major, state::accepted Description: >>> [!note] Migrated issue Reported by: [lauriii](https://www.drupal.org/user/1078742) Related to !72 >>> Problem/Motivation We should add support for translating the Drupal Canvas UI itself to other languages, to make sure that users who are not using Drupal in English, can use Drupal Canvas in their local language. Proposed resolution Use Drupal's built in UI translation system: https://www.drupal.org/docs/8/api/translation-api/overview#s-translation-in-javascript-files ### [Support code component imports contributed by modules to the Canvas import map](https://git.drupalcode.org/project/canvas/-/work_items/3591914) State: opened | Updated: 2026-08-08 | Author: Lauri Timmanee (lauriii) | Assigned: unassigned | Labels: Needs review Description: A module can add entries to the Canvas import map through `hook_canvas_importmap_alter()`. A code component that imports such an entry works in the in-browser code editor, which compiles the source and lets the browser resolve the specifier at runtime, but it cannot be pushed with the CLI. To reproduce: implement `hook_canvas_importmap_alter()` in a module to add a specifier such as `my_module/useThing`, then import it from a code component and run `canvas push`. The build fails with `Could not resolve entry module "my_module/useThing"` and nothing is uploaded. `canvas validate` passes, so th… ### [PHPStan rule: needs*() config detectors must not mutate the entity they inspect](https://git.drupalcode.org/project/canvas/-/work_items/3591855) State: closed | Updated: 2026-08-08 | Author: Christian López Espínola (penyaskito) | Assigned: Adam G-H (phenaproxima) | Labels: DX (Developer Experience), PHPStan, category::task, data integrity Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1416 [Add PHPStan rule: needs*() config detectors must not mutate the entity they inspect](https://git.drupalcode.org/project/canvas/-/merge_requests/1416) | State: merged 2026-08-08 | Author: Christian López Espínola (penyaskito), 241 diff lines Description: ### Overview Canvas's data-health "escaped config" check (`Doctor::runUpdatesEscapedConfigCheck()`) reflects and runs every `needs*()` detector on `CanvasConfigUpdater` against a single, shared, loaded config entity to decide whether that config has a pending data-model migration. These detectors must be side-effect-free: if one mutates the entity it is passed, the change leaks into every detector that runs after it on the same entity, silently corrupting the audit's result. Today that contract is enforced only by convention and review. It has already been violated twice in practice: one det… ### [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::fixed 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… --- 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… ### [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 | 1306 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… ### [Add a entity reference prop data shape preview to code editor](https://git.drupalcode.org/project/canvas/-/merge_requests/1351) State: opened | Author: Lauri Timmanee (lauriii) | Branch: 3591805-code-editor-developers-cannot-see-what-a-content-entity-reference-prop-delivers-to-their-component | 3523 diff lines Description: AI was used to accelerate with the development of this MR. ## Testing instructions * [ ] Create a new Code Component * [ ] Add Entity Reference Prop to the component * [ ] Select Content Type + Fields * [ ] Confirm there is an approximation of the shape that's loaded after selecting fields * [ ] Select a preview entity * [ ] Confirm there is an actual API response displayed using the preview entity Closes #3591805 ### [Do not mangle absolute or protocol-relative stylesheet URLs in scopeCss](https://git.drupalcode.org/project/canvas/-/merge_requests/1384) State: opened | Author: Lauri Timmanee (lauriii) | Branch: 3580207-error-with-cdn | 150 diff lines Description: Fixes https://www.drupal.org/i/3580207 . scopeCss() rewrote every stylesheet href as if it were relative, corrupting absolute (https://cdn.example.com/...) and protocol-relative (//cdn.example.com/...) URLs when a code component's styles were loaded from a CDN. The fix leaves absolute and protocol-relative hrefs untouched and only resolves genuinely relative ones. Covered by a new vitest unit test (ui/tests/vitest/unit/scope-css-fetch-href.test.js, 3 cases: absolute, protocol-relative, relative). Verified green locally and on the GitHub CI mirror. Closes #3580207 ### [Draft: Add Twig filter for image styles](https://git.drupalcode.org/project/canvas/-/merge_requests/536) State: opened | Author: Lauri Timmanee (lauriii) | Branch: 3562276-support-selection-of | 1298 diff lines Description: Closes #3562276 ### [#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) | Branch: 3591916-component-version-hashes-go-stale-on-single-process-installs | 476 diff lines Description: Closes #3591916 Depends on !1475 — this branch is based on it and includes its two commits; only `0f53719b6` and `8316a7023` are new here. The array-prop test coverage below needs !1475's fix to pass. ## What this MR does Two changes to `PersistentPropShapeRepository`, one per commit: 1. **Drain invalidated prop shapes before generating components.** New public `resolveInvalidatedPropShapes()` processes the queued re-resolutions; it is called at the three full-regeneration triggers (`RecipeSubscriber::ensureComponentsExist()`, `hook_rebuild()`, `hook_modules_installed()`), so the regenerat… --- COMMITS (24h) --- - [82b5209a](https://git.drupalcode.org/project/canvas/-/commit/82b5209a4c2875b71e4ba9ada031c894f617b241) chore(Project management): #3591855 PHPStan rule: needs*() config detectors must not mutate the entity they inspect — Christian López Espínola (2026-08-08T09:34:25.000+00:00) ======================================================================== ## [14] 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-08T05:00:07+00:00 to 2026-08-09T05:00:07+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)". 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). ### [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-09 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, category::task, priority::major, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !248 [Issue #3586379: Persist token counts and show budget usage in CCC UI.](https://git.drupalcode.org/project/ai_context/-/merge_requests/248) | State: opened | Author: Kristen Pol (kepol), 3644 diff lines 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. **Implementation:** [MR !248](https://git.drupalcode.org/project/ai_context/-/merge_requests/248) on branch … ### [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-09 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, 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… ### [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-09 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, category::task, priority::normal, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !253 [Issue #3586382: Pre-1.0 documentation, trust, and compatibility follow-up.](https://git.drupalcode.org/project/ai_context/-/merge_requests/253) | State: opened | Author: Kristen Pol (kepol), 571 diff lines 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.… ### [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-09 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint12, 2026Sprint13, 2026Sprint14, 2026Sprint15 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… ### [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-09 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::task, needs manual testing, priority::major Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !252 [Issue #3586383: Pre-1.0 context selection reliability and diagnostics follow-up.](https://git.drupalcode.org/project/ai_context/-/merge_requests/252) | State: opened | Author: Kristen Pol (kepol), 1013 diff lines 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… ### [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-09 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::bug, priority::normal, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !251 [Issue #3586375: Install target_entities storage when DER is enabled later.](https://git.drupalcode.org/project/ai_context/-/merge_requests/251) | State: opened | Author: Kristen Pol (kepol), 452 diff lines 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… ### [Redesign selection modes as a nested Minimal / Relevant / Broad ladder and remove match_all](https://git.drupalcode.org/project/ai_context/-/work_items/3586394) State: opened | Updated: 2026-08-09 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, category::feature, needs ux review, priority::major Description: ## Problem/motivation Follow-up to: #3586237+s Agent context selection is confusing today because the two selection modes encode mechanisms instead of user intent, and they are not supersets of each other: - **Minimal** (default) with **no subscriptions** injects almost nothing except Global, Always include, and **Target Entity** auto-matches. New agents silently get no situational context. - **Subscriptions** are required to inject Use Case, Context Tags, Taxonomy Terms, Entity Bundle, etc. — and an **empty scope on an item counts as a full subscription match**, so unscoped "gener… ### [Create multi-vocabulary taxonomy scope plugin](https://git.drupalcode.org/project/ai_context/-/work_items/3586237) State: opened | Updated: 2026-08-09 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::feature, priority::normal, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !250 [Issue #3586237: Add multi-vocabulary taxonomy scope plugin.](https://git.drupalcode.org/project/ai_context/-/merge_requests/250) | State: opened | Author: Kristen Pol (kepol), 1714 diff lines 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 is 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, bar… ### [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-09 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol), Aidan Foster (aidanfoster), Emma Horrell (emma-horrell) | Labels: 2026Sprint16, category::task, priority::normal, sprint candidate 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… ### [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-09 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::feature, priority::major, sprint candidate 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… ### [[Meta] Prepare demo content and demo context items for the CCC to show how it works](https://git.drupalcode.org/project/ai_context/-/work_items/3586339) State: opened | Updated: 2026-08-08 | Author: Emma Horrell (emma-horrell) | Assigned: Emma Horrell (emma-horrell) | Labels: 2026Sprint15, AI Initiative Sprint, AI UX, ai::inside Description: ## Problem/motivation _**Note that if we at least get the code with one draft example merged in for beta4 that we can add the additional sample context in rc1 since it would be "documentation" in a sense.**_ Follow-up to: - #3586335 - #3586279 A new Context Control Center (CCC) installation is empty. People unfamiliar with CCC terminology and structure cannot easily see how source content, context items, scopes and consumer subscriptions work together. Provide realistic, optional demo data that lets people explore a complete CCC workflow before configuring it for their own organisation. … ### [Review and document context selection ranking factors before 1.0](https://git.drupalcode.org/project/ai_context/-/work_items/3586365) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task 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… ### [Clarify and stabilize the scope plugin extension boundary for 1.0](https://git.drupalcode.org/project/ai_context/-/work_items/3586392) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, category::task, priority::normal, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !249 [Issue #3586392: Clarify and stabilize scope plugin extension boundary for 1.0.](https://git.drupalcode.org/project/ai_context/-/merge_requests/249) | State: opened | Author: Kristen Pol (kepol), 989 diff lines Description: ## Summary Follow-up to: #3586243+s Before 1.0, lock down what custom scope authors and contrib can safely depend on, without landing the full persistence/orchestration refactor from [#3586243](https://git.drupalcode.org/project/ai_context/-/work_items/3586243). This issue is documentation and internal seam-setting only: no new public interface methods and no user-visible behavior changes. The current scope plugin API is already broad enough for map-backed custom scopes, but docs and code send mixed signals. The scope manager is marked `@internal` while developer docs show injection patter… ### [[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, category::feature, must have, priority::major 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 ### [Complete scope plugin persistence API: manager orchestration, target entity encapsulation, and plugin-driven admin/selection](https://git.drupalcode.org/project/ai_context/-/work_items/3586243) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint11, 2026Sprint16, category::feature, must have Description: ## Description _**Note that this needs to be rethought to minimize the impact on 1.0 and figure out what can happen in 1.1 instead.**_ Blocked by: #3586295+s ### Summary The scope plugin API was asymmetric: read and match were abstracted, but write, clear, index, cleanup, form integration, and save-time validation leaked storage details into callers. `AiContextItemForm`, entity presave, `hook_entity_delete()`, and `AiContextScopeIndexService` contained special cases — especially the `target_entities` DER field — that would repeat for every new scope. This issue completes the scope plugin… ### [[Meta] Add capability-based scope persistence and integration APIs (1.1)](https://git.drupalcode.org/project/ai_context/-/work_items/3586393) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::plan, priority::major, state::postponed, what::planning Description: ## Summary Follow-up to: #3586243+s After the 1.0 boundary-clarification issue lands, complete the scope plugin **lifecycle** contract so callers delegate to `AiContextScopeManager` and optional capability interfaces instead of hardcoding storage, form, index, cleanup, and presentation details. This is the architectural follow-up to the original [#3586243](https://git.drupalcode.org/project/ai_context/-/work_items/3586243) work. It changes *how* scope behavior is expressed and persisted internally. It does **not** introduce the inclusion-mode UX model, agent-subscription behavior changes, … ### [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… ### [Resolve `use_default` provider config for conditional subcontext selection](https://git.drupalcode.org/project/ai_context/-/work_items/3586391) State: opened | Updated: 2026-08-08 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::bug, priority::normal, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !247 [Issue #3586391: Resolve use_default provider for conditional subcontext.](https://git.drupalcode.org/project/ai_context/-/merge_requests/247) | State: opened | Author: Kristen Pol (kepol), 698 diff lines Description: ## Problem / motivation Follow-up to: - #3586351+s - #3586207+s During real-provider conditional subcontext testing (#3586351+), conditional children were **silently excluded** even though: - **Enable conditional subcontext AI decisions** was on - Published conditional subcontext items existed - The site had a working chat default at **AI → Settings → Default providers** Root cause: `ai_context` stores settings in `ai_context.settings:provider_config`, but runtime code only reads **`provider`** and **`model`**. It ignores **`use_default`**. Install config ships with: ```yaml provider_co… ### [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: unassigned | Labels: 2026Sprint16, category::task, priority::normal, sprint candidate Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !246 [Issue #3586390: Document purpose guidance for conditional subcontext.](https://git.drupalcode.org/project/ai_context/-/merge_requests/246) | State: opened | Author: Kristen Pol (kepol), 125 diff lines 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… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [15] summariseModule:ai_translate:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI translate (machine name: ai_translate) Reporting period: last 24h (2026-08-08T05:00:07+00:00 to 2026-08-09T05:00:07+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: Tekla Aivazashvili (aivazashvilit)". 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 translate

                            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). ### [Feature: Translation result caching and cross-field deduplication](https://git.drupalcode.org/project/ai_translate/-/work_items/3585529) State: opened | Updated: 2026-08-08 | Author: Christoph Breidert (breidert) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::feature Description: ## Problem/Motivation `ai_translate` re-sends every field to the LLM on every translation run, with no memory of previous translations. This causes two avoidable costs: 1. **Re-translation of unchanged content.** On a re-translation run (fixing one typo, updating a single field), every unchanged field is sent to the LLM again, even though the output would be identical to the previous run. 2. **Repeated translation of identical strings.** Paragraph-heavy entities and Layout Builder pages often contain the same short string in multiple components (shared CTA labels, navigation titles, standard… --- MERGE REQUESTS (24h) --- ### [Issue #3585529: Add translation result caching and cross-field deduplication.](https://git.drupalcode.org/project/ai_translate/-/merge_requests/37) State: opened | Author: Tekla Aivazashvili (aivazashvilit) | Branch: 3585529-translation-caching-1.3 | 835 diff lines Description: ## Description Adds a translation result cache so the same text is not sent to an LLM twice. `TextTranslator::translateContent()` is the single point where text reaches a provider — `src/TextTranslator.php:54` holds the only `translateText()` call, and all five call sites route through it (the "Translate" tab batch, both interface translation paths, and both Drush commands). This MR puts a cache in front of that one seam. It does so with a **decorator**, `CachedTextTranslator`, registered against `ai_translate.text_translator`. `TextTranslator` and `TextTranslatorInterface` are untouched, a… --- COMMITS (24h) --- (none) ======================================================================== ## [16] summariseModule:flowdrop:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: FlowDrop (machine name: flowdrop) Reporting period: last 24h (2026-08-08T05:00:07+00:00 to 2026-08-09T05:00:07+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

                              FlowDrop

                              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 a requires_confirmation flag to flowdrop_node_type, wired to the existing interrupt/HITL engine](https://git.drupalcode.org/project/flowdrop/-/work_items/3592383) State: opened | Updated: 2026-08-08 | Author: Shibin Das (D34dMan) | Assigned: unassigned | Labels: Description: ## Summary Add an optional `requires_confirmation` flag to the `flowdrop_node_type` config entity. When set, the workflow engine pauses before that tool node fires and asks the operator to confirm — **reusing FlowDrop's existing interrupt / human-in-the-loop (ChoiceNode) machinery** rather than introducing new pause infrastructure. ## Motivation Any agent-builder eventually wants *"pause and ask me before this tool node runs"* for outward-facing or irreversible actions (publish, send mail, external API writes, delete). Today `flowdrop_node_type` has no risk/confirmation field, so downstream… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [17] 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] Fields with optional summary field, have no AI Automator option to fill it as well. (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586550 [2] Update the testing steps docs to 1.4.x (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586463 [3] Issue #3586463: Update testing steps documentation to 1.4.x and add global guardrails test (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1922 [4] [META] AI Demo Site Content + Architecture - Rotterdam (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586678 [5] [META] 2026 AI Inside Roadmap to DrupalCon Rotterdam 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586657 [6] Resolve #3582955 "Write documentation and enable project pages" (tool, MR) — https://git.drupalcode.org/project/tool/-/merge_requests/105 [7] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [8] Apply brand kit colour changes optimistically (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591930 [9] SDC: support selection of image styles or aspect ratio (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3562276 [10] [later phase] Make it possible to translate the Drupal Canvas UI itself (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3457634 [11] Support code component imports contributed by modules to the Canvas import map (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591914 [12] PHPStan rule: needs*() config detectors must not mutate the entity they inspect (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591855 [13] 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 [14] chore(deps): update dependency cspell to v10 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1273 [15] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [16] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [17] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [18] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [19] feat(Brand kit): apply color edits optimistically with rollback (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1484 [20] 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 [21] Add a entity reference prop data shape preview to code editor (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1351 [22] Do not mangle absolute or protocol-relative stylesheet URLs in scopeCss (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1384 [23] Draft: Add Twig filter for image styles (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/536 [24] #3591916 Drain invalidated prop shapes before component generation; narrow the cold-cache guard (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1478 [25] Add PHPStan rule: needs*() config detectors must not mutate the entity they inspect (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1416 [26] 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 [27] Clarify scope eligibility, ranking, and limits in UI help and documentation (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586348 [28] 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 [29] Rename entity bundle and target entity scope plugins for better DX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586276 [30] 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 [31] 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 [32] Redesign selection modes as a nested Minimal / Relevant / Broad ladder and remove match_all (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586394 [33] Create multi-vocabulary taxonomy scope plugin (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586237 [34] Remove max_items context limit and rely on the token budget (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586378 [35] Add context item Priority field and use it for selection ordering (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586376 [36] [Meta] Prepare demo content and demo context items for the CCC to show how it works (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586339 [37] Review and document context selection ranking factors before 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586365 [38] Clarify and stabilize the scope plugin extension boundary for 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586392 [39] [Meta] Prepare CCC for Inside AI Rotterdam demo (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586386 [40] Create CCC recipe for Inside Rotterdam demo (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586385 [41] Complete scope plugin persistence API: manager orchestration, target entity encapsulation, and plugin-driven admin/selection (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586243 [42] [Meta] Add capability-based scope persistence and integration APIs (1.1) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586393 [43] Test current conditional subcontext selection before changing the prompt (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586351 [44] Resolve `use_default` provider config for conditional subcontext selection (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586391 [45] Document Purpose field guidance for conditional subcontext selection (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586390 [46] Issue #3586379: Persist token counts and show budget usage in CCC UI. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/248 [47] Issue #3586392: Clarify and stabilize scope plugin extension boundary for 1.0. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/249 [48] Issue #3586382: Pre-1.0 documentation, trust, and compatibility follow-up. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/253 [49] Issue #3586383: Pre-1.0 context selection reliability and diagnostics follow-up. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/252 [50] Issue #3586375: Install target_entities storage when DER is enabled later. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/251 [51] Issue #3586237: Add multi-vocabulary taxonomy scope plugin. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/250 [52] Issue #3586391: Resolve use_default provider for conditional subcontext. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/247 [53] Issue #3586390: Document purpose guidance for conditional subcontext. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/246 [54] Feature: Translation result caching and cross-field deduplication (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585529 [55] Issue #3585529: Add translation result caching and cross-field deduplication. (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/37 [56] Add a requires_confirmation flag to flowdrop_node_type, wired to the existing interrupt/HITL engine (flowdrop, Issue) — https://git.drupalcode.org/project/flowdrop/-/work_items/3592383 --- MODULE SUMMARIES ---

                                  AI (Artificial Intelligence)

                                  Development activity this week focused on documentation and user experience improvements for the AI module.

                                  A merge request was opened to update the project's testing documentation to reflect the 1.4.x release series, including new coverage for global guardrails testing. This work ensures quality assurance processes stay current with the module's evolving feature set.

                                  A feature request was accepted to expand the AI Automator capability for formatted text fields. Currently, when automatically filling long text fields with summaries, the dedicated summary sub-field remains empty. This limitation means content editors cannot benefit from AI-generated summaries that appear in listings or previews without manual post-processing workarounds. The request has been tagged as a quick win, indicating it may be relatively straightforward to implement and would provide immediate value to content teams using the module.

                                  How can I help on this project?

                                  Contributors: Avinash jha (avinash.jha)

                                  ---

                                  Drupal AI Initiative

                                  The AI Initiative continued planning work toward DrupalCon Rotterdam in late September 2026. The goal remains delivering a demonstration site where multiple AI capabilities work together on a single platform, including AI-powered search, content review, translation, and editor chat tools. This site will be deployable in seconds on Drupal Forge, allowing potential adopters to experience integrated AI features immediately rather than reading about them in isolation.

                                  Planning discussions continued around the demonstration content and site architecture. The focus is on creating a university-themed site with realistic multilingual content that showcases how AI features operate in a production-like environment. The site structure and content corpus are being finalized to support the Rotterdam demonstration timeline.

                                  No code was merged or committed during this period. Work remains in the planning and coordination phase as the team prepares for the conference deadline.

                                  How can I help on this project?

                                  • Ensure dedicated resources are available to execute on the demonstration site build and content creation ahead of the September deadline.
                                  • Coordinate with DrupalCon Rotterdam organizers to secure prominent demonstration opportunities for the integrated AI showcase.
                                  ---

                                  Tool API

                                  A new merge request was opened to add documentation and enable project pages for the Tool API module. This work will make it easier for potential users to understand what the module does and how to use it, improving accessibility and adoption. Project pages are a standard way to communicate a module's purpose, features, and status to the Drupal community.

                                  No issues were updated and no code was committed during this period. The documentation work is still in progress and has not yet been merged.

                                  How can I help on this project?

                                  • Prioritize review and approval of the documentation work to unblock the launch of project pages and improve discoverability.
                                  • Consider whether additional communication or marketing support is needed once documentation is published to drive awareness.

                                  Contributors: Marcus Johansson (Marcus_Johansson)

                                  ---

                                  Drupal Canvas

                                  Development continues across data integrity, performance, and developer experience. Two important fixes were merged this period. A new automated check now prevents configuration health detectors from accidentally corrupting the data they inspect—an issue that had occurred twice before and was previously caught only through code review. A second fix resolved a caching collision that caused widget-building to fail unpredictably depending on the order in which component properties were processed.

                                  Work is underway to improve the editing experience for brand kit colours by applying changes immediately in the interface while the server saves in the background, eliminating the current delay where users wait for two network round trips before seeing their edits. Separately, progress continues on adding support for Drupal image styles and preview data within the code editor, both aimed at making it easier for developers to work with existing Drupal content and assets. A self-healing mechanism is being developed to automatically repair data written before version 1.5.1 when it is read, avoiding errors that currently block layout rendering and updates.

                                  Dependency updates remain in progress through the automated dashboard.

                                  How can I help on this project?

                                  • Review and approve the brand kit colour optimisation work to improve perceived responsiveness during editing.
                                  • Prioritise decisions on image style integration to clarify the migration path for existing Drupal sites adopting Canvas.

                                  Contributors: **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Christian López Espínola (penyaskito) [1], Lauri Timmanee (lauriii)

                                  ---

                                  Context Control Center (CCC)

                                  The Context Control Center focused this period on preparing for a stable 1.0 release, with significant planning around user experience improvements, reliability, and demo readiness. Work concentrated on clarifying how context items are selected and prioritized, improving budget visibility, and ensuring the module is easy to understand for new users.

                                  Several merge requests were opened to improve how the system communicates token usage to site administrators. Work is underway to persist token counts and display budget usage in the interface, helping administrators understand how close they are to configured limits. Related efforts aim to remove the separate item count limit in favor of relying solely on token budgets, simplifying configuration.

                                  Planning advanced on making the system easier to understand. Work began on clarifying scope matching and ranking documentation, and on redesigning selection modes to better reflect user intent rather than technical mechanisms. A priority field for context items is being added to give editors clearer control over selection ordering.

                                  Preparations continue for an upcoming demonstration, including demo content development and a potential installable recipe to showcase functionality.

                                  How can I help on this project?

                                  • Allocate UX review capacity for pending design decisions on selection modes and scope documentation to unblock finalization.
                                  • Confirm scope and timeline expectations for the Rotterdam demo to ensure development priorities align with presentation needs.

                                  Contributors: Kristen Pol (kepol), Emma Horrell (emma-horrell), Aidan Foster (aidanfoster)

                                  ---

                                  AI translate

                                  The AI translate module made significant progress on cost optimization during the reporting period. A merge request introducing translation result caching and cross-field deduplication was opened to address a major efficiency gap: the module currently re-sends every piece of content to AI language models on each translation run, even when nothing has changed.

                                  This work targets two costly patterns. First, when a single field is updated, all unchanged fields are re-translated unnecessarily. Second, repeated text across components—such as shared button labels or navigation titles—is translated multiple times rather than once. The proposed caching layer sits at the single point where content is sent to AI providers, ensuring the same text is never translated twice. This should meaningfully reduce API costs for sites with paragraph-heavy pages or Layout Builder configurations.

                                  The change is under review and has not yet been merged. Once integrated, it will deliver immediate cost savings for organizations running frequent translation updates.

                                  How can I help on this project?

                                  • Prioritize code review resources to evaluate and merge the caching implementation, which is ready but awaiting approval.
                                  • Identify pilot customers with high translation volumes who could validate cost savings before wider rollout.

                                  Contributors: Tekla Aivazashvili (aivazashvilit)

                                  ---

                                  FlowDrop

                                  A new issue was opened to add a confirmation step for certain workflow actions. The Add a requires_confirmation flag to flowdrop_node_type, wired to the existing interrupt/HITL engine proposal would allow administrators to mark specific automated actions as requiring human approval before they execute. This is particularly relevant for high-risk operations such as publishing content, sending communications, or deleting data, where an accidental or erroneous automated action could have significant consequences. The approach reuses existing workflow pause capabilities rather than building new infrastructure. The issue remains open with no commits or merges completed during this period.

                                  How can I help on this project?

                                  • Confirm whether automated confirmation workflows are a priority for your use cases and provide guidance on which actions should require approval by default.
                                  • Allocate development resources to begin implementation if this capability aligns with your risk management requirements.
                                  ======================================================================== ## [18] factcheck:tldr:executive ======================================================================== Layer-1 corrections: 0 Judge flags: 2 ======================================================================== ## [19] 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] Fields with optional summary field, have no AI Automator option to fill it as well. (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586550 [2] Update the testing steps docs to 1.4.x (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586463 [3] Issue #3586463: Update testing steps documentation to 1.4.x and add global guardrails test (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1922 [4] [META] AI Demo Site Content + Architecture - Rotterdam (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586678 [5] [META] 2026 AI Inside Roadmap to DrupalCon Rotterdam 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586657 [6] Resolve #3582955 "Write documentation and enable project pages" (tool, MR) — https://git.drupalcode.org/project/tool/-/merge_requests/105 [7] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [8] Apply brand kit colour changes optimistically (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591930 [9] SDC: support selection of image styles or aspect ratio (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3562276 [10] [later phase] Make it possible to translate the Drupal Canvas UI itself (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3457634 [11] Support code component imports contributed by modules to the Canvas import map (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591914 [12] PHPStan rule: needs*() config detectors must not mutate the entity they inspect (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591855 [13] 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 [14] chore(deps): update dependency cspell to v10 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1273 [15] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [16] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [17] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [18] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [19] feat(Brand kit): apply color edits optimistically with rollback (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1484 [20] 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 [21] Add a entity reference prop data shape preview to code editor (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1351 [22] Do not mangle absolute or protocol-relative stylesheet URLs in scopeCss (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1384 [23] Draft: Add Twig filter for image styles (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/536 [24] #3591916 Drain invalidated prop shapes before component generation; narrow the cold-cache guard (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1478 [25] Add PHPStan rule: needs*() config detectors must not mutate the entity they inspect (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1416 [26] 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 [27] Clarify scope eligibility, ranking, and limits in UI help and documentation (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586348 [28] 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 [29] Rename entity bundle and target entity scope plugins for better DX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586276 [30] 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 [31] 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 [32] Redesign selection modes as a nested Minimal / Relevant / Broad ladder and remove match_all (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586394 [33] Create multi-vocabulary taxonomy scope plugin (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586237 [34] Remove max_items context limit and rely on the token budget (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586378 [35] Add context item Priority field and use it for selection ordering (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586376 [36] [Meta] Prepare demo content and demo context items for the CCC to show how it works (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586339 [37] Review and document context selection ranking factors before 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586365 [38] Clarify and stabilize the scope plugin extension boundary for 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586392 [39] [Meta] Prepare CCC for Inside AI Rotterdam demo (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586386 [40] Create CCC recipe for Inside Rotterdam demo (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586385 [41] Complete scope plugin persistence API: manager orchestration, target entity encapsulation, and plugin-driven admin/selection (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586243 [42] [Meta] Add capability-based scope persistence and integration APIs (1.1) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586393 [43] Test current conditional subcontext selection before changing the prompt (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586351 [44] Resolve `use_default` provider config for conditional subcontext selection (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586391 [45] Document Purpose field guidance for conditional subcontext selection (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586390 [46] Issue #3586379: Persist token counts and show budget usage in CCC UI. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/248 [47] Issue #3586392: Clarify and stabilize scope plugin extension boundary for 1.0. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/249 [48] Issue #3586382: Pre-1.0 documentation, trust, and compatibility follow-up. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/253 [49] Issue #3586383: Pre-1.0 context selection reliability and diagnostics follow-up. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/252 [50] Issue #3586375: Install target_entities storage when DER is enabled later. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/251 [51] Issue #3586237: Add multi-vocabulary taxonomy scope plugin. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/250 [52] Issue #3586391: Resolve use_default provider for conditional subcontext. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/247 [53] Issue #3586390: Document purpose guidance for conditional subcontext. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/246 [54] Feature: Translation result caching and cross-field deduplication (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585529 [55] Issue #3585529: Add translation result caching and cross-field deduplication. (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/37 [56] Add a requires_confirmation flag to flowdrop_node_type, wired to the existing interrupt/HITL engine (flowdrop, Issue) — https://git.drupalcode.org/project/flowdrop/-/work_items/3592383 --- TODAY'S MODULE SUMMARIES ---

                                    AI (Artificial Intelligence)

                                    Development activity this week focused on documentation and user experience improvements for the AI module.

                                    A merge request was opened to update the project's testing documentation to reflect the 1.4.x release series, including new coverage for global guardrails testing. This work ensures quality assurance processes stay current with the module's evolving feature set.

                                    A feature request was accepted to expand the AI Automator capability for formatted text fields. Currently, when automatically filling long text fields with summaries, the dedicated summary sub-field remains empty. This limitation means content editors cannot benefit from AI-generated summaries that appear in listings or previews without manual post-processing workarounds. The request has been tagged as a quick win, indicating it may be relatively straightforward to implement and would provide immediate value to content teams using the module.

                                    How can I help on this project?

                                    Contributors: Avinash jha (avinash.jha)

                                    ---

                                    Drupal AI Initiative

                                    The AI Initiative continued planning work toward DrupalCon Rotterdam in late September 2026. The goal remains delivering a demonstration site where multiple AI capabilities work together on a single platform, including AI-powered search, content review, translation, and editor chat tools. This site will be deployable in seconds on Drupal Forge, allowing potential adopters to experience integrated AI features immediately rather than reading about them in isolation.

                                    Planning discussions continued around the demonstration content and site architecture. The focus is on creating a university-themed site with realistic multilingual content that showcases how AI features operate in a production-like environment. The site structure and content corpus are being finalized to support the Rotterdam demonstration timeline.

                                    No code was merged or committed during this period. Work remains in the planning and coordination phase as the team prepares for the conference deadline.

                                    How can I help on this project?

                                    • Ensure dedicated resources are available to execute on the demonstration site build and content creation ahead of the September deadline.
                                    • Coordinate with DrupalCon Rotterdam organizers to secure prominent demonstration opportunities for the integrated AI showcase.
                                    ---

                                    Tool API

                                    A new merge request was opened to add documentation and enable project pages for the Tool API module. This work will make it easier for potential users to understand what the module does and how to use it, improving accessibility and adoption. Project pages are a standard way to communicate a module's purpose, features, and status to the Drupal community.

                                    No issues were updated and no code was committed during this period. The documentation work is still in progress and has not yet been merged.

                                    How can I help on this project?

                                    • Prioritize review and approval of the documentation work to unblock the launch of project pages and improve discoverability.
                                    • Consider whether additional communication or marketing support is needed once documentation is published to drive awareness.

                                    Contributors: Marcus Johansson (Marcus_Johansson)

                                    ---

                                    Drupal Canvas

                                    Development continues across data integrity, performance, and developer experience. Two important fixes were merged this period. A new automated check now prevents configuration health detectors from accidentally corrupting the data they inspect—an issue that had occurred twice before and was previously caught only through code review. A second fix resolved a caching collision that caused widget-building to fail unpredictably depending on the order in which component properties were processed.

                                    Work is underway to improve the editing experience for brand kit colours by applying changes immediately in the interface while the server saves in the background, eliminating the current delay where users wait for two network round trips before seeing their edits. Separately, progress continues on adding support for Drupal image styles and preview data within the code editor, both aimed at making it easier for developers to work with existing Drupal content and assets. A self-healing mechanism is being developed to automatically repair data written before version 1.5.1 when it is read, avoiding errors that currently block layout rendering and updates.

                                    Dependency updates remain in progress through the automated dashboard.

                                    How can I help on this project?

                                    • Review and approve the brand kit colour optimisation work to improve perceived responsiveness during editing.
                                    • Prioritise decisions on image style integration to clarify the migration path for existing Drupal sites adopting Canvas.

                                    Contributors: **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Christian López Espínola (penyaskito) [1], Lauri Timmanee (lauriii)

                                    ---

                                    Context Control Center (CCC)

                                    The Context Control Center focused this period on preparing for a stable 1.0 release, with significant planning around user experience improvements, reliability, and demo readiness. Work concentrated on clarifying how context items are selected and prioritized, improving budget visibility, and ensuring the module is easy to understand for new users.

                                    Several merge requests were opened to improve how the system communicates token usage to site administrators. Work is underway to persist token counts and display budget usage in the interface, helping administrators understand how close they are to configured limits. Related efforts aim to remove the separate item count limit in favor of relying solely on token budgets, simplifying configuration.

                                    Planning advanced on making the system easier to understand. Work began on clarifying scope matching and ranking documentation, and on redesigning selection modes to better reflect user intent rather than technical mechanisms. A priority field for context items is being added to give editors clearer control over selection ordering.

                                    Preparations continue for an upcoming demonstration, including demo content development and a potential installable recipe to showcase functionality.

                                    How can I help on this project?

                                    • Allocate UX review capacity for pending design decisions on selection modes and scope documentation to unblock finalization.
                                    • Confirm scope and timeline expectations for the Rotterdam demo to ensure development priorities align with presentation needs.

                                    Contributors: Kristen Pol (kepol), Emma Horrell (emma-horrell), Aidan Foster (aidanfoster)

                                    ---

                                    AI translate

                                    The AI translate module made significant progress on cost optimization during the reporting period. A merge request introducing translation result caching and cross-field deduplication was opened to address a major efficiency gap: the module currently re-sends every piece of content to AI language models on each translation run, even when nothing has changed.

                                    This work targets two costly patterns. First, when a single field is updated, all unchanged fields are re-translated unnecessarily. Second, repeated text across components—such as shared button labels or navigation titles—is translated multiple times rather than once. The proposed caching layer sits at the single point where content is sent to AI providers, ensuring the same text is never translated twice. This should meaningfully reduce API costs for sites with paragraph-heavy pages or Layout Builder configurations.

                                    The change is under review and has not yet been merged. Once integrated, it will deliver immediate cost savings for organizations running frequent translation updates.

                                    How can I help on this project?

                                    • Prioritize code review resources to evaluate and merge the caching implementation, which is ready but awaiting approval.
                                    • Identify pilot customers with high translation volumes who could validate cost savings before wider rollout.

                                    Contributors: Tekla Aivazashvili (aivazashvilit)

                                    ---

                                    FlowDrop

                                    A new issue was opened to add a confirmation step for certain workflow actions. The Add a requires_confirmation flag to flowdrop_node_type, wired to the existing interrupt/HITL engine proposal would allow administrators to mark specific automated actions as requiring human approval before they execute. This is particularly relevant for high-risk operations such as publishing content, sending communications, or deleting data, where an accidental or erroneous automated action could have significant consequences. The approach reuses existing workflow pause capabilities rather than building new infrastructure. The issue remains open with no commits or merges completed during this period.

                                    How can I help on this project?

                                    • Confirm whether automated confirmation workflows are a priority for your use cases and provide guidance on which actions should require approval by default.
                                    • Allocate development resources to begin implementation if this capability aligns with your risk management requirements.
                                    ======================================================================== ## [20] factcheck:capabilities:executive ======================================================================== Layer-1 corrections: 1 Judge flags: 1