You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Student problem-set payload exposes reference_solution and full function_signature for every problem (incl. probeable oracle) #159
GET /api/problem-sets/<slug>/ returns reference_solution and function_signature for every problem, with no gating on the handler's display config. For probeable_code / probeable_spec the reference solution is the hidden oracle: a student can read it in browser devtools and skip probing entirely. function_signature (with parameter types) is likewise sent even when show_function_signature=False.
purplex/problems_app/views/student_views.py:78-82 — ProblemSetDetailView.get returns it as data["problems"].
Who is affected
Handlers that set show_reference_code: False in get_problem_config yet still receive the field: probeable_code (handlers/probeable_code/handler.py:207), probeable_spec (:275), debug_fix (:162), prompt (:213), mcq (:275). EiPL and Refute set it True and legitimately consume it (ProblemSet.vue:393,600), so a blanket removal would break them.
Suggested fix
Gate in the repository/service layer: only include reference_solution when the problem's handler display config has show_reference_code: True, and only include function_signature when show_function_signature is True (or strip types, matching what the handlers already do for the probe panel). Add an integration test per handler asserting presence/absence in the student payload. Audit ProblemSerializer/other student-facing serializers for the same fields.
Partial fix on branch e2e/probeable-workflows (PR to follow, stacked on #178): StudentService.get_problem_set_problems now nulls function_signature when the instructor hid it and sends reference_solution only when the student UI actually renders it (EiPL's code-to-explain, or spec problems with segment analysis). Probeable oracles and debug-fix answers no longer ship in the problem-set payload; integration tests cover each case.
Still open after that: ProblemDetailView (GET /api/problems/<slug>/, views/student_views.py) returns ProblemSerializer to any authenticated user, which includes both fields. That path needs the same treatment or a student-specific serializer.
Activity
CoffeePoweredComputers commentedon Oct 15, 2026
Partial fix on branch
e2e/probeable-workflows(PR to follow, stacked on #178):StudentService.get_problem_set_problemsnow nullsfunction_signaturewhen the instructor hid it and sendsreference_solutiononly when the student UI actually renders it (EiPL's code-to-explain, or spec problems with segment analysis). Probeable oracles and debug-fix answers no longer ship in the problem-set payload; integration tests cover each case.Still open after that:
ProblemDetailView(GET /api/problems/<slug>/,views/student_views.py) returnsProblemSerializerto any authenticated user, which includes both fields. That path needs the same treatment or a student-specific serializer.Stop the Docker pool lock hanging native threads; withhold the oracle…
E2E coverage for every student probeable workflow, plus the six defec…