1 / 14
Pillar 2B Assessment
Laravel Migration
Assessment
Evaluate velocity, AI-automation potential, and path from 8 to 2 people
February 28, 2026 · Jostein Svendsen
2 / 14
Critical Finding
What Git Shows vs. What's Actually Happening
Git Says
- Only 3 contributors active in 2026
- Velocity dropped 78% from peak
- Only 35 commits on master in February
- Team appears to have dissolved
Reality (from Slack)
- 7+ developers posting weekly statuses
- 548 unmerged commits on feature branches
- 300k+ lines of unmerged code
- Team is highly active — hidden behind shared "design" git account
The "design" shared git account hides 7 developers. 64.5% of all commits (404k lines changed) are unattributable. Individual productivity cannot be measured from git alone.
3 / 14
Velocity Analysis
Commit History (6 Months)
But all-branch activity in February is ~293 commits. The master-only view is misleading. 4 massive feature branches (GTT-554, GTT-662, GTT-503, GTT-670) hold the bulk of recent work.
4 / 14
Team Analysis
The Actual Team (from Slack Intelligence)
| Developer | Current Focus | Status |
| Danish Mirza | Global Settings — Playwright tests, SonarQube, senior code reviewer | Active |
| Ahmad Ashfaq | Global Settings — Ecommerce tab, accessibility fixes, coding standards v2.2 | Active |
| Ali Shouket | Global Settings — Telemedicine backend, controller splitting | Active |
| Shabbir Ahmad | Case Manager Portal — Cases, Order Approval, Orders (full parity) | Active |
| Afzaal Ahmad | Case Manager Portal — Tasks, Users, Bulk Upload, Contact Form | Active |
| Bilal | Super Admin — Contact Us, Email Queue (complete) | Active |
| Usama Majeed | Medical Staff Portal — using Claude + Cursor AI tools | AI-assisted |
| Komal Toqeer | PM / Coordinator | Coordination |
| Javier Celis | Product Owner — architectural decisions | Decisions |
5 / 14
Progress
Portal Status (8 Portals)
548 unmerged commits sit on 4 feature branches with 300k+ lines. Once merged, completion percentages will jump significantly.
6 / 14
Hidden Work
548 Unmerged Commits on Feature Branches
| Branch | PR Status | Commits | Files Changed | Lines Added |
| GTT-554 Global Settings | Draft | 466 | 1,747 | +348,384 |
| GTT-662 Case Manager | Open | 439 | 1,599 | +328,255 |
| GTT-670 Contact Us | Open | 428 | — | — |
| GTT-503 Form Intake | Open | 410 | — | — |
Merge risk is HIGH. These mega-PRs (33k+ lines each) cannot be properly reviewed. They must be broken into smaller PRs before merging. A 33,000-line PR reviewed in 2 days is rubber-stamped, not reviewed.
7 / 14
Evaluation
Industry Best Practices: Grade B-
What's Good
- Modern stack: Laravel 11, Vue 3, TypeScript strict
- Quality tools: PHPStan L6, SonarQube, Larastan, Playwright
- 4-layer architecture: Controller → Manager → Service → Repository
- LARAVEL_CODING_STANDARDS.md v2.2
- Hashids, RBAC, activity logging
- Danish Mirza doing structured code reviews
What's Broken
- Shared git account — 64% of commits anonymous
- Quality gates faked — PHPStan runs with
|| true
- Mega-PRs — 33k lines rubber-stamped in hours
- Encrypted search — decrypts ALL users in a loop
- No staging — deploys directly to production
- <30% test coverage — phpunit.xml excludes Modules/
| Category | Grade | Key Issue |
| Architecture | B+ | Solid modular design, thin services wrapping repos |
| Quality Tools | A- | All present but some not enforced |
| Frontend | B | Vue 3 + Inertia good, legacy coexistence |
| Testing | C | <30% coverage, Modules/ excluded from phpunit.xml |
| Security | B- | RBAC good, encryption search pattern broken |
| DevOps | B- | Pipeline exists, gates not enforced, no staging |
| Team Process | D+ | Shared git account, mega-PRs, one reviewer |
8 / 14
Efficiency
Too Many Chefs, Not Enough Kitchen
Current: 7 Devs + PM + PO
- 21 communication channels (n*(n-1)/2)
- One reviewer bottleneck (Jostein)
- Mega-PRs because long-lived branches
- Shared git account blocks accountability
- 7 people waiting for review → context switching
- Coordination overhead: weekly statuses, PM overhead
Target: 2 Devs + AI
- 1 communication channel
- Self-review + AI pre-review
- Small PRs, trunk-based development
- Full accountability on every commit
- AI scaffolds CRUD in minutes, not weeks
- Zero coordination overhead
The Math
| Task | 7-Person Team | 2 People + AI |
| New CRUD module (6 pages) | 1-2 weeks | 1-2 days |
| Role variant (clone Case Manager → Medical Staff) | 2-3 weeks | 2-3 days |
| Bug fix + regression test | 2-4 hours (assign → PR → review → merge) | 30-60 min |
| SonarQube compliance per module | 1-2 weeks | 1-2 hours |
9 / 14
AI Potential
AI Automation Potential
85-95% Automatable
- Standard CRUD pages (Index/Create/Edit)
- Role-based page variants from templates
- Controller cleanup (remove Blade fallbacks)
- TypeScript type definitions
- Test generation (route smoke tests)
- SonarQube compliance fixes
- Documentation generation
40-60% Automatable (needs humans)
- Twilio SMS integration
- Stripe payment flows (PCI compliance)
- Live video/chat (WebRTC)
- PDF test result viewer
- Consent form system (legal workflows)
- Report center (business logic)
- Schedule management (drag-drop)
Key advantage: The Case Manager portal (built by Shabbir + Afzaal) provides a complete template for Medical Staff and Manager portals. AI can use this as a reference implementation to generate role variants with ~80% accuracy. One developer already using Claude Code + Cursor (Usama).
10 / 14
Risks
Top 5 Risks
1. Shared Git Account
64% of commits unattributable. If TechTiz team leaves, history is opaque. Fix: Individual accounts immediately (5 min per person).
2. No Staging Environment
Jenkinsfile deploys git pull origin master directly to production. One bad merge = downtime. Fix: Set up staging server.
3. Quality Gates Are Fake
PHPStan, security audits run with || true — failures silently ignored. Fix: Remove || true from Jenkinsfile (1 hour).
4. 548 Unmerged Commits
300k+ lines on feature branches. Mega-PRs (33k lines) can't be properly reviewed. Fix: Break into sub-PRs, enforce 500 LOC limit.
5. Knowledge Concentration
7 developers have module-specific Core PHP knowledge that isn't documented. Fix: Recorded walkthroughs before any team reduction.
11 / 14
Recommendation
Staffing Path: 7 → 2 in 8 Weeks
Week 1 (Mar 3) — Merge Sprint
7 developers → merge all PRs
Break mega-PRs into reviewable chunks. Individual git accounts. Fix quality gates. Enforce Jenkinsfile.
Weeks 2-3 (Mar 10) — Knowledge Transfer
7 developers → document everything
Each developer records 30-min module walkthrough. Document Core PHP → Laravel decisions. Set up staging.
Week 4 (Mar 24) — First Reduction
7 → 3-4 developers
Keep Danish (senior/reviewer), 1-2 portal builders, Usama (AI-tooled). Begin AI-assisted Manager portal.
Week 6 (Apr 7) — Second Reduction
3-4 → 2 developers
2-person team + AI at full velocity. Complete remaining modules.
Week 10 (May 5) — Feature Complete
All 8 portals functional
Test coverage >80%. Legacy code removed. Production-ready. Steady state: 2 people.
12 / 14
Projections
Three Scenarios
A: Keep Current Team
8-12 wks
May-Jun 2026
- 7 devs continue as-is
- Same coordination overhead
- Higher cost, same quality issues
- No process improvement
B: Phased Reduction (Recommended)
8-10 wks
May 2026
- 7 → 4 → 2 over 6 weeks
- Knowledge transfer built in
- AI acceleration from week 4
- Best balance of speed + cost
C: Cut to 2 Immediately
12-16 wks
Jun-Jul 2026
- Lose 548 unmerged commits context
- No knowledge transfer
- Higher risk of rework
- Paradoxically slower
13 / 14
Action Items
Immediate Actions (This Week)
Monday (zero cost)
- Individual git accounts for all 7 TechTiz developers
- Remove
|| true from Jenkinsfile quality gates
- Add
Modules/ to phpunit.xml coverage
This Week
- Break GTT-554 (33k lines) and GTT-662 (16k lines) into sub-PRs
- Enforce 500 LOC PR size limit
- Create CODEOWNERS file
- Set up staging environment
Next 2 Weeks
- Each developer records module walkthrough (30 min)
- Document Core PHP → Laravel architectural decisions
- Merge all complete feature branches to master
- Merge LARAVEL_CODING_STANDARDS.md v2.2
March (Week 4)
- First team reduction: 7 → 3-4
- AI-scaffold Manager portal from Case Manager template
- Begin legacy Blade/jQuery cleanup
- Achieve >80% test coverage on new code
14 / 14
Summary
Bottom Line
8-10 wks
To Feature Complete
The Good News
- The hard architectural work is done
- Case Manager portal provides a complete template for remaining portals
- Team already using AI tools (Claude, Cursor)
- Strong quality infrastructure exists (just needs enforcing)
- 85-90% of remaining CRUD work is AI-automatable
The Urgent Fixes
- Today: Individual git accounts + fix quality gates
- This week: Break mega-PRs, set up staging
- Week 2-3: Knowledge transfer + documentation
- Week 4: First reduction (7 → 3-4)
- Week 6: Target state (2 people + AI)
Full report: docs/laravel-migration-assessment-2026-02-27.md ·
Slack export: docs/slack-export-core-php-migration-statuses.md
Laravel Migration Assessment · Feb 28, 2026
Scroll to navigate · 14 slides