Skip to content

Commit 7a8d3f4

Browse files
committed
refactor(roadmap): insert Phase 6 for driver lifecycle contract and shift phases
Introduce a dedicated Phase 6 to formalize driver lifecycle states and resolver responsibility, enforcing lazy initialization and side-effect-free resolution. Phase 5.5 is shifted to Phase 7, and all subsequent phases are renumbered accordingly with no scope changes.
1 parent 66cf392 commit 7a8d3f4

File tree

1 file changed

+71
-21
lines changed

1 file changed

+71
-21
lines changed

roadmap.json

Lines changed: 71 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,58 @@
189189
"examples": { "tasks": [], "outputs": [] }
190190
}
191191
},
192+
193+
192194
{
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",
194244
"title": "IntegrationV2 Stabilization",
195245
"version": "1.0.1",
196246
"status": "in_progress",
@@ -369,7 +419,7 @@
369419
},
370420

371421
{
372-
"id": "phase6",
422+
"id": "phase8",
373423
"title": "Config Normalization & DTO Injection Layer",
374424
"version": "1.1.0",
375425
"status": "pending",
@@ -410,7 +460,7 @@
410460
},
411461

412462
{
413-
"id": "phase7",
463+
"id": "phase9",
414464
"title": "Global Rate Limiter Overlay Enforcement",
415465
"version": "1.1.1",
416466
"status": "pending",
@@ -443,7 +493,7 @@
443493
},
444494

445495
{
446-
"id": "phase8",
496+
"id": "phase10",
447497
"title": "Backoff Policy Hardening & banTime Integration",
448498
"version": "1.1.2",
449499
"status": "pending",
@@ -476,7 +526,7 @@
476526
},
477527

478528
{
479-
"id": "phase9",
529+
"id": "phase11",
480530
"title": "Phase 5 Coverage Completion & Validation",
481531
"version": "1.1.3",
482532
"status": "pending",
@@ -508,7 +558,7 @@
508558
},
509559

510560
{
511-
"id": "phase10",
561+
"id": "phase12",
512562
"title": "Internal API Freeze (No Public Release)",
513563
"version": "1.2.0",
514564
"status": "pending",
@@ -544,7 +594,7 @@
544594
},
545595

546596
{
547-
"id": "phase11",
597+
"id": "phase13",
548598
"title": "Rate Limiter Bridge",
549599
"version": "1.0.0",
550600
"status": "pending",
@@ -579,7 +629,7 @@
579629
},
580630

581631
{
582-
"id": "phase12",
632+
"id": "phase14",
583633
"title": "Audit DTO & Storage",
584634
"version": "1.0.0",
585635
"status": "pending",
@@ -602,7 +652,7 @@
602652
},
603653

604654
{
605-
"id": "phase13",
655+
"id": "phase15",
606656
"title": "Mongo Audit Forwarding",
607657
"version": "1.0.0",
608658
"status": "pending",
@@ -624,7 +674,7 @@
624674
},
625675

626676
{
627-
"id": "phase14",
677+
"id": "phase16",
628678
"title": "Audit History API",
629679
"version": "1.0.0",
630680
"status": "pending",
@@ -646,7 +696,7 @@
646696
},
647697

648698
{
649-
"id": "phase15",
699+
"id": "phase17",
650700
"title": "Audit Filters & Indexes",
651701
"version": "1.0.0",
652702
"status": "pending",
@@ -668,7 +718,7 @@
668718
},
669719

670720
{
671-
"id": "phase16",
721+
"id": "phase18",
672722
"title": "PSR Logger Integration",
673723
"version": "1.0.0",
674724
"status": "pending",
@@ -690,7 +740,7 @@
690740
},
691741

692742
{
693-
"id": "phase17",
743+
"id": "phase19",
694744
"title": "Telegram Alerts",
695745
"version": "1.0.0",
696746
"status": "pending",
@@ -712,7 +762,7 @@
712762
},
713763

714764
{
715-
"id": "phase18",
765+
"id": "phase20",
716766
"title": "Webhook Dispatcher",
717767
"version": "1.0.0",
718768
"status": "pending",
@@ -734,7 +784,7 @@
734784
},
735785

736786
{
737-
"id": "phase19",
787+
"id": "phase21",
738788
"title": "Retry Engine & Delivery Tests",
739789
"version": "1.0.0",
740790
"status": "pending",
@@ -759,7 +809,7 @@
759809
},
760810

761811
{
762-
"id": "phase20",
812+
"id": "phase22",
763813
"title": "Monitoring APIs",
764814
"version": "1.0.0",
765815
"status": "pending",
@@ -781,7 +831,7 @@
781831
},
782832

783833
{
784-
"id": "phase21",
834+
"id": "phase23",
785835
"title": "Unit Consistency Tests",
786836
"version": "1.0.0",
787837
"status": "pending",
@@ -802,7 +852,7 @@
802852
},
803853

804854
{
805-
"id": "phase22",
855+
"id": "phase24",
806856
"title": "Attack Simulations",
807857
"version": "1.0.0",
808858
"status": "pending",
@@ -823,7 +873,7 @@
823873
},
824874

825875
{
826-
"id": "phase23",
876+
"id": "phase25",
827877
"title": "Redis & Mongo Stress",
828878
"version": "1.0.0",
829879
"status": "pending",
@@ -844,7 +894,7 @@
844894
},
845895

846896
{
847-
"id": "phase24",
897+
"id": "phase26",
848898
"title": "Coverage Hardening",
849899
"version": "1.0.0",
850900
"status": "pending",
@@ -865,7 +915,7 @@
865915
},
866916

867917
{
868-
"id": "phase25",
918+
"id": "phase27",
869919
"title": "Documentation & Packagist Release",
870920
"version": "1.0.0",
871921
"status": "pending",

0 commit comments

Comments
 (0)