Overview

Sprint 2, Week 1 (Mar 24 to Apr 2) output summary:

MetricCount
MRs authored and merged13
MRs reviewed (in-depth, threaded)2
MRs merged as maintainer6+ (from teammates)
Commits (across all branches)100+
Domains covered9 (CI/CD, infra, backend, frontend, database, DevOps tooling, email, SonarQube, Supabase staging)
Linear tickets created10 (2 CI tickets + 8 BDD subtasks)

Quantitative Output

MRs Authored and Merged

8 MRs created and merged to main this week:

MRTypeDescription
!107fix(ci)Fix schema-test timeout and linear merged crash
!108featEmail integration and templates (Resend + Jinja2)
!110fix(web)Fix CodeMirror editor not showing template content
!111feat(web)Enhance email template editor with toolbar and line numbers
!112feat(web)Audit and complete toast notifications for all CRUD actions
!116fixPer-workspace isolated infra for Superset workspaces
!119fixDocker Compose grouping and workspace naming for Superset
!120featMulti-device session management (full-stack, TDD)

MRs Reviewed

2 MRs reviewed with detailed threaded discussions (not just approvals):

MRAuthorIssues Found
!109dafandikri16 (5 P0, 4 P1, 3 P2, 4 P3)
!118froklax8 (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:

  1. red(api): add tests for user_sessions DB queries
  2. green(api): implement user_sessions DB queries
  3. red(api): add tests for session service
  4. green(api): implement session service
  5. red(api): add tests for session-aware get_current_user
  6. green(api): add session validation and activity tracking
  7. red(api): add tests for session router
  8. green(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_sessions table 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:

MRTypeDescription
!126featCI report comments on MRs (ci-report.sh, 8 subcommands)
!129featBDD report extraction and MR comment
!131featSIRA Bot token for CI comments
!132featSonarQube quality gate report
!138featStaging 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

Evidence

All MRs Authored

MR Reviews (threaded discussions)

  • !109: 16 issues on blue/green deployment
  • !118: 8 issues on cancel invoice

Linear Tickets