Runway Release Notes
Runway Release - 7/21/26
Overview:
Runway now syncs tenants from User Management, which will make for more consistent API interactions and lay the groundwork for support workflows that use meta-tenancy
Runway now checks the EDU roster (if available) for ID matches before failing a job due to an insufficient match rate.
We fixed a bug where, in a small number of cases, Runway would be unable to display error info for failed jobs.
We hardened our dependency management against supply chain attacks
We made a handful of hygiene updates: upgrading dependencies and speeding up app build times
Attempt Cross-year ID match if insufficient matches against ODS
Previously, Runway would fail jobs with an "Insufficient Matches" error based solely on ID matching against the ODS roster. This prevented Runway from processing files where most of the students in the file were present in the EDU roster, but not present in the ODS roster.
Now, Runway will attempt to match IDs against the ODS roster AND the EDU roster before failing a job for insufficient matches.
Partner setup required?
No
End user visible?
Yes. There are some files that Runway was not able to process that can now be processed.
Fix: Runway will reliably display error information from the Executor
Previously, there was a scenario where error information generated by the Executor while processing a file would fail to make it to the application. This occurred if the stack trace was large enough to get blocked by the firewall.
Now, if error information is blocked by the firewall, the Executor will attempt to resend with a smaller stack trace.
Partner setup required?
No
End user visible?
Yes, unlikely to be noticed as a change.
Miscellaneous security updates and build improvements
Use Safe Chain for dependency installation
Sensitive headers no longer appear in WAF logs
Various dependency upgrades to address CVEs
Pipeline update to reduce build time
Runway Release - 6/8/26
1. Cross-Year Student ID Matching
What's new
Until now, Runway could only land an assessment record if the student was rostered in the ODS for the year the assessment was taken — it matched the file's student IDs against that roster in the ODS, and nothing else. Cross-year ID matching adds a second pass: Runway takes IDs that fail to match against the ODS roster and attempts to match them against a roster drawn from Stadium.
So a record now lands as long as the student was rostered in the district at some point:
Rostered in the ODS for the assessment year → the record goes to the ODS, exactly as today.
Not in that year's ODS, but found in the district's cross-year roster from Stadium→ the record is matched and sideloaded to Stadium. (It can't go to the ODS — Ed-Fi's referential integrity rules require the student to be rostered in that ODS.)
Why it matters
The within-year-only limitation meant some legitimate records couldn't land — most visibly for college- and career-readiness assessments (SAT, ACT, AP) that count toward state report cards. For example:
A student took the SAT last year while living in another state.
A student took the SAT after graduating.
In both cases the district should be able to count that result, but Runway was (until now) not able to load it. Cross-year matching closes that gap.
How it works
Once setup is complete, cross-year ID matching happens automatically on a normal run — there's nothing extra to do per file. Runway matches each student ID to the ODS roster, if it can, and sends it to the ODS, or to a Stadium roster and makes results available over the API to be loaded into Stadium. Any students it still can't match (e.g., genuinely bad IDs) show up in the unmatched-students view for reconciliation, same as today.
If Runway encounters a fatal error at any stage of processing, for either the ODS or Stadium passes, the entire job fails in order to avoid sending data to Stadium that should be routed to the ODS.
Setup required before you can use it
Cross-year matching depends on a Stadium connection and a per-partner admin setting.
Stadium/Stadium connection. The cross-year roster comes from Stadium, so Runway will need info for a Stadium connection in place.
To set this up, your data engineer can obtain the Snowflake credentials and share them with the Runway cloud engineer, who will make them available to Runway via an AWS Secret. (These aren't entered through the Runway UI.) Until the connection exists, the cross-year matching toggle stays disabled.
Sideloading to Stadium set up. Records that match across years but aren't in the current ODS need to be sideloaded to Stadium.
To set this up, your data engineer will setup an Airflow DAG to pull processed files form the Runway API and load them to Stadium.
Turn on cross-year matching. On the Admin page, a Partner Admin enables the cross-year matching toggle. With it on, no-ODS school years become selectable and Runway uses the Stadium roster for matching.
Good to know
The toggle is per partner and controlled by users with the Partner Admin role.
This is a stopgap ahead of a dedicated ID resolution service, which will broaden matching further (e.g., fuzzy matching on attributes beyond the ID).
2. Other Updates
Increase memory and CPU of job processing containers
We've increased the size of the containers that run Earthmover and Lightbeam so that Runway can handle larger files.
Show unmatched student IDs only if job succeeds
Previously, when a job encountered certain errors, Runway would still present unmatched student IDs to the user. If a user were to resolve these ID mismatches and upload the file, it would likely encounter the same error that the original job encountered. Now, Runway only presents unmatched student IDs when the job succeeds.
Raise error if all resources fail to send to the ODS
Runway now inspects Lightbeam results and will raise an error if all resources fail to send. Previously, Runway considered Lightbeam successful as long as it did not return on error. This will more clearly flag jobs that did not send data to the ODS, likely due to namespace or claimset issues.
