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