Skip to content

Iteration 9

Choose a tag to compare

@Niravanaa Niravanaa released this 10 Feb 04:20
· 319 commits to main since this release
c5d262e

Release Date: February 9, 2026

🎯 Overall Summary

Iteration 9 focused on advanced traffic control systems, simulation reporting metrics, scenario editing improvements, and infrastructure upgrades. This iteration delivered major advancements in congestion control with a complete traffic state machine, per-segment traffic application, batch task operations, entity creation forms, and logging infrastructure improvements. Key achievements include the implementation of US-25 (Congestion Control) across three coordinated PRs, simulation performance metrics, enhanced scenario editor with CodeMirror integration, and the migration from Promtail to Grafana Alloy.

🏎️ Velocity

image

💵 Contractor Estimate

Artifact Type Level of Effort Estimated Price (CAD)
Traffic & Congestion Control High (35h) $770
Simulation Features & Metrics Medium (18h) $396
Frontend Enhancements Medium (15h) $330
Infrastructure & Logging Medium (11h) $242
Backend Improvements Low (4h) $88
Total 83h $1,826

Notes:

  • Hourly rate assumed: $22/hr (average co-op software engineering rate from Concordia, source).
  • 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 9.

🔄 Retrospective

What went well?

  • Fast PR reviews (+2)
  • Quicker response timings on the PR comments/reviews
  • Completed stakeholder-identified high-priority issues (+1)
  • We've kept stakeholder up to date on ATs

What went wrong?

  • Some poor task size estimation
  • Left some tasks till the end of the iteration (+2)
  • Low on sim team reviewers (+1)

What can be improved on?

  • Team Bonding Activity (+2)
  • Some delays and last minute work (+2)

🤝 Individual Contributions

@CarciDev - David Carciente [ID: 40247907]

  • Sim: Granular Per-Segment Traffic Control in #674

    • Implemented per-segment traffic control system allowing traffic to target specific node-to-node segments within roads
    • Created TrafficRange dataclass and road node tracking infrastructure with O(1) lookup performance
    • Added comprehensive traffic application flow with reverse indexing and segment-wise multiplier calculations
  • Sim: Traffic Parser in #683

    • Introduced traffic event system for loading and managing events from CSV files
    • Created MapPayload configuration structure for cleaner map initialization
    • Added TrafficEvent and TrafficEventState entities with CSV parser and validation
  • Sim: Traffic Event State Machine in #696

    • Implemented core traffic event state machine with PENDING → TRIGGERED → APPLIED → EXPIRED → DONE lifecycle
    • Added SimPy-based event processing pipeline with synchronization and geometry resolution
    • Integrated routing provider traffic updates with graceful NotImplementedError handling
  • Sim: TrafficStateStore with sim_id Isolation in #697

    • Implemented thread-safe in-memory TrafficStateStore for per-simulation traffic state isolation
    • Wired sim_id through Simulator → SimulationEnvironment → MapPayload → OSRMAdapter chain
    • Added 5 traffic CRUD methods to OSRMAdapter (set, get, clear, batch operations)
  • Sim: Traffic Mapper with PositionRegistry in #698

    • Created PositionRegistry for O(1) geometry intersection between roads and traffic events
    • Implemented point generation strategies and road traffic application via overlap detection
    • Completed allocated synchronization paths with GPS_SYNC_DELAY between sim and routing provider updates
  • Sim: Traffic Testing Script in #705

    • Developed dynamic_traffic_demo.py for generating scenarios with deterministic traffic events
    • Implemented three-pass validation (direct, pipeline, routing provider) with timing calculations
    • Created GeoJSON visualization output with per-road polylines, traffic markers, and speed-colored waypoints
  • Docs: Wiki contributions in Repo Wiki

    • Updated Missing knowledge and Independent Learning with traffic engine research and learning documentation.
    • Created Routing + Traffic Engine Research page with comprehensive traffic implementation details.
    • Updated Overall Architecture and Class Diagrams, Performance, and Risks pages.
    • List of Revisions: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11

@Verdone - Giuliano Verdone [ID: 40252190]

  • Frontend: Hide stations with zero tasks in #669

    • Implemented filter-based approach to hide station icons with taskCount = 0 from simulation map
    • Enhanced map clarity by reducing visual clutter and focusing attention on active stations
    • Used feature filtering to remove zero-task stations from layer rendering
  • Backend: Batch task assign endpoint in #675

    • Created mass task assignment endpoint supporting multiple task assignment in single operation
    • Implemented best-effort approach with per-item result reporting for batch operations
    • Added comprehensive test coverage for batch assignment scenarios
  • Backend: Task-reassignment to batch assign in #700

    • Enhanced batch assignment endpoint to handle both fresh assignments and reassignments seamlessly
    • Removed need for frontend to distinguish between assignment types in batch operations
    • Added tests for mixed batch operations including reassignment scenarios
  • Docs: Wiki contributions in Repo Wiki

    • Updated Meeting Minutes – General and Missing knowledge and Independent Learning documentation.
    • List of Revisions: 1 | 2 | 3

@Niravanaa - Nirav Patel [ID: 40248940]

  • Frontend: Fix unsaved changes dialog in #671

    • Fixed incorrect unsaved changes dialog appearing when deleting different scenario
    • Added isDeleteDialogOpen state tracking to prevent false positive warnings
    • Enhanced unsaved changes detection to treat empty content as no changes
  • Backend: Append timestamps to logs in #677

    • Added timestamps to all backend log file outputs for self-contained debugging
    • Updated FILE_LOG_FORMAT in logger.py to include asctime timestamp
    • Added test coverage to verify timestamp presence and format in log files
  • Backend: Branch simulation service layer test coverage in #676

    • Increased test coverage for branch_simulation service method error paths
    • Added tests for missing scenario_payload, keyframe parsing failures, and DB rollback scenarios
    • Enhanced error path coverage for previously untested edge cases
  • Contributed to traffic event state machine design

@vinishamanek - Vinisha Manek [ID: 40229456]

  • Docs: Demo videos for setup in #653

    • Added video recordings for Mac and Windows setup processes to README
    • Enhanced documentation accessibility with visual setup guides
    • Improved onboarding experience for new developers
  • Docs: Release 2 demo video in #658

    • Added Release 2 demo video link to README documentation
    • Provided visual demonstration of release features and functionality
    • Enhanced project documentation with multimedia content
  • Docs: Deployment link to README in #687

    • Updated README with velosim.app deployment link and TA credentials
    • Made production environment easily accessible for testing and evaluation
    • Improved documentation for external stakeholders
  • Docs: Wiki contributions in Repo Wiki

    • Updated Usability Tests documentation.
    • List of Revisions: 1

@briantkatch - Brian Tkatch [ID: 40191139]

  • CI: Improve database standup and migration in #681

    • Fixed deployment scripts to prevent postgres_data volume destruction during deployments
    • Improved PostgreSQL healthcheck configuration with increased retries and start period
    • Added prepare mode to migration script for safe manual database restoration
  • Backend: ProgressionLIVE-like REST endpoints in #684

    • Added endpoint to get current simulation frame with all state information
    • Implemented pagination and filtering support for tasks and drivers with maxResults and startResult
    • Added expansion support for including station or task/vehicle details in responses

@cmezzac - Christopher Mezzacappa [ID: 40249451]

  • Sim: Report driving vs servicing time in #685

    • Implemented simulation metrics tracking time drivers spent driving vs performing tasks
    • Added report field to payload with servicingToDrivingRatio metric
    • Created SimulationMetrics class wrapper integrated with SimPy environment
  • Sim: Report average tasks per shift in #710

    • Added tasks_completed_per_shift tracking to SimulationReport
    • Implemented get_average_tasks_per_shift computation for shift-based metrics
    • Integrated task count reporting at driver shift end with comprehensive test coverage

@Jpuntul - Jutipong Puntuleng [ID: 40080233]

  • Frontend: Entity-specific forms in #682

    • Created insertion forms for vehicles, stations, and drivers with comprehensive validation
    • Implemented Montreal geographic bounds checking and scheduled task format validation
    • Added temporal logic validation for driver time formats and lunch break constraints
  • Frontend: CodeMirror scenario editor in #690

    • Replaced custom textarea with CodeMirror 6 for robust JSON editing experience
    • Added built-in line numbers, syntax highlighting, auto-indentation, and bracket matching
    • Implemented code folding and search functionality for large scenario files

@Michael-Mezzacappa - Michael Mezzacappa [ID: 40263789]

  • Docs: Updated grafana README in #655

    • Fixed outdated information in grafana_logging README file
    • Corrected frontend logging endpoint paths to match actual API
    • Updated file structure paths and timestamp re-ingestion notes
  • Infrastructure: Grafana Alloy setup with HTTP logging in #708

    • Replaced Promtail with Grafana Alloy for local development log collection
    • Implemented direct HTTP push to Loki eliminating file-based pipeline
    • Rewrote logger.py with custom LokiHandler for instant log delivery
  • Docs: Wiki contributions in Repo Wiki

    • Created VeloSim Observability & Performance Insights page with comprehensive monitoring documentation.
    • Updated _Sidebar with new observability section.
    • List of Revisions: 1 | 2 | 3 | 4

@MeSumo - Sumer Abd Alla [ID: 40247712]

  • Frontend: HQ Widget Hover Corners in #678

    • Fixed HQ widget corners un-rounding on hover by adding overflow-hidden
    • Ensured button hover effects stay within rounded widget bounds
    • Tested fix across multiple browsers for consistency
  • Docs: Wiki contributions in Repo Wiki

    • Updated Meeting Minutes – General documentation with iteration meeting notes.
    • List of Revisions: 1 | 2 | 3
  • Contributed to traffic event state machine design

  • Reviewed all sim PRs except for one

@mahutt - Thomas Mahut [ID: 40249811]

  • Frontend: Seek backwards from UI in #703

    • Introduced frame sources concept with LocalFrameSource and ServerFrameSource implementations
    • Created scrubber UI component using @radix-ui/react-slider for timeline control
    • Overhauled simulation provider to manage and control multiple frame sources
  • Docs: Wiki contributions in Repo Wiki

    • Updated VeloSim Observability & Performance Insights and Usability Tests documentation.
    • List of Revisions: 1 | 2

@Ambrose821 - Ambrose McLaughlin [ID: 40239754]

  • Sim: Refactor Scheduled Tasks(WIP) in #581
    • Refactor existing logic for scheduled tasks to use default_TPU_strategy, from sim/behaviour/default.
    • Remove existing spawn delay logic.
    • Update parsing and resumability logic to accomodate new handling of scheduled tasks

What's Changed

Full Changelog: Iteration8...Iteration9