Document supported vs internal CCC APIs
## Summary
Follow-up to:
#3586169
AI Context needs a module-wide developer doc that defines the stable public surface vs internal implementation details. Issue `#3586162` documents the **selection extension model** (pipeline events, no service decoration), but that covers only one slice of the module.
**Goal:** Add a clear public/internal boundary in developer docs so contrib and site builders know what they can rely on without reading selector internals.
## Solution
**Public (document as supported):**
- `AiContextRequestFactory` and `AiContextRequest` / `AiContextResult`
- Selector pipeline events (`ai_context.selection.*`) and event classes
- Scope plugins, documented hooks/alters
- Convenience APIs intended for non-agent consumers (`getRenderedContext()`, `getResult()`)
**Internal (document as unsupported / may change without deprecation):**
- `AiContextSelector` and its candidate pipeline (load, score, merge, subcontext)
- Supporting services: scope resolver, scope index, subcontext resolver, renderer internals
- Decorating or replacing internal services in `services.yml`
**Proposed deliverables:**
- New section in `docs/developers/services.md` (or a short `docs/developers/api-stability.md` linked from `index.md`)
- Per-service **Status: public** / **Status: internal** labels where helpful
- Cross-link from existing [Supported extension model](events.md#supported-extension-model) so selection docs aren’t duplicated
- Optional: `@internal` PHPDoc on clearly internal service classes (separate sub-task if desired)
**Out of scope:**
- Re-documenting event subscriber contracts (already in `events.md`)
- Implementing new extension points
## Acceptance criteria
- A contrib developer can answer “what am I allowed to depend on?” from docs alone
- Internal selector/pipeline services are explicitly marked unsupported
- Public entry points (`request_factory`, events, models) are explicitly marked supported
## AI usage
- [x] AI assisted issue
- [ ] AI generated code
issue