~/abhipraya
PPL: Work Ethic and Commitment [Sprint 2, Week 1]
Overview
Sprint 2, Week 1 (Mar 24 to Apr 2) output summary:
| Metric | Count |
|---|---|
| MRs authored and merged | 13 |
| MRs reviewed (in-depth, threaded) | 2 |
| MRs merged as maintainer | 6+ (from teammates) |
| Commits (across all branches) | 100+ |
| Domains covered | 9 (CI/CD, infra, backend, frontend, database, DevOps tooling, email, SonarQube, Supabase staging) |
| Linear tickets created | 10 (2 CI tickets + 8 BDD subtasks) |
Quantitative Output
MRs Authored and Merged
8 MRs created and merged to main this week:
| MR | Type | Description |
|---|---|---|
| !107 | fix(ci) | Fix schema-test timeout and linear merged crash |
| !108 | feat | Email integration and templates (Resend + Jinja2) |
| !110 | fix(web) | Fix CodeMirror editor not showing template content |
| !111 | feat(web) | Enhance email template editor with toolbar and line numbers |
| !112 | feat(web) | Audit and complete toast notifications for all CRUD actions |
| !116 | fix | Per-workspace isolated infra for Superset workspaces |
| !119 | fix | Docker Compose grouping and workspace naming for Superset |
| !120 | feat | Multi-device session management (full-stack, TDD) |
MRs Reviewed
2 MRs reviewed with detailed threaded discussions (not just approvals):
| MR | Author | Issues Found |
|---|---|---|
| !109 | dafandikri | 16 (5 P0, 4 P1, 3 P2, 4 P3) |
| !118 | froklax | 8 (3 P0, 3 P1, 2 P3) |
Both reviews posted as GitLab discussion threads with severity grading and code snippet fixes for every issue. Details in the c2 communication blog.
Cross-Domain Coverage
This week’s work spanned seven areas:
Features (3 MRs)
- Multi-device session management (!120): Full-stack feature with TDD, 24 files across API and web. Session tracking, device listing, remote revocation, activity throttling.
- Email integration (!108): Resend API, Jinja2 templates, settings page with template CRUD, manual email sending endpoint.
- Toast notification audit (!112): Standardized error extraction and toast feedback across all CRUD mutations in the app.
Frontend (2 MRs)
- CodeMirror editor integration with React lifecycle fix (!110)
- Formatting toolbar, line numbers, active line highlight (!111)
CI/CD (1 MR + many commits)
- Schema-test timeout fix and linear notifier crash fix (!107)
- 7 iterations of schema-test hardening (auth, UUID validation, rate limiting bypass, blocking enforcement)
- SonarQube quality gate fixes (email template coverage, Bandit false positives)
DevOps Tooling (2 MRs)
- Per-workspace isolated infra for Superset: separate Redis, Supabase, Celery per workspace (!116)
- Docker Compose profile grouping and auto-detect workspace containers in db commands (!119)
Quality Indicators
TDD Discipline
The multi-device session management feature (!120) was built with strict red-green-refactor:
red(api): add tests for user_sessions DB queriesgreen(api): implement user_sessions DB queriesred(api): add tests for session servicegreen(api): implement session servicered(api): add tests for session-aware get_current_usergreen(api): add session validation and activity trackingred(api): add tests for session routergreen(api): implement session REST endpoints
Each layer was tested before implementation. The commit history makes this traceable.
Iterative Problem-Solving
The schema-test CI job is an example of iterative refinement over brute-force solutions. Rather than disabling the job when it kept failing, each failure was diagnosed and fixed:
- Timeout → explicit process cleanup
- 401s everywhere → JWT generation in CI
- Data corruption → GET-only scoping
- 500s on bad UUIDs → type validation at the router level
- Rate limiting → environment-aware bypass
Seven iterations, zero shortcuts.
Code Reviews as Knowledge Transfer
The MR !109 review (blue/green deployment) wasn’t just bug-catching. It taught the MR author about deployment safety patterns: health-check-before-destructive-ops, lock files for concurrent access, validation of state files. The MR author applied every P0 fix before merge.
Scope of the Multi-Device Session Feature
The biggest feature this week (!120) was a full-stack implementation spanning 24 files:
- Database: migration for
user_sessionstable with indexes - Backend: DB queries, service layer (with session limit enforcement and UA parsing), router, auth dependency modification
- Frontend: Devices page, session API client, TanStack Query hooks, login flow modification, sidebar menu addition
- Tests: 33 backend tests + frontend component tests
This was built end-to-end by one person in one sprint week, including the schema-test compatibility fix that the new table required.
Extended CI/CD Session (Apr 1 to 2)
A two-day session focused on CI reporting infrastructure and schema-test reliability:
| MR | Type | Description |
|---|---|---|
| !126 | feat | CI report comments on MRs (ci-report.sh, 8 subcommands) |
| !129 | feat | BDD report extraction and MR comment |
| !131 | feat | SIRA Bot token for CI comments |
| !132 | feat | SonarQube quality gate report |
| !138 | feat | Staging Supabase for schema-test |
The staging Supabase ticket (SIRA-224) went through 10 debugging iterations: sudo permissions, URL encoding, wrong pooler hostname, IPv6 vs IPv4, stderr redirect hangs, auth_user_id FK constraints, RLS permission denied, PostgREST role grants. Each iteration was a push, watch CI, diagnose, fix, push cycle.
Additionally created 8 BDD coverage expansion tickets (SIRA-232 to SIRA-239) with detailed acceptance criteria and scenario lists for team members.
Discipline
- Hadir tepat waktu di kelas dan meetings
- Responsive to team issues in Discord throughout the week
- Conventional commits consistently followed across all 13 MRs
- All MRs include proper Linear ticket codes in titles