Skip to content

PM-5758: enforce design submission limits end to end - #7262

Merged
jmgasper merged 1 commit into
developfrom
PM-5758-1
Aug 12, 2026
Merged

PM-5758: enforce design submission limits end to end#7262
jmgasper merged 1 commit into
developfrom
PM-5758-1

Conversation

@jmgasper

Copy link
Copy Markdown
Collaborator

What was broken

Checkpoint submissions consumed final-submission slots, the regular My Submissions page could route users to upload after a finite Design limit was reached, and concurrent client checks could allow duplicate attempts. Entry-point checks also depended on a partial challenge-wide submission page.

Root cause

The prior client implementation counted checkpoint and contest submissions together, did not guard the regular Submission Management route, and did not mark a submission attempt in flight until after its asynchronous limit lookup.

What was changed

Centralized active submission-type handling and count checkpoint and contest attempts independently. Added complete member-and-type history checks to the challenge header, the regular My Submissions route, and the upload boundary. Added synchronous in-flight guards and fail-closed lookup behavior while preserving unlimited Design challenges, final fixes, and non-Design tracks.

Any added/updated tests

Added and updated utility, service, header, challenge-detail, Submission Management, and upload tests for phase separation, complete-history checks, reached and below-limit navigation, concurrent attempts, lookup failures, final fixes, unlimited challenges, and Development challenges.

Validation completed successfully:

  • Focused Jest: 8 suites passed, 62 tests passed, 1 pre-existing test skipped.
  • Full test suite: 154 suites passed, 4 suites skipped.
  • ESLint and Stylelint passed.
  • Production build passed.

What was broken

Checkpoint attempts consumed final-submission slots, the regular My Submissions page could navigate past a reached limit, and concurrent client checks could create duplicate attempts. Entry-point checks also relied on a partial challenge submission page.

Root cause

Submission-limit checks counted every submission phase together, were missing from the regular submission-management route, and started the submit pending state only after an asynchronous lookup.

What was changed

Centralized active submission-type handling, counted checkpoint and contest attempts independently, and bypassed concept limits for final fixes and non-Design tracks. Added complete member-and-type history checks to the challenge header, regular My Submissions route, and upload boundary, with synchronous in-flight guards and fail-closed lookup handling.

Any added/updated tests

Added and updated utility, service, header, challenge-detail, Submission Management, and upload tests covering phase separation, full-history checks, reached and below-limit navigation, concurrent attempts, lookup failures, final fixes, unlimited challenges, and Development challenges.
@jmgasper
jmgasper requested a review from kkartunov as a code owner August 11, 2026 07:28
@jmgasper
jmgasper merged commit b425fad into develop Aug 12, 2026
7 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.

1 participant