Documentation staleness audit: automator-type ID drift, ai_eca/ai_validations deprecation notices, streaming API method names
## Description A staleness audit of the module documentation under `docs/` (all pages untouched for 6+ months) found a number of pages that have drifted from the current code. Each finding below was verified against source — not just flagged by commit date — so these are confirmed mismatches, not merely old pages. The bulk of the breakage is **filename/ID drift** in the `ai_automators` automator-type pages: the doc filename no longer matches the plugin's `#[AiAutomatorType(id: ...)]`, usually because the code gained a `_field` / `_long` suffix, an id rename, or a typo. No automator plugins were actually removed. ## Tasks **Broken — doc references code that no longer exists / no longer matches:** * [ ] `docs/modules/ai_eca/index.md` — module is now a deprecated `.install` shell; ECA integration moved to the external `ai_integration_eca` module. Rewrite to point at the new module (or remove) with a deprecation/migration notice. * [ ] `docs/developers/call_chat_streaming.md` — examples call `$stream->getChatOutput()` (real method: `reconstructChatOutput()`) and `$output->getMessage()` (use `getNormalized()`). * [ ] `docs/modules/ai_automators/automator_types/llm_audio_text_with_summary.md` — actual plugin id is `llm_audio_to_text_with_summary`. * [ ] `docs/modules/ai_automators/automator_types/llm_json_native.md` — actual id is `llm_json_native_field`. * [ ] `docs/modules/ai_automators/automator_types/llm_json_native_binary.md` — actual id is `llm_json_native_binary_field`. * [ ] `docs/modules/ai_automators/automator_types/llm_media_audio_generation.md` — actual id is `llm_media_Audio_generation` (stray capital `A` — see code bug below). * [ ] `docs/modules/ai_automators/automator_types/llm_speech_generation.md` — actual id is `llm_audio_generation`. * [ ] `docs/modules/ai_automators/automator_types/llm_text_to_image.md` — no such id; this page actually describes `LlmImageGeneration` (id `llm_image_generation`). * [ ] `docs/modules/ai_automators/automator_types/vector_search_text.md` — actual id is `vector_search_text_long`. * [ ] `docs/modules/ai_automators/automator_types/llm_summary_string_long.md` — actual id is `summarize_to_string_long`. * [ ] `docs/modules/ai_automators/automator_types/llm_summary_text_long.md` — actual id is `summarize_to_text_long`. **Needs update — content has drifted:** * [ ] `docs/modules/ai_automators/automator_types/llm_video_to_html.md` and `llm_video_to_image.md` — the two pages describe each other; the code has the two ids swapped relative to their labels. * [ ] `docs/modules/ai_validations/index.md` — plugins still accurate, but the module is now `lifecycle: deprecated` (#3552888) and the doc has no deprecation banner. * [ ] `docs/agents/testing/ai_agent_test/drush.md` — says "test groups are coming up" when `group_id` already exists; omits the new `eval_provider` / `eval_model` options. **Missing docs — plugins exist with no correctly-named page:** * [ ] `llm_image_generation` (currently mis-filed as `llm_text_to_image.md`) * [ ] `summarize_to_string_long` (mis-filed as `llm_summary_string_long.md`) * [ ] `summarize_to_text_long` (mis-filed as `llm_summary_text_long.md`) * [ ] `llm_rewrite_image_filename` — no page * [ ] `llm_text_create_summary` — no page * [ ] `views_extract_text_long` (`ViewsExtractor.php`) — no page **Code-side bugs surfaced by the audit (not doc issues, but worth fixing):** * [ ] `LlmMediaAudioGeneration.php` has `id: 'llm_media_Audio_generation'` — stray capital `A`. * [ ] `LlmVideoToHtml.php` / `LlmVideoToImage.php` have their `id` values swapped relative to their labels. ## Acceptance criteria * Every automator-type doc filename matches a real plugin `id`, or is renamed/removed to match. * `ai_eca` and `ai_validations` docs carry accurate deprecation/migration notices. * `call_chat_streaming.md` code examples use methods that exist on the current API. * `drush.md` reflects the implemented `group_id`, `eval_provider`, and `eval_model` options. * Plugins listed under "Missing docs" either have a correctly-named page or a tracked follow-up. ## Notes Most "broken" items are simple filename renames to match the plugin `id`. The audit verified ~38 other stale pages (the remaining automator types plus `ai_api_explorer`, `ai_assistant_api`, `function_call_schema`, `chat_history_element`, `developer_information`, `dropai_provider`, `bug_finding`, `result_export_import`) as **old but still correct** — those need no action. <!-- This issue description was significantly AI-generated (documentation audit performed with Claude Code, cross-referencing docs against module source). See https://www.drupal.org/docs/develop/issues/issue-procedures-and-etiquette/policy-on-the-use-of-ai-when-contributing-to-drupal -->
issue