Promote Document Loader: Context Importer from experimental to stable
## Description Follow-up to: #3586275+s canvas#3575644+s ### Summary The `ai_context_document_loader` submodule (Document Loader: Context Importer) is currently marked `lifecycle: experimental`. The initial integration work is largely complete: upstream dependencies are on stable constraints (`document_loader:^2.0.3`, `ai_file_to_text:^1.0`), and temporary Document Loader Composer patches have been removed. Before removing the experimental lifecycle flag, we should close out documentation, testing, and install-behavior follow-ups. The Canvas StringLongItemOverride patch ([#3575644](https://git.drupalcode.org/project/canvas/-/work_items/3575644)) remains a separate upstream blocker for Canvas-enabled sites and is **not** resolved by this issue. ### Tasks #### Documentation - [ ] Remove or update all “experimental” references in: - `modules/ai_context_document_loader/ai_context_document_loader.info.yml` - `modules/ai_context_document_loader/README.md` - `docs/features/importers.md` - `docs/index.md` - [ ] Fix `docs/features/importers.md`: - Remove outdated claim that Document Loader patches are applied automatically - Fix broken `[Composer patches](#composer-patches)` link (section does not exist in that file) - Clarify that the only remaining temporary patch is for Canvas, documented in `README.md` - [ ] Update or retire stale testing notes that reference removed Document Loader patches / `MdxContentSanitizer` patch dependency #### Testing - [ ] Add at least one functional test that imports content and saves a context item (file or URL) - [ ] Consider a Canvas-specific test for saving large imported `content` once [#3575644](https://git.drupalcode.org/project/canvas/-/work_items/3575644) is resolved upstream - [ ] Add kernel coverage for `hook_install()` media extension behavior (unit test exists; install path is untested) - [ ] Confirm GitLab CI reliably runs `ai_context_document_loader` tests (they currently skip when the Document Loader stack is unavailable) #### Install / config behavior - [ ] Decide and document whether modifying `field.field.media.document.field_media_document` on install is intentional long-term behavior - [ ] If yes: document in `importers.md` / install docs - [ ] If no: add `hook_uninstall()` cleanup or move to a less invasive approach - [ ] Confirm default Document Loader plugin selection works on a fresh install without the removed `ai_context_document_loader_set_default_file_loaders()` helper (upstream defaults only) #### Stable promotion - [ ] Remove `lifecycle: experimental` from `ai_context_document_loader.info.yml` - [ ] Update `SECURITY.md` to reflect security coverage for the submodule once stable - [ ] Review Extensions page copy for any remaining experimental language ### Out of scope - Landing the Canvas patch upstream ([#3575644](https://git.drupalcode.org/project/canvas/-/work_items/3575644)) — track separately - Requiring `document_loader` / `ai_file_to_text` in `require` (they should remain optional extensions) ### Acceptance criteria - Submodule is no longer marked experimental - Documentation accurately describes stable dependencies and patch requirements - At least one end-to-end import-and-save test passes in CI - Install-time media extension behavior is documented or cleaned up - No stale references to removed Document Loader Composer patches ### Related - Parent: [#3586275](https://www.drupal.org/project/ai_context/issues/3586275) — Document Loader submodule - Canvas patch: [#3575644](https://git.drupalcode.org/project/canvas/-/work_items/3575644) ## AI usage - [x] AI assisted issue
issue