Skip to content

2026-10-22 Engineering Team #151

Open

Description

@joecastiglione

Activity

  1. jpn-- commented on Oct 27, 2026

    @jpn--
    Member

    Meeting Overview

    ActivitySim Engineering Team — October 22, 2026

    Agenda

    Review security-related dependency updates, the CI testing strategy, performance and memory improvements, outstanding pull requests and reviewer assignments, agency acceptance of deliverables, and PopulationSim maintenance.

    Participants

    Duration

    Approximately 45 minutes.

    Executive Summary

    The team agreed to concentrate routine integration testing on Python 3.11 while retaining broader coverage through core unit tests and post-merge testing. The faster RNG pull request remains on hold pending reproducible performance benefits, and the destination-choice memory improvements need testing at scale on Windows. Review responsibilities were clarified for calibration, explicit telecommuting, sampling fixes, and other outstanding changes, with agency acceptance still needing coordination. The team also discussed security-related dependency updates and restoring PopulationSim’s documentation and publishing workflows.

    Meeting Notes

    Security-related dependency updates

    Jan prepared updates for ActivitySim and PopulationSim in response to a reported certificate-authority compromise. The changes update dependencies that maintain their own certificate lists.

    Jan recommended updating uv and recreating virtual environments. He did not think a dedicated ActivitySim patch release was necessary because installation from PyPI could resolve updated dependencies without a new ActivitySim release.

    CI testing strategy

    The team agreed to use Python 3.11, the oldest supported version, for the larger tests on routine pushes and pull requests. This helps catch accidental use of syntax or features unavailable in the minimum supported Python version.

    Jan described the revised coverage:

    • Core unit tests cover three operating systems and Python 3.11–3.13.
    • Larger tests use Python 3.11 on routine pushes.
    • Merges to main trigger the broader test matrix.

    The team accepted that a compatibility problem affecting newer Python versions might first appear after merging. Such failures would need prompt attention. Python 3.14 support is not ready yet.

    Faster random number generation

    The faster RNG pull request is not ready to merge. Jeff’s current SANDAG benchmark results do not demonstrate a meaningful benefit and show some slowdown.

    Jeff identified two potentially useful additional tests: a full-scale SANDAG run and a benchmark with EET and Poisson sampling. David pointed to earlier spreadsheet results showing improvements with full EET, without Poisson sampling, and explained that Poisson sampling reduces RNG work enough that RNG may no longer be the bottleneck.

    David agreed to post the earlier results, and Jeff agreed to run EET benchmarks and try to reproduce the improvement. The merge remains on hold until the team has convincing, reproducible evidence that the benefit justifies the added complexity.

    Jan also noted that continued support for the existing NumPy random-state interface removes an immediate compatibility reason to replace it.

    Destination-choice peak memory

    Jan had reviewed Jeff’s memory-reduction pull request and left comments, but the team still wants a large-scale Windows benchmark. Linux results alone are insufficient given how many agency models run on Windows.

    Jan agreed to compare the branch against current main on a Windows machine with 256 GB of RAM, using a full-scale MTC model if feasible. Jeff will address Jan’s review comments. The remaining work includes resolving the reported test issues and checking whether the memory benefit holds on Windows.

    Application and analysis guide

    The guide remains a draft while Joe Flood waits for consolidated reviewer feedback.

    Joe Castiglione will resolve which comments need to be addressed and provide that direction, targeting the next day or two. Joe Flood can then address the feedback and finish the guide. Final approval is also holding up completion of the associated invoice review.

    Calibration and explicit telecommuting

    The calibration pull request is ready for Jan’s final engineering review after David incorporated Jeff’s latest changes. David noted that PSRC and MWCOG have already tested the work and provided comments that were incorporated.

    The explicit telecommuting work was reported as complete from WSP’s side, with Sijia having addressed recent comments. Its engineering review was reassigned from Jan to Joe Flood.

    Jeff asked for clear agency acceptance contacts for both deliverables before merging. Joe Castiglione will follow up with Sijia and the agencies that previously expressed interest in reviewing the work.

    Calibration appears substantially further along in agency review. Acceptance criteria for explicit telecommuting remain less clear because the work supplies only part of the broader model functionality envisioned; confirming that it runs is different from assessing its behavioral reasonableness.

    Failed sampling choices and alternative availability

    Jeff will review Jan’s pull request to skip failed sampling choices after Jan incorporates the newly merged park-and-ride zero-lot-choice changes.

    Jan explained that the sampling changes include more explicit checks for unavailable alternatives under EET. Because EET does not exponentiate utilities, the previous aggregate utility check could miss edge cases. The revised approach checks individual alternatives against the unavailable-utility value.

    Jan clarified that the merged park-and-ride fix works; the follow-up is about consistent behavior across combinations such as Sharrow and EET. Additional unit-test coverage may be useful.

    For future redesign work, Jeff proposed representing alternative availability with a separate binary flag instead of encoding it as an extreme utility value. This was a design suggestion, not an agreed implementation task.

    Other ActivitySim pull requests

    • Expose LOS: Jeff reviewed and merged Bo’s pull request before the meeting.
    • Park-and-ride zero-lot choice: David’s fix had been merged.
    • Summarize-step memory reduction: Jeff will review the change to drop unused variables and run benchmarks.
    • Simulation-based shadow-pricing segmentation: Jeff and Bhargava were identified as reviewers. Jeff considers the code close to complete, subject to confirmation that the mathematical correction is satisfactory, and will contact Bhargava after the meeting.

    PopulationSim maintenance

    Jan requested review of his pull request to restore documentation publishing and modernize CI and release workflows. It includes security-related dependency updates, PyPI publishing changes, and documentation updates covering outdated installation guidance.

    Jan reported that the published documentation still reflects version 0.5 while the software is at version 0.10. He would like the updates reviewed and merged ahead of an anticipated release around the end of Phase 11.

    Jeff agreed to arrange an additional AI-assisted review using Astra. The team also discussed closing a superseded PopulationSim pull request whose commits had been incorporated elsewhere, but the transcript does not identify that pull request clearly enough to name it.

    Upcoming planning discussions

    Participants were reminded to respond to Joe Castiglione’s scheduling email for the “moonshot” discussion. Joe Castiglione also reiterated the need to coordinate workshop planning with Jeff.

    Action Items

    • David Hensle: Post the earlier RNG benchmark spreadsheets to the pull request.
    • Jeff Newman: Run additional EET benchmarks, review David’s results, and try to reproduce the RNG performance improvement before reconsidering a merge.
    • Jeff Newman: Address Jan’s comments on the destination-choice memory pull request.
    • Jan Zill: Benchmark the destination-choice memory changes at scale on Windows against current main.
    • Joe Castiglione: Consolidate application and analysis guide feedback and clarify required changes, targeting the next day or two.
    • Joe Flood: Address the consolidated guide feedback and finish the draft once that direction is available.
    • Jan Zill: Complete the final engineering review of the calibration pull request.
    • Joe Flood: Review the explicit telecommuting pull request.
    • Joe Castiglione: Meet with Sijia about explicit telecommuting and confirm agency review and acceptance contacts for telecommuting and calibration.
    • Jan Zill: Incorporate the merged park-and-ride changes into the failed-sampling-choices pull request, make the related handling consistent, and notify Jeff when it is ready.
    • Jeff Newman: Review the updated failed-sampling-choices pull request.
    • Jeff Newman: Review and benchmark the summarize-step memory reduction.
    • Jeff Newman: Contact Bhargava immediately after the meeting to coordinate review of the simulation-based shadow-pricing segmentation fix.
    • Jeff Newman: Arrange an Astra review of the PopulationSim documentation and CI pull request.
    • Relevant participants: Respond to Joe Castiglione’s scheduling request for the moonshot discussion.
    • Joe Castiglione and Jeff Newman: Follow up on workshop planning.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    meetingMeeting notes.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions