Release/07 21 2026 - #104
Merged
Merged
Conversation
* run executor on large task when input files exceed size threshold Large (400+ MB) Star input files have caused the executor to run out of memory even on the medium task (EDFIAL-467). At run start, the app now sums the job's input file sizes from S3 and launches the large Fargate task when the total is at or above a threshold, defaulting to 100MB and configurable via LARGE_TASK_FILE_SIZE_THRESHOLD_MB. The threshold keys off file size rather than assessment type so any oversized job is routed to the bigger task, not just known-large templates. If a size lookup fails the run start fails loudly rather than falling back to a task size that might OOM. The corresponding bump to the large task definition's memory happens separately in CloudFormation. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * document unit testing alongside integration tests The repo just gained its first unit test, so the testing docs only covered integration tests. Record the convention: integration tests are the default, unit tests are for logic they can't practically reach (mocked AWS clients), specs live next to the code they test, and both suites run under api:test. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * refine task size threshold config and drop selection logging Rename LARGE_TASK_FILE_SIZE_THRESHOLD_MB to ECS_FILE_SIZE_THRESHOLD_MB: shorter, and ECS anchors the context better than "large task" does. The config getter now returns null when the var is unset instead of baking in a default — AppConfigService should just retrieve config; calling code owns defaulting, so the 100MB fallback lives in ExecutorAwsService. Drop the task-size selection log line since file sizes and the chosen task are visible in AWS. Add a test covering a configured threshold overriding the default. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * use early return in threshold getter Separate "not configured" from "configured but unparseable" instead of funneling both through a NaN sentinel, which made the empty-string guard hard to follow. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * warn when ECS file size threshold is set but unparseable Per review, a misconfigured ECS_FILE_SIZE_THRESHOLD_MB shouldn't be silently ignored — log a warning so the typo is discoverable, but stay lenient and fall back to the default rather than failing run starts. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* live large * noop * noop * noop * noop * comment to trigger build * again * run executor on large task when input files exceed size threshold Large (400+ MB) Star input files have caused the executor to run out of memory even on the medium task (EDFIAL-467). At run start, the app now sums the job's input file sizes from S3 and launches the large Fargate task when the total is at or above a threshold, defaulting to 100MB and configurable via LARGE_TASK_FILE_SIZE_THRESHOLD_MB. The threshold keys off file size rather than assessment type so any oversized job is routed to the bigger task, not just known-large templates. If a size lookup fails the run start fails loudly rather than falling back to a task size that might OOM. The corresponding bump to the large task definition's memory happens separately in CloudFormation. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * document unit testing alongside integration tests The repo just gained its first unit test, so the testing docs only covered integration tests. Record the convention: integration tests are the default, unit tests are for logic they can't practically reach (mocked AWS clients), specs live next to the code they test, and both suites run under api:test. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * refine task size threshold config and drop selection logging Rename LARGE_TASK_FILE_SIZE_THRESHOLD_MB to ECS_FILE_SIZE_THRESHOLD_MB: shorter, and ECS anchors the context better than "large task" does. The config getter now returns null when the var is unset instead of baking in a default — AppConfigService should just retrieve config; calling code owns defaulting, so the 100MB fallback lives in ExecutorAwsService. Drop the task-size selection log line since file sizes and the chosen task are visible in AWS. Add a test covering a configured threshold overriding the default. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Increased ram on large ecs size from 16384 to 30720 * bump version * update large memory size value --------- Co-authored-by: johncmerfeld <John.Merfeld@gmail.com> Co-authored-by: Andy Kitson <akitson@edanalytics.org> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* migration * tests * add fields to created-modified * revisit * remove children * tests * add enum * update withoutaudit * um value * test * remove deletedon from withoutaudit * fixture values
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2 to 7.0.0. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@de0fac2...9c091bb) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 7.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 6.2.0 to 6.3.0. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](actions/setup-python@a309ff8...ece7cb0) --- updated-dependencies: - dependency-name: actions/setup-python dependency-version: 6.3.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Precreate Executor log groups and modify CloudWatch widget
* pinned * experimenting with snyk settings * move snyk file * move snyk file * remove snyk
* add safe-chain to app ci and create executor ci * test safe-chain CI
* Define earthmover_cmd method * Refactor em call in earthmover_ddeps * refactor em calls in earthmover_run * Call check_returncode from earthmover_cmd
* Constrain x_year pass IDs based on match rate * Enforce match rate only if x_year pass cannot run * Only use unmatched students in second pass if we hit match threshold * Enforce match threshold on second pass * clean up first run vars for readability
* migration * tests * add fields to created-modified * sync module * envs * alconfig * remove erroring line * test file * spec * add top level error boundary * revisit * wip * remove children * tests * add enum * global * fix test * config * tx * fix test * rename manager * remove duplicate const * remove managedby from tenant * remove managedby * dont delete non sync managed partners absent from UM * iterate over handlers * change al to um * simplify handlers * check sourcekey is sync manager * remove tx reference * remove newline * test * use aws secret * remove coordinator * move pg boss setvice * fetchaws * default cron * add tyr catch * remove cron from umconfig * default cron * missed al->um * flip condition for readability * make boss private * remove tenantsbypartner * missed rename in test * filter and check managedby * remove getpartners and gettenants * partner array * move apipartnercodes up * promise all for fetch only * add managedby to where clause * remove bypartner map * remove runsync * refactor tenantsToDelete for readability * pr comments * add test * remove catch in sync method * await getter * adjust pg boss service * add managedby on tenant updates
* remove check_returncode() from earthmover_cmd * add back explicit calls of check_returncode()
* Dockerfile changes to intoduce USER in the beginning and buildspec buildx changes for caching * new parameter CreateExecutorS3Bucket and cloudwatch dashboard change * hardcode cloudwatch widget to job executor medium * update version
* add Auth0ConfigSecret parameter * bump vesion
* removing parameter * rename secret name
* Run second pass if num_unmatched_students in None * conditionally enforce cross year match rate threshold based on first run match rate * remove try/finally from cross_year_pass
* logging tests * trying this out * testing limit * add byte limits to to_json * rm limit from format_exc * fix truncation * fix order of operations * rm test logging * rm logging * leave no trace --------- Co-authored-by: johncmerfeld <John.Merfeld@gmail.com>
* Redact sensitive headers from WAF logs * Bump CF template versions
Contributor
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
edandylytics
commented
Jul 20, 2026
| partd==1.4.2 | ||
| propcache==0.5.2 | ||
| pyarrow==24.0.0 | ||
| pyasn1==0.6.3 |
Collaborator
Author
There was a problem hiding this comment.
@johncmerfeld @theokaufman Snyk is flagging vulnerabilities in pyasn1@0.6.3 that are fixed in 0.6.4. Could you take a look at whether we can upgrade? If it's straightforward, let's just take the version bump. Otherwise, let's figure out whether these impact Runway and should block the deploy.
Here are the vulnerabilities: https://security.snyk.io/package/pip/pyasn1/0.6.3
Collaborator
There was a problem hiding this comment.
Definitely no problem to upgrade; I'll open a PR right now to unblock the release
johncmerfeld
approved these changes
Jul 20, 2026
edandylytics
marked this pull request as ready for review
July 21, 2026 15:58
zabdykadyrova
approved these changes
Jul 21, 2026
zabdykadyrova
left a comment
Collaborator
There was a problem hiding this comment.
Looks good to me.
rtavernaea
approved these changes
Jul 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is the PR for the 07/21/2026 release. It contains:
Note that #79 and #82 are already merged to main, with a squash commit.