List view
Developer gets an additional code quality dimension — PHPStan static analysis findings (runtime errors, type violations, code quality issues) — included in risk scoring and reports for private and public extensions. Introduces the `CachingAnalyzerDecorator` pattern for all new analyzers going forward. Implements: `PhpstanAnalyzer` via `AnalyzerInterface` directly + `CachingAnalyzerDecorator` (AR5), PHPStan config generation, result parsing, report integration. **FRs covered:** Supplements FR17–FR21 with PHPStan analysis dimension; establishes AR5 decorator pattern *(Phase 2 Growth — out of MVP scope)*
No due dateA CI pipeline can run analysis fully unattended with TTY-independent exit codes (0/1/2), non-interactive mode (`TYPO3_ANALYZER_NO_INTERACTION=1`), environment-variable overrides, a stable JSON schema, and a working cache:clear command — all without ambiguity from terminal-detection logic. Implements: TTY-independent exit code logic with dedicated unit tests (AR8), env var override support (FR40), stable JSON output contract (NFR16), `CacheCommand` (FR42), documentation consolidation. **FRs covered:** FR26, FR40, FR42
No due dateDeveloper or PM can generate an agency-branded customer report from cached analysis data — reduced technical detail, non-technical language, project metadata — ready for customer offers without manual reformatting. **Prerequisite: Epic 3 must be complete** — Story 4.1 requires `StreamingOutputManager` from Epic 3. Implements: `ReportGenerateCommand` (AR6), customer Twig template set with `{% extends %}` inheritance (AR7), branding YAML configuration (`--branding=agency.yaml`). **FRs covered:** FR30, FR32, FR33, FR34, FR35
No due dateDeveloper can analyze installations with 40+ extensions including large Rector/Fractor finding sets without memory exhaustion, segmentation faults, or crashes. Large content fields are written to files during rendering; Domain objects hold `string|null` only. Implements: `StreamingOutputManager`, `ContentStreamWriter`, `FileReference` (AR2). Pre-flight writability check in `AnalyzeCommand`. Domain layer unchanged. **FRs covered:** FR43
No due dateDeveloper gets version availability data for extensions hosted on any VCS provider (GitHub, GitLab, Bitbucket, Codeberg, self-hosted, etc.), using Composer CLI as the sole resolver. Replaces per-provider API clients with provider-agnostic Composer-based resolution. Unresolvable sources produce a visible warning. Implements: `ComposerSourceParser` (AR3), `VcsResolverInterface`, `ComposerVersionResolver` (AR4). Transition: existing `GitHubClient` remains wired until Story 2.5 validates replacement; removed in Story 2.6. **FRs covered:** FR11 (consolidated), FR14 (completing aggregation), FR15 (simplified)
No due date•5/5 issues closedDeveloper can run analysis on any TYPO3 v11–v14 installation and receive correct results, because the tool uses centralized version-specific discovery profiles and correctly identifies and excludes core extensions. Fixes the open v11 core extension detection bug. Gates v13 and v14 support on integration test fixtures per AR10. Implements: `VersionProfile`, `VersionProfileRegistry`, `VersionProfileRegistryFactory` (AR1), v11 bug fix, v13 and v14 integration test fixtures (AR10). **FRs covered:** FR7, FR8
No due date