Skip to content

fix: incorrect-grade journey takes title, awarding organisation and grades from the 16-19 qualification reference (AB#301903) - #435

Open
ajs-uk-dev wants to merge 16 commits into
mainfrom
bug/301903-incorrect_grade_qualification_source
Open

fix: incorrect-grade journey takes title, awarding organisation and grades from the 16-19 qualification reference (AB#301903)#435
ajs-uk-dev wants to merge 16 commits into
mainfrom
bug/301903-incorrect_grade_qualification_source

Conversation

@ajs-uk-dev

@ajs-uk-dev ajs-uk-dev commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Summary

The 16-19 "report an incorrect grade" journey took the qualification title, awarding organisation
and selectable grades from a hand-authored, six-QAN AODC/KS4 grade-reference file instead of the
service's own 16-19 qualification reference (974 QANs from the supplier QualList export) — so the
ticket's example QAN showed KS4 data it was never meant to.

  • The result-search POST now resolves the picked result's QAN against the 16-19 reference and stores
    it in session beside the result.
  • The revised-grade picker, the "Incorrect grade details" page and the check-answers summary all take
    their title, awarding organisation and grade scale from that resolved entry — never from the
    results file's abbreviated name or the old AODC grade list.
    • The picker offers grades in the QualList's own order (1…9, Q, R, U, X for a GCSE; *, A…E, N, Q, R, U, X for an A level; *, D, F, M, P, Q, R, U, X for a BTEC), not the old file's pass-then-fail
      order — intended, not a regression.
  • The now-unused AODC grade-reference blob, client and seeders are removed.
  • The dev seed is re-pointed at real 16-19 QANs so the journey still completes locally; E2E facts
    follow.
  • Sessions that picked a result before this deploys re-resolve the qualification on the next journey
    page (GET or POST) or the summary. Only a stored null is re-resolved; a resolved entry is a snapshot
    until the result is re-picked.
  • The "result does not belong" check-answers summary also gains the AO row and reference title — it
    shares the summary card and the result-search resolution. Intended and pinned; that journey has no
    details page. The Results Enquiries tab still names a result by the results file's QUAL_NAME;
    deliberate, separate product call.
  • The awarding-organisation row now carries one label, "Awarding Organisation (AO) name", on both
    journeys' details pages and summaries (the details pages previously said "Awarding Organisation
    name"). Still needs content sign-off as new context.

Test plan

  • Full build: 0 errors, 117 warnings (unchanged baseline)
  • Unit suite: 5,153 passed / 0 failed
  • Integration suite: 791 passed / 0 failed
  • E2E suite (Docker Playwright stack): 211 passed / 0 failed (2 skipped, visual regression off)
  • Walked live in a browser, including the in-flight-session case with the qualification nulled
    directly in the Postgres session row before a page GET, a grade POST and the summary

Closes #410

Andy Smith and others added 13 commits September 11, 2026 10:04
… beside the result (AB#301903)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01DiEiJB99BoBmqmFZ5J8nX7
…the picked result, not the AODC grade file (AB#301903)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01DiEiJB99BoBmqmFZ5J8nX7
… awarding organisation from the 16-19 reference (AB#301903)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01DiEiJB99BoBmqmFZ5J8nX7
…anisation from the 16-19 reference (AB#301903)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01DiEiJB99BoBmqmFZ5J8nX7
…ence holds (AB#301903)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01DiEiJB99BoBmqmFZ5J8nX7
…the Task 3 create step clobbered (AB#301903)

The plan's Task 3 step 1.2 said to 'Create' this file, but it already pinned the ResultDetails page and the _GradeSelect partial (15 facts). The earlier commit overwrote it with only the 2 new AB#301903 facts, silently deleting 13 tests. This restores the original content and folds the 2 new facts in as their own section.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01DiEiJB99BoBmqmFZ5J8nX7
…d qualification rows (AB#301903)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01DiEiJB99BoBmqmFZ5J8nX7
…w the 16-19 reference is the only scale source (AB#301903)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01DiEiJB99BoBmqmFZ5J8nX7
… 16-19 qualification reference (AB#301903)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01DiEiJB99BoBmqmFZ5J8nX7
…he picked result (AB#301903 review)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01DiEiJB99BoBmqmFZ5J8nX7
…s none (AB#301903 review)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01DiEiJB99BoBmqmFZ5J8nX7
…ture honestly (AB#301903 review)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01DiEiJB99BoBmqmFZ5J8nX7
…ication (AB#301903 review)

Second-pass review G1: deleting the PagePost heal call left every unit fact green. A user already on
the grade page when the change deploys posts straight into validation, so the heal must run before
ValidateGradeSelect or the post is refused against an empty scale. The new fact goes red without the
call. The docs sentence now says any journey page or the summary re-resolves, which is what the code
does (G3).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DiEiJB99BoBmqmFZ5J8nX7
@github-actions

Copy link
Copy Markdown

Deployments

Review app is available at these URLs:
https://check-performance-data-pr-435.test.teacherservices.cloud

paulc1983
paulc1983 previously approved these changes Sep 11, 2026
Andy Smith and others added 3 commits September 11, 2026 17:46
…e and summary (AB#301903 review)

The details pages said "Awarding Organisation name" while the summaries and the search page said "Awarding Organisation (AO) name", so a user saw two labels for one value three pages apart. Standardise on the majority spelling in both the incorrect-grade and missing-qualification journeys.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NW7xKMaSZmVaYqBu6Km6Nr
…itle (AB#301903 review)

The result-search POST resolves the qualification for every journey with a result-search page, so the "result does not belong" check-answers card gained the AO row and reference title along with incorrect grade. Intended — a stray result should be identified the same way on every card — but it was unpinned and undocumented.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NW7xKMaSZmVaYqBu6Km6Nr
…AB#301903 review)

The docs and the result-search comment read as if any later page re-resolved the qualification whenever the reference changed. Only a stored null is re-resolved; a resolved entry stays as picked until the result is re-picked. Say so where a future developer will look.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NW7xKMaSZmVaYqBu6Km6Nr
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect Grade displays KS4 qualification source data instead of 16-19 qualification data

2 participants