Critical Path Analysis¶
Detailed timeline showing dependencies, slack time, and risk areas in the 6-day aggressive schedule.
Timeline overview¶
gantt
title BRAC POC — 6-Day Execution
dateFormat YYYY-MM-DD
axisFormat %a
section Day 0 (opt)
OpenShift provision (overnight) :day0, 2026-04-24, 1d
section Phase 1 — Foundation
OpenShift validation :crit, p1a, 2026-04-25, 4h
Kafka KRaft (parallel) :p1b, 2026-04-25, 2h
Redis Sentinel (parallel) :p1c, 2026-04-25, 2h
GitLab HA (parallel) :p1d, 2026-04-25, 3h
Jenkins HA :p1e, 2026-04-25, 3h
section Phase 2 — Core OCP
Compliance scan :p2a, 2026-04-26, 1h
OTel + SigNoz + ClickHouse :crit, p2b, 2026-04-26, 5h
WSO2 APIM + IS :p2c, 2026-04-26, 3h
Middleware (NGINX + Liberty) :p2d, 2026-04-27, 2h
Phase 2 catch-up buffer :p2e, 2026-04-27, 4h
section Phase 3 — Supporting
Trivy + SBOM :p3a, 2026-04-29, 2h
ArgoCD GitOps :p3b, 2026-04-29, 2h
Nexus :p3c, 2026-04-29, 2h
JBoss domain :p3d, 2026-04-30, 2h
section Delivery
Integration testing :d1, 2026-04-30, 2h
Demo dry-run + video :crit, d2, 2026-04-30, 3h
Handoff :milestone, 2026-04-30, 0d
Dependency graph¶
flowchart TD
D0["Day 0 evening (optional)<br/>Start OpenShift provisioning"]:::optional
subgraph Phase1["Phase 1 — Day 1"]
OCP["OpenShift cluster<br/>8h · CRITICAL"]:::critical
GL["GitLab HA<br/>3h"]:::parallel
KF["Kafka KRaft<br/>2h"]:::parallel
RD["Redis Sentinel<br/>1.5h"]:::parallel
end
subgraph Phase2["Phase 2 — Days 2-3"]
COMP["Compliance scan<br/>1h"]
OTEL["OTel + SigNoz + ClickHouse<br/>5h · CRITICAL"]:::critical
WSO2["WSO2 APIM + IS<br/>3h"]
MW["Middleware (NGINX + Liberty)<br/>2h"]
end
subgraph Phase3["Phase 3 — Days 5-6"]
TV["Trivy + SBOM<br/>2h"]:::parallel
AC["ArgoCD GitOps<br/>2h"]:::parallel
NX["Nexus<br/>1.5h"]:::parallel
JB["JBoss domain mode<br/>2h"]
end
DEMO["Integration test + demo<br/>5h"]:::critical
D0 --> OCP
OCP --> COMP
OCP --> OTEL
OCP --> WSO2
KF --> OTEL
OTEL --> MW
WSO2 --> MW
MW --> DEMO
TV --> DEMO
AC --> DEMO
NX --> DEMO
JB --> DEMO
classDef critical fill:#c62828,stroke:#b71c1c,color:#fff
classDef parallel fill:#2e7d32,stroke:#1b5e20,color:#fff
classDef optional fill:#616161,stroke:#424242,color:#fff,stroke-dasharray: 5 5
The critical path
OpenShift → OTel → Middleware → Demo. A slip on any of these pushes the entire delivery. Everything else has slack.
Critical path (longest chain)¶
The sequence of activities that determines overall completion:
| Step | Activity | Duration | Running total |
|---|---|---|---|
| 1 | OpenShift provisioning | 8h | 8h |
| 2 | OTel stack (+ Kafka dependency) | 5h | 13h |
| 3 | Middleware (NGINX + Liberty) | 2h | 15h |
| 4 | Final integration | 2h | 17h |
| 5 | Demo + report | 2h | 19h |
Plus parallel Phase 3 (≈8h) — runs concurrently on Days 5-6, doesn't extend the critical path.
| Metric | Hours |
|---|---|
| Critical-path work | ~19h |
| Phase 3 in parallel | ~8h |
| Total engineering hours | ~27h |
| Available (6 days × 8h) | 48h |
| Buffer | ~21h (breaks, meetings, troubleshooting) |
Slack time analysis¶
Slack = hours an activity can slip before it blocks the next one.
| Activity | Planned | Slack | Risk if it slips |
|---|---|---|---|
| OpenShift (Day 0-1) | 8h | 0h | 🔴 CRITICAL — blocks Phase 2 |
| GitLab (Day 1) | 3h | 6h | 🟢 Can slip 6h |
| Kafka (Day 1) | 2h | 7h | 🟢 Can slip to Day 2 midday |
| Redis (Day 1) | 1.5h | 7.5h | 🟢 Can slip significantly |
| Compliance (Day 2) | 1h | 4h | 🟢 Can slip 4h |
| OTel stack (Day 2) | 5h | 0h | 🔴 CRITICAL — blocks middleware |
| WSO2 (Day 2) | 3h | 2h | 🟡 Tight — max 2h slip |
| Middleware (Day 3) | 2h | 2h | 🟡 Tight — max 2h slip |
| Phase 3 (Day 5-6) | 8h | 1h | 🟡 Must parallelize |
High-risk windows¶
Day 1, 09:00–18:00 — OpenShift provisioning
- If this fails, the entire project fails — no recovery path (manual setup adds 4-6h).
- Action: start provisioning on Day 0 evening.
- Monitoring: check status every 30 min.
Day 2, 09:00–18:00 — OTel observability stack
- Second critical-path item, 4 interdependent components.
- Data loss → restart → 1-2h delay.
- Action: start first thing Day 2 morning.
- Monitoring: verify traces flowing into SigNoz by 13:00.
Days 5-6 — Phase 3 components
- Only 1h of slack across all four components.
- If anything slips, no recovery time.
- Action: pre-stage all manifests before Day 5.
- Monitoring: deploy in parallel, not sequential.
Day-by-day schedule¶
Day 0 (night before) — optional but recommended¶
Start OpenShift provisioning a few hours before bed; let it run overnight. Terraform takes 3-4h — starting at night saves your entire Day 1 morning and gives a 4-hour buffer.
Check status first thing Day 1 morning.
Day 1 — Foundation & infrastructure¶
| Time | Activity |
|---|---|
| 09:00 | Check OpenShift status (if started Day 0). If complete, validate. |
| 09:30 | Parallel work kicks off: GitLab HA, Kafka, Redis (independent). |
| 11:00 | OpenShift should be ready — validate 3 nodes + console. |
| 12:30 | All Phase 1 components deploying or done. |
| 17:00 | Phase 1 checkpoint: all 4 ready? Proceed to Phase 2 or fix blockers. |
| evening | Run validation tests, document issues, prepare Phase 2 manifests. |
Phase 1 checkpoint — must all be ✅ to proceed:
- OpenShift cluster ready (critical)
- GitLab HA ready
- Kafka KRaft ready
- Redis Sentinel ready
Day 2 — Core Kubernetes components (CRITICAL)¶
| Time | Activity |
|---|---|
| 09:00 | Compliance scan kicks off (1h, runs in background). |
| 09:00 | OTel observability stack begins (4-5h, parallel to compliance). |
| • OTel Collector (~1h) | |
| • SigNoz (~1.5h) | |
| • ClickHouse (~1.5h) | |
| • Sample app (~1h) | |
| • Load test (~1h) | |
| 14:00 | Compliance scan complete — review results. |
| 15:00 | Start WSO2 APIM (2-3h). |
| 17:00 | OTel traces visible in SigNoz. |
| 18:00 | End-of-day checkpoint: OTel working? WSO2 ≥80% done? If behind, add 2h on Day 3. |
| evening | Stress-test OTel pipeline, document any data loss, prepare middleware manifests. |
Day 3 — Phase 2 completion¶
| Time | Activity |
|---|---|
| 09:00 | Finish WSO2 if not done (1-2h). |
| 10:00 | Start middleware (NGINX + Open Liberty, 2h). |
| 12:00 | Test full API flow: Client → NGINX → Liberty → WSO2. |
| 14:00 | All Phase 2 components deployed. |
| 15:00 | Phase 2 checkpoint: Compliance report? OTel traces? WSO2 SSO/gateway? Canary routing? |
| 16:00 | Buffer time — troubleshoot, optimize, validate. |
| evening | Start Phase 3 manifest prep if ahead; review Phase 3 issues. |
Phase 2 checkpoint — must all be ✅ to proceed:
- Compliance scan report generated
- OTel traces flowing into SigNoz
- WSO2 APIM / SSO responding
- Middleware canary routing verified
Day 4 — optional catch-up / early Phase 3¶
If Phase 2 complete by Day 3 EOD: - Start ArgoCD (2h) - Start Nexus (1.5h) - Test GitOps workflow
If Phase 2 incomplete: continue Phase 2 troubleshooting.
Evening: prepare remaining Phase 3 manifests.
Day 5 — Phase 3 (parallel)¶
| Time | Activity |
|---|---|
| 09:00 | Start four parallel deployments: Trivy, ArgoCD (if not Day 4), Nexus (if not Day 4), JBoss manifests prep. |
| 13:00 | All Phase 3 components deploying. |
| 14:00 | Verify accessibility: Trivy, ArgoCD, Nexus. Fix any failures now. |
| 17:00 | Buffer time for Phase 3 catch-up. |
| evening | Final integration test plan + demo script draft. |
Day 6 — demo & delivery¶
| Time | Activity |
|---|---|
| 09:00 | Deploy JBoss if not done (1-2h). |
| 10:30 | Final integration testing (2h) — all 9 components accessible? Key flows green? 4xx/5xx scan. |
| 12:30 | Lunch / break. |
| 14:00 | Demo dry-run (2-3h) — record video (15-20 min), generate validation report, screenshot all dashboards. |
| 17:00 | Final cleanup — push final code, verify PRs merged, write summary. |
| 18:00 | Delivery complete — ready for BRAC presentation. |
Contingency timeline (if behind)¶
If you're 4+ hours behind by EOD Day 3, cut in this priority order:
| Priority | Component | Action | Why |
|---|---|---|---|
| 1st cut | JBoss domain mode | ❌ Skip | Least critical to bank story |
| 2nd cut | Trivy dashboard | ⚠️ Reduce to CLI demo | Core capability still shown |
| 3rd cut | Nexus | ⚠️ Mention but don't show | Pattern is well-understood |
| 4th cut | ArgoCD manual sync | ⚠️ Show kubectl flow instead | GitOps value can be narrated |
| 5th cut | WSO2 SSO | ⚠️ Show API gateway only | SSO is complementary |
| 6th cut | Middleware canary | ⚠️ Show basic routing | Canary adds polish, not capability |
Never skip
- OpenShift cluster (foundation)
- Kafka (observability pipeline depends on it)
- OTel + SigNoz (headline demo feature)
- Final validation + report
Parallel work strategy¶
Simultaneous work to keep the critical path short:
| Phase | Activity | Duration | Owner |
|---|---|---|---|
| Day 1 | OpenShift | 8h | Infrastructure Lead |
| Day 1 | GitLab | 3h | DevOps Lead |
| Day 1 | Kafka | 2h | Platform Lead |
| Day 1 | Redis | 1.5h | Platform Lead |
| Day 2 | Compliance scan | 1h | Security Lead (background) |
| Day 2 | OTel stack | 5h | Platform Lead (CRITICAL) |
| Day 2 | WSO2 | 3h | Integration Lead |
| Day 3 | Middleware | 2h | Platform Lead |
| Days 5-6 | Trivy + ArgoCD + Nexus | 6h total | Split across team |
| Metric | Hours |
|---|---|
| Sequential total (no parallel) | ~33h |
| With full parallelization | ~14h wall-clock |
| Available (6d × 8h) | 48h |
| Parallel buffer | ~34h ✅ |
Go/No-Go checkpoints¶
Mandatory decision points:
| Checkpoint | Date / time | Criteria | Decision |
|---|---|---|---|
| Phase 1 Go | Day 1, 17:00 | All 4 Phase-1 issues meet DoD | GO → Phase 2 · STOP → fix Phase 1 |
| Phase 2 Go | Day 3, 17:00 | All 4 Phase-2 issues meet DoD | GO → Phase 3 · STOP → delay BRAC demo |
| Phase 3 Go | Day 5, 17:00 | Trivy, ArgoCD, Nexus running | GO → demo · PARTIAL → subset demo |
| Demo Ready | Day 6, 14:00 | Final validation passed | GO → deliver · DELAY → reschedule BRAC |
Escalation
If NO-GO at any checkpoint, escalate immediately to the Project Lead and BRAC Bank contact.
References¶
- Risk Register — mitigations for known failure modes
- Definition of Done — checkpoint acceptance criteria
- Assumptions & Constraints — scope boundaries
- Deployment — exact commands to execute each step
Created: 2026-04-24 · Owner: Project Lead · Status: Ready for execution