@@ -21,6 +21,23 @@ When documentation validation is needed, delegate to the `typo3-docs` skill.
2121
2222To evaluate an extension, follow these steps in order:
2323
24+ ### Step 0: Understand Extension Context (ALWAYS FIRST)
25+
26+ Before checking any files, understand what you're evaluating:
27+
28+ 1 . ** Purpose** - What does this extension do? Read the README and ext_emconf description
29+ 2 . ** Target TYPO3 Version** - Is this for v12, v13, or v14? Multi-version support?
30+ 3 . ** Target PHP Version** - What PHP version(s) does it support?
31+ 4 . ** Extension Type** - Is it a plugin, module, site package, or library?
32+ 5 . ** Criticality Assessment** - Is this production-critical or experimental?
33+ - Production extensions need stricter conformance (aim for 80+)
34+ - Experimental/proof-of-concept can have lower thresholds
35+ 6 . ** Scope** - How large is the codebase? Set appropriate expectations
36+
37+ This context shapes how strictly to apply subsequent checks and what to prioritize.
38+
39+ ### Steps 1-9: Conformance Checks
40+
24411 . ** Initial Assessment** - Identify extension key, target TYPO3 version, and extension type
25422 . ** File Structure** - Validate composer.json, ext_emconf.php, and required directories
26433 . ** Coding Standards** - Check strict_types, type declarations, and PSR-12 compliance
@@ -31,6 +48,17 @@ To evaluate an extension, follow these steps in order:
31488 . ** Best Practices** - Confirm DDEV setup, runTests.sh, quality tools, and CI/CD
32499 . ** TER Publishing** - Validate workflow, upload comment format, CI TER compatibility check
3350
51+ ### Step 10: Verification Loop (After Fixes)
52+
53+ After implementing improvements, always re-run the conformance check:
54+
55+ 1 . ** Re-score** - Run ` scripts/check-conformance.sh ` again
56+ 2 . ** Compare** - Document score improvement (e.g., "Score improved: 58 → 82")
57+ 3 . ** Validate** - Ensure no regressions in previously passing checks
58+ 4 . ** Report** - Update the conformance report with before/after scores
59+
60+ Do not consider conformance work complete until verification confirms improvement.
61+
3462## Scoring System
3563
3664** Base Score (0-100):**
@@ -42,6 +70,52 @@ To evaluate an extension, follow these steps in order:
4270
4371** Excellence Bonus (0-22):** Additional points for exceptional quality features.
4472
73+ ### Severity Interpretation
74+
75+ Use these thresholds to guide recommendations:
76+
77+ | Score Range | Interpretation | Action |
78+ | -------------| ----------------| --------|
79+ | 90-100+ | Excellent | Ready for production and TER publishing |
80+ | 80-89 | Good | Minor improvements recommended |
81+ | 70-79 | Acceptable | Address issues before major releases |
82+ | 50-69 | Needs Work | Significant improvements required |
83+ | Below 50 | Critical | Block deployment until resolved |
84+
85+ ** Critical vs. Nice-to-Have:**
86+ - ** Critical issues** (security, data loss, TYPO3 core incompatibility) block production deployment regardless of score
87+ - ** Nice-to-have** (code style, minor optimizations) can be deferred to future releases
88+
89+ ## CI Debugging: Extension Works Locally but CI Fails
90+
91+ When an extension passes locally but fails in CI, check these common causes:
92+
93+ 1 . ** TYPO3 Version Mismatch** - CI matrix may test different TYPO3 versions than local
94+ - Check ` composer.json ` TYPO3 constraints match CI matrix
95+ - Ensure deprecated APIs work across all tested versions
96+
97+ 2 . ** PHP Version Matrix** - CI tests multiple PHP versions
98+ - Verify type declarations work on oldest supported PHP
99+ - Check for PHP 8.x-only features if supporting PHP 7.4
100+
101+ 3 . ** Dependency Locking** - composer.lock state differs
102+ - TYPO3 extensions should NOT commit composer.lock (add to .gitignore)
103+ - Without lock file, CI resolves versions appropriate for its PHP/TYPO3
104+
105+ 4 . ** Test Environment Differences**
106+ - DDEV provides services (MySQL, Redis) that CI may not
107+ - Mock external services or use test fixtures
108+
109+ 5 . ** Missing Test Database Setup**
110+ - Functional tests need database; ensure CI creates it
111+ - Check test bootstrap configuration
112+
113+ 6 . ** File Path Assumptions**
114+ - Avoid absolute paths that differ between local and CI
115+ - Use TYPO3's path constants (Environment::getPublicPath())
116+
117+ Run ` scripts/diagnose-ci-failure.sh ` if available, or compare CI logs against local test output.
118+
45119## Running Conformance Checks
46120
47121To run a complete conformance check on an extension:
0 commit comments