Since v1.33 (released 2026-09-29), participants no longer see any fact sheet questions on the submission upload page, and their submissions are stored with fact_sheet_answers: null, even when the fact sheet fields are marked required. Organizers still see the form, so this is easy to miss.
Cause. #2584 added fact_sheet to CompetitionDetailSerializer.ADMIN_ONLY_FIELDS, so it is removed from the competition detail response for non-admins. The upload form is built from exactly that field:
src/static/riot/competitions/detail/_tabs.tag passes fact_sheet="{ competition.fact_sheet }" to <submission-upload>.
src/static/riot/competitions/detail/submission_upload.tag renders one input per entry in opts.fact_sheet (lines 10–13). For a participant this is now undefined, so no inputs are rendered.
get_fact_sheet_answers() in the same file then returns null for the empty form.
SubmissionCreationSerializer.validate() only checks fact sheet answers if attrs.get('fact_sheet_answers'), so a null payload skips the required-field check and the submission is accepted.
Not fixed by #2591. On develop, #2591 replaced ADMIN_ONLY_FIELDS with Meta.public_fields / Meta.admin_fields, but fact_sheet is still in admin_fields, so v1.34 (#2599) as currently staged still has this bug.
Observed. In competition 17822 (three required text fields), all 376 submissions made through the web form up to 2026-09-29 12:09 UTC have complete answers. All 39 submissions made since 2026-09-30 00:41 UTC have fact_sheet_answers: null. v1.33 was published at 2026-09-29 12:59 UTC. Fields with "Show on leaderboard" enabled are now blank on the leaderboard for new entries.
Expected. Participants see the fact sheet questions and required answers are enforced, as before v1.33.
Suggested fix.
- Move
fact_sheet to public_fields. It is the question definition participants must see to submit, not a secret.
- Optionally, enforce required fields on the server when
fact_sheet_answers is missing, so a frontend problem cannot silently skip them.
To reproduce.
- Take any competition with a fact sheet that has at least one required field.
- Log in as a participant who is not the creator or a collaborator and open the submission upload page: the "Metadata or Fact Sheet" section has no questions.
- Upload a submission: it is accepted, and
/api/submissions/<id>/ shows fact_sheet_answers: null.
- Log in as the organizer: the questions are there.
Related: #2590 (same root cause, different fields).
Since v1.33 (released 2026-09-29), participants no longer see any fact sheet questions on the submission upload page, and their submissions are stored with
fact_sheet_answers: null, even when the fact sheet fields are marked required. Organizers still see the form, so this is easy to miss.Cause. #2584 added
fact_sheettoCompetitionDetailSerializer.ADMIN_ONLY_FIELDS, so it is removed from the competition detail response for non-admins. The upload form is built from exactly that field:src/static/riot/competitions/detail/_tabs.tagpassesfact_sheet="{ competition.fact_sheet }"to<submission-upload>.src/static/riot/competitions/detail/submission_upload.tagrenders one input per entry inopts.fact_sheet(lines 10–13). For a participant this is nowundefined, so no inputs are rendered.get_fact_sheet_answers()in the same file then returnsnullfor the empty form.SubmissionCreationSerializer.validate()only checks fact sheet answersif attrs.get('fact_sheet_answers'), so anullpayload skips the required-field check and the submission is accepted.Not fixed by #2591. On
develop, #2591 replacedADMIN_ONLY_FIELDSwithMeta.public_fields/Meta.admin_fields, butfact_sheetis still inadmin_fields, so v1.34 (#2599) as currently staged still has this bug.Observed. In competition 17822 (three required text fields), all 376 submissions made through the web form up to 2026-09-29 12:09 UTC have complete answers. All 39 submissions made since 2026-09-30 00:41 UTC have
fact_sheet_answers: null. v1.33 was published at 2026-09-29 12:59 UTC. Fields with "Show on leaderboard" enabled are now blank on the leaderboard for new entries.Expected. Participants see the fact sheet questions and required answers are enforced, as before v1.33.
Suggested fix.
fact_sheettopublic_fields. It is the question definition participants must see to submit, not a secret.fact_sheet_answersis missing, so a frontend problem cannot silently skip them.To reproduce.
/api/submissions/<id>/showsfact_sheet_answers: null.Related: #2590 (same root cause, different fields).