Skip to content

Iteration 5

Choose a tag to compare

@Niravanaa Niravanaa released this 25 Nov 04:31
· 630 commits to main since this release
83572da

Release Date: November 24, 2025

🎯 Overall Summary

Iteration 5 focused on post-Release 1 refinements, delivering critical bug fixes, performance optimizations, and infrastructure improvements. This iteration addressed Safari compatibility issues, implemented task reordering functionality, enhanced scenario validation with line number tracking, and established automatic simulation resource cleanup. Key achievements include WebSocket refactoring, OSRM integration with containerization, and RAF-based batching for improved map rendering performance.

🏎️ Velocity

image

For the fifth iteration, we planned and successfully completed the following:

  • ✅ Safari WebSocket authentication fix (PR: #378)
  • ✅ WebSocket logic extraction into custom hook (PR: #385)
  • ✅ Scenario validation enhancements with line numbers (PR: #379)
  • ✅ Task reordering functionality (PR: #383)
  • ✅ Simulation resource cleanup and auto-shutdown (PR: #384)
  • ✅ OSRM integration with containerization (PR: #337)
  • ✅ RAF-based map update batching (PR: #387)
  • ✅ SimEntity constructor refactoring (PR: #386)
  • ✅ Backend Dockerfile updates for pyproject.toml (PR: #389)
  • ✅ Password dialog state reset fix (PR: #334)

💵 Contractor Estimate

Artifact Type Level of Effort Estimated Price (CAD)
Frontend Performance & WebSocket Refactor Medium (35h) $770
Backend Task Management & Resource Cleanup Medium (40h) $880
Infrastructure & Containerization Medium (30h) $660
Testing & Documentation Low (10h) $220
Total 115h $2,530

🔄 Retrospective

What Went Well

  • OSRM finally merged (+2)
  • Teamwork makes the dream work
  • Work got done despite most of the team having an exam and delays from stakeholder
  • Meetings with stakeholder were effective (+2)
  • Huge performance refactors saved project feasibility (+1)

What Went Wrong

  • R1 deliverables bled into iteration 5 (+1)
  • Stakeholder's illness made us delayed on iterative work
  • PRs were opened super early but became a bit stale (CSSE responses, Stakeholder AFK)
  • Final exam on the day before iteration 5 due date was tough for members
  • Many team members afk

What Can Be Improved

  • N/A - velocity was low due to various factors

👥 Contributions by Individuals

@vinishamanek - Vinisha Manek [ID: 40229456]

  • Docs: Release 1 demo video in #333

    • Added Release 1 Demo Video to README
  • Docs: Wiki contributions in Repo Wiki

    • List of Revisions: 1 | 2 | 3 | 4 | 5

@mahutt - Thomas Mahut [ID: 40249811]

  • Frontend: Password dialog state reset in #334

    • Resets the reset-password-dialog message after it is closed
    • Added loading state for visual feedback
    • Cancelled setTimeout on manual dialog close
  • Docs: Bug report template enhancement in #381

    • Added ideal hours estimate field to bug report template
    • Updated .github/ISSUE_TEMPLATE/bug_report.md
  • Infrastructure: AWS deployment updates in #389

    • Updates AWS deployment code to accommodate OSRM refactor in production
    • Added OSRM service container to VeloSimStack
    • Updated docker/nginx-proxy/nginx.conf for websocket support
  • Docs: Wiki contributions in Repo Wiki

@Jpuntul - Jutipong Puntuleng [ID: 40080233]

  • Frontend: Safari WebSocket authentication fix in #378

    • Fixed Safari WebSocket authentication failures with cookie attribute formatting
    • Changed Secure flag to conditional format Safari accepts
    • Disabled SSR to prevent AuthProvider hydration mismatches
  • Frontend: WebSocket logic extraction in #385

    • Created useSimulationWebSocket hook to encapsulate full WebSocket lifecycle
    • Added comprehensive test suite covering lifecycle, frames, errors, and auth
    • Simplified SimulationProvider by ~200 lines
  • Frontend: Map rendering optimization in #387

    • Implemented requestAnimationFrame-based batching to prevent excessive re-renders
    • Added queueMapUpdate() and flushMapUpdates() for batch processing
    • Reduced 5 clicks from 5 separate renders to 1-2 batched renders

@CarciDev - David Carciente [ID: 40247907]

  • Infrastructure: OSRM refactor and containerization in #337
    • Unified .env configuration in root directory
    • Implemented hybrid containerization for production and development
    • Migrated from OSM to OSRM with Docker networking configuration

@Niravanaa - Nirav Patel [ID: 40248940]

  • Backend: Scenario validation enhancements in #379
    • Added optional line number tracking for precise error reporting
    • Implemented automatic task ID generation (sequential from 1)

@MeSumo - Sumer Abd Alla [ID: 40247712]

  • Backend: Scenario validation enhancements in #379

    • Added support for dayX:HH:MM time format in validation
  • Docs: Wiki contributions in Repo Wiki

    • List of Revisions: 1 | 2 | 3

@Ambrose821 - Ambrose Mclaughlin [ID: 40239754]

  • Sim: Environment constructor refactoring in #386
    • Removed simpy.Environment from entity constructors
    • Moved environment logic to prep_entities() method
    • Prevents bugs from wrong event queue associations

@briantkatch - Brian Tkatch [ID: 40191139]

  • Backend: Task reordering functionality in #383
    • Implemented POST /simulation/{sim_id}/resources/reorder-tasks endpoint
    • Algorithm maintains in-progress tasks at top with top/bottom reordering modes
    • Thread-safe with WebSocket frame updates on changes

@Verdone - Giuliano Verdone [ID: 40252190]

  • Backend: Simulation resource cleanup in #384
    • Added auto-shutdown for idle simulations after 15 seconds
    • Refactored simulation_service to use global simulation instance
    • Updated tests to 92% coverage with environment variable docs

@cmezzac - Christopher Mezzacappa [ID: 40249451]

  • Led the research for replay/resume features #388
  • Looked into bug where tasks scheduled at same time appeared at different ticks. #331
  • Worked with Stakeholder to get performance expectations.
  • No code production but artifacts were built and presented to stakeholder. (Research Page)
  • Started preliminary research on replay and resume feature. (Research Page)

What's Changed

  • docs: add release 1 demo video by @vinishamanek in #333
  • fix: reset state of password dialog on close #319 by @mahutt in #334
  • Refactor: OSM to OSRM, .env unification and hybrid containerization of project for Prod and Dev by @CarciDev in #337
  • bugfix: resolve Safari WebSocket authentication and SSR hydration issues by @Jpuntul in #378
  • feat: enhance scenario validation with line number tracking and auto-generated task IDs by @Niravanaa and @MeSumo in #379
  • Add ideal hours estimate to bug report template #380 by @mahutt in #381
  • feat: reorder tasks by @briantkatch in #383
  • fix: release simulation resources #335 by @Verdone in #384
  • refactor: extract WebSocket logic into hook #344 by @Jpuntul in #385
  • fix: Remove env from sim entity constructors #329 by @Ambrose821 in #386
  • refactor: batch map updates with RAF queue by @Jpuntul in #387
  • fix: update backend dockerfile to use pyproject.toml in root by @mahutt in #389

Full Changelog: Iteration4...Iteration5