|
189 | 189 | "examples": { "tasks": [], "outputs": [] } |
190 | 190 | } |
191 | 191 | }, |
| 192 | + |
| 193 | + |
192 | 194 | { |
193 | | - "id": "phase5_5", |
| 195 | + "id": "phase6", |
| 196 | + "title": "Driver Lifecycle & Resolver Responsibility Contract", |
| 197 | + "version": "1.0.0", |
| 198 | + "status": "pending", |
| 199 | + "summary": "Formalize driver lifecycle states and strictly define resolver responsibilities to eliminate side effects, duplicated initialization, and implicit infrastructure access.", |
| 200 | + "tracks": { |
| 201 | + "core": { |
| 202 | + "tasks": [ |
| 203 | + "Define driver lifecycle states (uninitialized / ready / failed)", |
| 204 | + "Introduce explicit initialization contract in AbstractSecurityGuardDriver", |
| 205 | + "Ensure resolver never triggers side-effectful initialization", |
| 206 | + "Move all connection logic behind lazy initialization barrier", |
| 207 | + "Guarantee drivers do not auto-connect in constructors", |
| 208 | + "Ensure all public driver methods are safe before initialization", |
| 209 | + "Unify lifecycle behavior across Redis, MySQL, and Mongo drivers" |
| 210 | + ], |
| 211 | + "outputs": [ |
| 212 | + "src/Drivers/AbstractSecurityGuardDriver.php", |
| 213 | + "src/Drivers/RedisSecurityGuard.php", |
| 214 | + "src/Drivers/MySQL/MySQLSecurityGuard.php", |
| 215 | + "src/Drivers/Mongo/MongoSecurityGuard.php" |
| 216 | + ] |
| 217 | + }, |
| 218 | + "tests": { |
| 219 | + "tasks": [ |
| 220 | + "Add lifecycle unit tests for all drivers", |
| 221 | + "Ensure resolver tests do not require real infrastructure", |
| 222 | + "Validate resolver is side-effect free", |
| 223 | + "Ensure initialization occurs only on first real operation", |
| 224 | + "Add explicit failure semantics for initialization failures" |
| 225 | + ], |
| 226 | + "outputs": [ |
| 227 | + "tests/Drivers/Lifecycle/", |
| 228 | + "tests/Resolver/LifecycleTest.php" |
| 229 | + ] |
| 230 | + }, |
| 231 | + "examples": { "tasks": [], "outputs": [] } |
| 232 | + }, |
| 233 | + "rules": [ |
| 234 | + "Resolver must be side-effect free", |
| 235 | + "Drivers must be lazy-initialized", |
| 236 | + "Initialization logic must exist in exactly one place per driver", |
| 237 | + "Public driver API must be safe before initialization", |
| 238 | + "No real infrastructure access during resolver tests" |
| 239 | + ] |
| 240 | + }, |
| 241 | + |
| 242 | + { |
| 243 | + "id": "phase7", |
194 | 244 | "title": "IntegrationV2 Stabilization", |
195 | 245 | "version": "1.0.1", |
196 | 246 | "status": "in_progress", |
|
369 | 419 | }, |
370 | 420 |
|
371 | 421 | { |
372 | | - "id": "phase6", |
| 422 | + "id": "phase8", |
373 | 423 | "title": "Config Normalization & DTO Injection Layer", |
374 | 424 | "version": "1.1.0", |
375 | 425 | "status": "pending", |
|
410 | 460 | }, |
411 | 461 |
|
412 | 462 | { |
413 | | - "id": "phase7", |
| 463 | + "id": "phase9", |
414 | 464 | "title": "Global Rate Limiter Overlay Enforcement", |
415 | 465 | "version": "1.1.1", |
416 | 466 | "status": "pending", |
|
443 | 493 | }, |
444 | 494 |
|
445 | 495 | { |
446 | | - "id": "phase8", |
| 496 | + "id": "phase10", |
447 | 497 | "title": "Backoff Policy Hardening & banTime Integration", |
448 | 498 | "version": "1.1.2", |
449 | 499 | "status": "pending", |
|
476 | 526 | }, |
477 | 527 |
|
478 | 528 | { |
479 | | - "id": "phase9", |
| 529 | + "id": "phase11", |
480 | 530 | "title": "Phase 5 Coverage Completion & Validation", |
481 | 531 | "version": "1.1.3", |
482 | 532 | "status": "pending", |
|
508 | 558 | }, |
509 | 559 |
|
510 | 560 | { |
511 | | - "id": "phase10", |
| 561 | + "id": "phase12", |
512 | 562 | "title": "Internal API Freeze (No Public Release)", |
513 | 563 | "version": "1.2.0", |
514 | 564 | "status": "pending", |
|
544 | 594 | }, |
545 | 595 |
|
546 | 596 | { |
547 | | - "id": "phase11", |
| 597 | + "id": "phase13", |
548 | 598 | "title": "Rate Limiter Bridge", |
549 | 599 | "version": "1.0.0", |
550 | 600 | "status": "pending", |
|
579 | 629 | }, |
580 | 630 |
|
581 | 631 | { |
582 | | - "id": "phase12", |
| 632 | + "id": "phase14", |
583 | 633 | "title": "Audit DTO & Storage", |
584 | 634 | "version": "1.0.0", |
585 | 635 | "status": "pending", |
|
602 | 652 | }, |
603 | 653 |
|
604 | 654 | { |
605 | | - "id": "phase13", |
| 655 | + "id": "phase15", |
606 | 656 | "title": "Mongo Audit Forwarding", |
607 | 657 | "version": "1.0.0", |
608 | 658 | "status": "pending", |
|
624 | 674 | }, |
625 | 675 |
|
626 | 676 | { |
627 | | - "id": "phase14", |
| 677 | + "id": "phase16", |
628 | 678 | "title": "Audit History API", |
629 | 679 | "version": "1.0.0", |
630 | 680 | "status": "pending", |
|
646 | 696 | }, |
647 | 697 |
|
648 | 698 | { |
649 | | - "id": "phase15", |
| 699 | + "id": "phase17", |
650 | 700 | "title": "Audit Filters & Indexes", |
651 | 701 | "version": "1.0.0", |
652 | 702 | "status": "pending", |
|
668 | 718 | }, |
669 | 719 |
|
670 | 720 | { |
671 | | - "id": "phase16", |
| 721 | + "id": "phase18", |
672 | 722 | "title": "PSR Logger Integration", |
673 | 723 | "version": "1.0.0", |
674 | 724 | "status": "pending", |
|
690 | 740 | }, |
691 | 741 |
|
692 | 742 | { |
693 | | - "id": "phase17", |
| 743 | + "id": "phase19", |
694 | 744 | "title": "Telegram Alerts", |
695 | 745 | "version": "1.0.0", |
696 | 746 | "status": "pending", |
|
712 | 762 | }, |
713 | 763 |
|
714 | 764 | { |
715 | | - "id": "phase18", |
| 765 | + "id": "phase20", |
716 | 766 | "title": "Webhook Dispatcher", |
717 | 767 | "version": "1.0.0", |
718 | 768 | "status": "pending", |
|
734 | 784 | }, |
735 | 785 |
|
736 | 786 | { |
737 | | - "id": "phase19", |
| 787 | + "id": "phase21", |
738 | 788 | "title": "Retry Engine & Delivery Tests", |
739 | 789 | "version": "1.0.0", |
740 | 790 | "status": "pending", |
|
759 | 809 | }, |
760 | 810 |
|
761 | 811 | { |
762 | | - "id": "phase20", |
| 812 | + "id": "phase22", |
763 | 813 | "title": "Monitoring APIs", |
764 | 814 | "version": "1.0.0", |
765 | 815 | "status": "pending", |
|
781 | 831 | }, |
782 | 832 |
|
783 | 833 | { |
784 | | - "id": "phase21", |
| 834 | + "id": "phase23", |
785 | 835 | "title": "Unit Consistency Tests", |
786 | 836 | "version": "1.0.0", |
787 | 837 | "status": "pending", |
|
802 | 852 | }, |
803 | 853 |
|
804 | 854 | { |
805 | | - "id": "phase22", |
| 855 | + "id": "phase24", |
806 | 856 | "title": "Attack Simulations", |
807 | 857 | "version": "1.0.0", |
808 | 858 | "status": "pending", |
|
823 | 873 | }, |
824 | 874 |
|
825 | 875 | { |
826 | | - "id": "phase23", |
| 876 | + "id": "phase25", |
827 | 877 | "title": "Redis & Mongo Stress", |
828 | 878 | "version": "1.0.0", |
829 | 879 | "status": "pending", |
|
844 | 894 | }, |
845 | 895 |
|
846 | 896 | { |
847 | | - "id": "phase24", |
| 897 | + "id": "phase26", |
848 | 898 | "title": "Coverage Hardening", |
849 | 899 | "version": "1.0.0", |
850 | 900 | "status": "pending", |
|
865 | 915 | }, |
866 | 916 |
|
867 | 917 | { |
868 | | - "id": "phase25", |
| 918 | + "id": "phase27", |
869 | 919 | "title": "Documentation & Packagist Release", |
870 | 920 | "version": "1.0.0", |
871 | 921 | "status": "pending", |
|
0 commit comments