Skip to content

Prod - August 2026 Release 1 - #312

Merged
jmgasper merged 33 commits into
masterfrom
develop
Aug 5, 2026
Merged

Prod - August 2026 Release 1#312
jmgasper merged 33 commits into
masterfrom
develop

Conversation

vas3a and others added 30 commits July 28, 2026 08:03
What was broken

Delayed clean-scan events could create Approval reviews for every submission while Approval was open, including submissions that failed Review. The extra pending rows appeared in the Approval tab and could keep the phase open.

Root cause

The Review API's generic pending-review path treated Approval as a per-submission phase, even though Autopilot owns Approval candidate selection and chooses the highest passing submission.

What was changed

Excluded Approval from generic scan-driven pending-review creation so only Autopilot creates Approval assignments.

Any added/updated tests

Added a SubmissionService regression test proving an open Approval phase does not receive review rows from the scan-complete path.
PM-5716: prevent scan-created approval reviews
What was broken

The past reviews endpoint could not restrict results to assignments held under reviewer resource roles.

Root cause

The filter contract and SQL had no resource-role predicate. Resource-row pagination would also duplicate a challenge when a member held multiple requested roles.

What was changed

Added a validated comma-separated resourceRoleIds query filter and Swagger documentation. Applied parameterized role filtering to counts and rows, and page role-filtered past results by distinct challenge before restoring matching assignment rows.

Any added/updated tests

Updated MyReviewService tests for role parsing and deduplication, parameterized filtering, distinct challenge pagination, admin counting, and unchanged unfiltered pagination.
PM-5471: add reviewer role filtering to my reviews
…ai-workflow

PM-5738 deterministic ai workflow
What was broken

Design challenge winner downloads were still blocked by submissionsViewable even when the dedicated all-registrants flag was enabled or the requester was a passing submitter.

Root cause

Post-completion submission authorization treated the legacy Design visibility metadata as an outer gate before evaluating the dedicated winning-download policy.

What was changed

Removed only the Design visibility gate and its unused helpers. Registered Submitter role, completed status, exact-winner matching, privileged access, First2Finish behavior, and passing-submitter fallback remain unchanged. Updated endpoint documentation to match.

Any added/updated tests

Updated Design download authorization tests to cover all registrants, passing submitters, and denied non-passing submitters when legacy visibility is false.
What was broken

A registered submitter whose Design First2Finish submission failed iterative review could download the winning submission when all-registrant winner downloads were disabled.

Root cause

The legacy First2Finish authorization branch treated owning any submission as sufficient and returned before the passing-submission eligibility check, including for Design challenges.

What was changed

Limited the legacy any-submission First2Finish eligibility rule to non-Design challenges. Design First2Finish submitters now require a passing submission unless all-registrant winner downloads are enabled. Updated the endpoint documentation and service JSDoc to describe the narrowed rule.

Any added/updated tests

Added a regression test that models a Design First2Finish member with an owned submission but no passing review summation and verifies that the winning submission download is denied before storage access.

The focused download authorization suite, lint, and build pass. The full test suite still reports eight unrelated failures that reproduce unchanged on origin/develop.
Submission confirmation email fixes
PM-5754: remove duplicate Design download gate
# Conflicts:
#	src/api/submission/submission.controller.ts
#	src/api/submission/submission.service.ts
PM-5747: require passing Design F2F submissions for winner downloads
What was broken

A Design submitter whose Review score was adjusted above the passing threshold during Approval could still be denied access to a winning submission.

Root cause

Download authorization trusted a final review summation captured before the score adjustment, so its stale non-passing value overrode the newer completed Review score.

What was changed

Kept the existing passing-summation path and added a fail-closed fallback that recalculates only demonstrably stale final Review summations from newer, completed and committed reviews for the same scorecard.

Any added/updated tests

Added coverage for a stale failing summation followed by an adjusted passing Review score, plus a multi-review case whose adjusted average remains below the passing threshold.
@jmgasper
jmgasper merged commit e5a73de into master Aug 5, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants