Skip to content

Feedback from learners

A private report somebody is meant to act on — not a comment thread.

The thread that used to sit under every question was a discussion nobody moderated. What it was actually used for was telling an educator something was wrong, so that is what this is now.

Leaving one

About Where Endpoint
A question The ⋯ menu in a session, and the question's page POST /feedback/questions/{id}
An article, or one section of it The article's feedback panel POST /feedback/articles/{id}

Any signed-in learner may. Three to 2,000 characters. A report naming a section that does not exist is refused at the moment it is written.

The writer can read their own reports and any replies — /mine on either endpoint — so the loop closes. An earlier version let an educator write a reply the learner had nowhere to read.

Who sees a report

Not "anybody with a grant". The report has to be about something you can edit:

Kind Test
Question question_scope_predicate — the same answer the question editor gives
Article can_edit_article

The question queue uses the grant predicate rather than a set of categories, deliberately: a category set silently drops a question reached only through an additional category link, an exam or a folder grant — and the report on it then belongs to nobody.

Two earlier bugs this fixes, both worth knowing if you are reading old behaviour: reading and answering were once gated on having a grant rather than on the grant covering the question, so any educator could read and delete reports on the whole bank; and the queue was once narrowed by primary category alone.

The badge

GET /feedback/open — the count and the newest few, questions and articles in one list. They are the same job to whoever is doing it, and a second badge would be a second place to forget to look.

It appears in the site header as ⚑ N, refreshed every 60 seconds, and each row links straight to the thing it is about. A row about a section that has since been deleted says "(section removed)" on the row rather than leaving it for the click.

The endpoint answers quietly with zero for somebody with no editorial access rather than refusing, so the header can ask without first working out who is asking.

Acting on one

Reports on a question also appear in the Feedback panel of the question editor, beside the fields they are about — the answer to almost every report is a change to the question.

Action Endpoint
Reply, resolve or reopen PATCH /feedback/{id} — questions; PATCH /feedback/articles/reports/{id} — articles
Delete DELETE on the same addresses

status is open or resolved, and nothing else. A reply records who wrote it and when.

Resolving keeps the report. A question with a history of the same complaint should visibly have one.