Conversation
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
…into PM-5738_deterministic-ai-workflow
PM-5665 instant review
…into PM-5738_deterministic-ai-workflow
…nly the ones that have passed virus scan
…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.
PM-5749: allow downloads after adjusted passing reviews
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.
https://topcoder.atlassian.net/browse/PM-5665
https://topcoder.atlassian.net/browse/PM-5738
https://topcoder.atlassian.net/browse/PM-5716
https://topcoder.atlassian.net/browse/PM-5471
https://topcoder.atlassian.net/browse/PM-5754
https://topcoder.atlassian.net/browse/PM-5749