Iteration 7
Release Date: January 12, 2026
🎯 Overall Summary
Iteration 7 focused on metrics & observability, routing architecture, simulation features, and UI enhancements. This iteration delivered comprehensive metrics tracking for frontend actions and backend endpoints, Python application performance monitoring, vehicle inventory management, HQ widget implementation, and driver shift schedules. Key achievements include Grafana dashboard migration to a standalone package, OSRM decoupling via adapter pattern, MapController refactoring, unsaved changes protection, and resume simulation functionality.
🏎️ Velocity
💵 Contractor Estimate
| Artifact Type | Level of Effort | Estimated Price (CAD) |
|---|---|---|
| Metrics & Observability | High (35h) | $770 |
| Routing & Architecture Refactoring | Medium (30h) | $660 |
| Simulation Features & Enhancements | Medium (25h) | $550 |
| Frontend UI & UX Improvements | Low (20h) | $440 |
| Infrastructure & Bug Fixes | Low (15h) | $330 |
| Total | 125h | $2,750 |
Notes:
- The hours listed above represent the time specifically spent on developing the individual software artifacts. They do not reflect the total time our team has committed to Iteration 7.
🔄 Retrospective
What Went Well
- Got most of R2 sim behaviour implemented
- Usability test strategy is looking strong (+1)
- Great simulator enhancements (routing engine adapter, decoupling, entity method refactoring, driver schedules)
- Great pair programming for tasks (+1)
- Improved logs & metrics to better understand the app
- Good teamwork - people volunteer to help (+1)
What Went Wrong
- Blocked waiting for heavy sim PRs (+1)
- Left big PRs to last minute
- Last minute request from Fares for usability tests
- Bit off more than we can chew for work (flat burndown)
What Can Be Improved
- Communication between team members when schedule or technical blocks arise (+1)
- More communication with stakeholder (understandable for past weeks due to the break/holidays) (+2)
- Work loads could have been better spread between team members according to task weight and everyone's schedule (+2)
- Burndown chart a bit lackluster, 40-48% completion (+2)
- Be willing to hold design reviews for giant / complex implementations
👥 Contributions by Individuals
@Niravanaa - Nirav Patel [ID: 40248940]
-
Backend: Remove obsolete station code in #477
- Removed all deprecated code related to stations and station tasks entities
- Created Alembic migration to drop obsolete database tables
- Completed migration to keyframe-based persistence architecture
-
Backend: Enhanced simulation initialization in #479
- Improved error handling for simulation initialization and validation
- Enhanced validation error messages with specific field-level feedback
- Added structured error responses for better debugging
-
Frontend: Add metrics tracking for actions in #486
- Implemented comprehensive frontend context logging for user actions
- Added context attributes for scenario operations and user logout events
- Enhanced observability of user behavior not captured by backend metrics
-
Docs: Update logging documentation in #490
- Updated logging configuration documentation in README
- Cleaned up configuration table formatting
- Improved documentation clarity and accuracy
@briantkatch - Brian Tkatch [ID: 40191139]
-
CI: Remove orphaned containers on deploy in #493
- Added
--remove-orphansflag to docker-compose down command - Automated cleanup of orphaned Docker containers during deployment
- Improved deployment reliability and reduced resource waste
- Added
-
Infrastructure: Fix Grafana hostname in #522
- Resolved Grafana infinite redirect in production
- Fixed hostname configuration for reverse proxy
- Improved monitoring dashboard accessibility
-
Infrastructure: Add user to deployment server in #526
- Added m_mezz user to deployment server Ansible configuration
- Updated authorized SSH keys for team access
- Enhanced team collaboration capabilities
-
Infrastructure: Extend session lifetime in #529
- Extended JWT session lifetime from 1 hour to 12 hours
- Reduced user re-authentication frequency
- Improved user experience for long simulation sessions
@mahutt - Thomas Mahut [ID: 40249811]
-
Frontend: Add HQ widget to simulation UI in #514
- Implemented headquarters widget with location display
- Added HQ marker and information panel to simulation map
- Enhanced simulation UI completeness and monitoring
-
Backend: Delete calculateRouteProgress method in #516
- Removed obsolete calculateRouteProgress utility method
- Cleaned up unused route calculation code
- Simplified codebase after routing refactoring
-
Docs: Wiki contributions in Repo Wiki
@vinishamanek - Vinisha Manek [ID: 40229456]
-
Frontend: Iterate through task queue geometry in #498
- Implemented full task queue geometry iteration
- Fixed incomplete route visualization on map
- Display complete route paths for all queued tasks
-
Frontend: Add driver name and battery to resource item in #519
- Display driver names in resource items
- Show battery count for vehicles in UI
- Enhanced resource information display with real-time updates
-
Frontend: Fix nextTaskEndIndex overwrite in #520
- Prevented nextTaskEndIndex overwrite when HQ is next stop
- Fixed edge case in route calculation logic
- Improved routing reliability for HQ-bound vehicles
-
Docs: Wiki contributions in Repo Wiki
@Verdone - Giuliano Verdone [ID: 40252190]
-
Backend: Enforce Montreal coordinate bounds in #475
- Added coordinate validation for Montreal region boundaries
- Implemented geographic bounds checking for scenarios
- Prevented invalid scenario coordinates outside operational area
-
Backend: Add Python app performance monitoring in #488
- Implemented application performance monitoring with Prometheus
- Added CPU and RAM usage tracking metrics
- Enhanced observability of backend application health
-
Docs: Wiki contributions in Repo Wiki
@MeSumo - Sumer Abd Alla [ID: 40247712]
-
Sim: Vehicle Inventory Management in #491
- Implemented vehicle inventory management system
- Added vehicle capacity tracking and current inventory display
- Track batteries loaded/unloaded during simulation
-
Docs: Wiki contributions in Repo Wiki
@Jpuntul - Jutipong Puntuleng [ID: 40080233]
-
Frontend: Add unsaved changes protection in #496
- Implemented unsaved changes confirmation dialog
- Detect unsaved scenario modifications before navigation
- Prevent accidental data loss in scenario editor
@Michael-Mezzacappa - Michael Mezzacappa [ID: 40263789]
-
Backend: Refactor logging package in #497
- Refactored all logging-related logic into organized structure
- Consolidated logging setup files and configurations
- Improved logging infrastructure maintainability
-
Backend: Track endpoint metrics in #489
- Implemented Prometheus endpoint metrics tracking with OpenTelemetry
- Track HTTP request counts, durations, error rates, and status codes
- Created Grafana dashboard for request rate and latency analysis
-
Infrastructure: Move dashboard to standalone package in #533
- Migrated Grafana dashboard configuration to grafana_logging package
- Improved package organization and modularity
- Enhanced dashboard reusability across environments
-
Docs: Wiki contributions in Repo Wiki
@CarciDev - David Carciente [ID: 40247907]
-
Sim: Refactor MapController in #511
- Major refactoring of MapController architecture
- Improved separation of concerns for map management
- Enhanced code maintainability and testability
-
Sim: Decouple OSRM from Simulator in #512
- Implemented adapter pattern for routing engine
- Decoupled OSRM dependency from simulator core logic
- Enabled future support for multiple routing engines
@Ambrose821 - Ambrose McLaughlin [ID: 40239754]
-
Sim: Drivers follow shift schedules in #517
- Implemented driver shift schedule functionality
- Drivers respect assigned shift start/end times
- Enhanced simulation realism and workforce management
@cmezzac - Christopher Mezzacappa [ID: 40249451]
-
Frontend: Add resume simulation button in #527
- Implemented action button to resume paused simulator
- Added UI control for resuming simulation from paused state
- Enhanced simulation control functionality
-
Resume functionality for sim was finished. (PR Created) #544
What's Changed
- feat: enforce Montreal coordinate bounds by @Verdone in #475
- fix: remove obsolete files for station tasks, stations, and CRUD operations by @Niravanaa in #477
- fix: enhance simulation initialization and validation error handling by @Niravanaa in #479
- fix: update logging documentation and clean up configuration table in README by @Niravanaa in #490
- feat: add metrics tracking for frontend actions by @Niravanaa in #486
- ci: Remove orphaned containers on deploy #492 by @briantkatch in #493
- feat: add python app performance monitoring by @Verdone in #488
- feat: Vehicle Inventory Management by @MeSumo in #491
- feat: add unsaved changes protection to scenario editor #482 by @Jpuntul in #496
- refactor: All logging related logic and setup files #494 by @Michael-Mezzacappa in #497
- feat: Refactor MapController by @CarciDev in #511
- feat: iterate through task queue to get full geometry by @vinishamanek in #498
- fix: delete calculateRouteProgress method #515 by @mahutt in #516
- fix: prevent nextTaskEndIndex overwrite when HQ is next stop by @vinishamanek in #520
- fix: Remove Grafana hostname #521 by @briantkatch in #522
- ci: Add m_mezz to server #525 by @briantkatch in #526
- chore: Extend session lifetime to 12 hours by @briantkatch in #529
- feature: Added Action button to Resume simulator. by @cmezzac in #527
- feat: track endpoint metrics by @Michael-Mezzacappa in #489
- feat: drivers follow their shift schedules by @Ambrose821 in #517
- feat: Moved dashboard to grafana_logging package #532 by @Michael-Mezzacappa in #533
- feat: add hq widget to simulation ui #392 by @mahutt in #514
- feat: add driver name and battery count to resourceItem by @vinishamanek in #519
- feat: Decoupling of OSRM from Simulator via Adapter by @CarciDev in #512
Full Changelog: Iteration6...Iteration7