|
108 | 108 | "id": "phase4", |
109 | 109 | "title": "Unified Security Events (NEW)", |
110 | 110 | "version": "1.0.0", |
111 | | - "status": "pending", |
| 111 | + "status": "completed", |
112 | 112 | "summary": "Introduce unified SecurityEventDTO and event normalization across all security actions.", |
113 | 113 | "tasks": [ |
114 | 114 | "Create SecurityEventDTO (action/platform/userId/userType/context)", |
|
132 | 132 | "id": "phase5", |
133 | 133 | "title": "Core Logic & Service Layer", |
134 | 134 | "version": "1.0.0", |
135 | | - "status": "pending", |
| 135 | + "status": "completed", |
136 | 136 | "summary": "Main security orchestration logic built on top of unified security events.", |
137 | 137 | "tasks": [ |
138 | 138 | "handleEvent() logic", |
|
148 | 148 | ] |
149 | 149 | }, |
150 | 150 |
|
| 151 | + { |
| 152 | + "id": "phase5_5", |
| 153 | + "title": "IntegrationV2 Stabilization", |
| 154 | + "version": "1.0.0", |
| 155 | + "status": "completed", |
| 156 | + "summary": "Introduce authoritative real infrastructure integration tests (IntegrationV2) and deprecate legacy integration behavior.", |
| 157 | + "tasks": [ |
| 158 | + "Create IntegrationV2 test layer", |
| 159 | + "Enforce resolver-based adapter creation", |
| 160 | + "Deprecate legacy integration tests", |
| 161 | + "Exclude legacy tests from PHPUnit execution", |
| 162 | + "Validate Redis/MySQL/Mongo real behavior", |
| 163 | + "Fail explicitly when infrastructure is unavailable" |
| 164 | + ], |
| 165 | + "rules": [ |
| 166 | + "IntegrationV2 is the ONLY source of truth for real infrastructure behavior", |
| 167 | + "Legacy Integration tests are deprecated and excluded", |
| 168 | + "No mocks, fakes, or hardcoded hosts allowed in IntegrationV2", |
| 169 | + "All adapters MUST be resolved via DatabaseResolver + EnvironmentLoader" |
| 170 | + ], |
| 171 | + "outputs": [ |
| 172 | + "tests/IntegrationV2/", |
| 173 | + "tests/Integration/README.md", |
| 174 | + "phpunit.xml.dist (exclude legacy integration)" |
| 175 | + ] |
| 176 | + }, |
| 177 | + |
| 178 | + |
151 | 179 | { |
152 | 180 | "id": "phase6", |
153 | 181 | "title": "Rate Limiter Bridge", |
|
391 | 419 | "CHANGELOG.md" |
392 | 420 | ] |
393 | 421 | } |
394 | | - ] |
| 422 | + ], |
| 423 | + "testing_policy": { |
| 424 | + "phpunit": "latest", |
| 425 | + "phpstan": "level-max", |
| 426 | + "psr": ["PSR-4", "PSR-12", "PSR-3", "PSR-14 (events)"], |
| 427 | + "rules": [ |
| 428 | + "Legacy integration tests must not run in CI", |
| 429 | + "IntegrationV2 tests require real infrastructure", |
| 430 | + "Unit tests may use data-fakes", |
| 431 | + "Coverage tests must not rely on real infrastructure", |
| 432 | + "No test exists to make CI green; tests exist to protect production" |
| 433 | + ] |
| 434 | + } |
395 | 435 | } |
0 commit comments