Clean up CCC inconsistences and DX issues before rc1
Back and forth with opus 4.6 to review inconsistencies and DX issues:
See MD file:
[ai-context-naming-dx-review.md](/uploads/bdc9625673e049cdd31d2f0653de3ccd/ai-context-naming-dx-review.md)
## Priority Summary
| Priority | Issue | Section |
|---|---|---|
| **High** | Orphaned `AiContextScopeSiteSectionForm` writes to wrong config name | 1c |
| **High** | Dead `AiContextItemController::revisionOverview()` | 1b |
| **Medium** | `Hook/` vs `Hooks/` dual directories | 1a |
| **Medium** | Permission name with underscores | 2a |
| **Medium** | Route names break `settings.*` pattern | 2b |
| **Medium** | `new static()` in `final` classes (~20+ files) | 2c |
| **Medium** | Mixed snake_case / camelCase locals within same files (internal inconsistency) | 2f |
| **Low** | Codebase-wide variable convention split (Service/Model = camelCase, Form/Plugin = snake_case) | 2f |
| **Low** | camelCase `$childrenService` in procedural `ai_context.module` (PHPCS violation) | 2f |
| **Low** | Missing `declare(strict_types=1)` on 2–3 files | 2d |
| **Low** | `ai_context.children_service` redundant suffix | 2e |
| **Low** | Inconsistent `final` policy | 3c |
| **Low** | `canvas_page` in install config | 3e |
| **Low** | No service interfaces | 3d |
| **Low** | Constructor style inconsistency (promotion vs traditional) | 3f |
| **Info** | Constraint PascalCase plugin ID (follows core convention) | 2g |
| **Info** | Lowercase `diff` plugin directory (required by diff module) | 2h |
| **Info** | `getContextForEntity` naming ambiguity | 3a |
| **Info** | Menu link ID / route name collision | 3b |
| **Info** | FQCN service IDs for hook classes (Drupal 11 autowire pattern) | 2f (YAML) |
issue