Repository navigation
Compare reports against prior category attempts - #466
Merged
Merged
Conversation
jserv
requested changes
Oct 24, 2026
jserv
left a comment
Contributor
There was a problem hiding this comment.
This changes what the web pages show, so the pull request description must include screenshots of the result (before and after where something changed), with any personal data removed.
Ezechungi7
force-pushed
the
feature/topic-comparison
branch
from
October 24, 2026 16:04
d35f010 to
2a88358
Compare
Ezechungi7
force-pushed
the
feature/topic-comparison
branch
from
October 24, 2026 16:29
2a88358 to
376ec77
Compare
jserv
reviewed
Oct 24, 2026
jserv
reviewed
Oct 24, 2026
jserv
reviewed
Oct 24, 2026
Ezechungi7
force-pushed
the
feature/topic-comparison
branch
from
October 24, 2026 17:49
376ec77 to
4cd4dfd
Compare
jserv
reviewed
Oct 24, 2026
Ezechungi7
force-pushed
the
feature/topic-comparison
branch
from
October 24, 2026 18:53
4cd4dfd to
ee0071e
Compare
jserv
reviewed
Oct 25, 2026
jserv
reviewed
Oct 25, 2026
jserv
previously requested changes
Oct 25, 2026
jserv
left a comment
Contributor
There was a problem hiding this comment.
Rebase latest main branch and resolve conflicts.
Ezechungi7
force-pushed
the
feature/topic-comparison
branch
2 times, most recently
from
October 25, 2026 08:26
d79a2df to
7fec8bb
Compare
jserv
reviewed
Oct 25, 2026
jserv
reviewed
Oct 25, 2026
Ezechungi7
force-pushed
the
feature/topic-comparison
branch
from
October 25, 2026 14:54
7fec8bb to
863d090
Compare
jserv
reviewed
Oct 25, 2026
jserv
reviewed
Oct 25, 2026
Ezechungi7
force-pushed
the
feature/topic-comparison
branch
from
October 25, 2026 15:48
863d090 to
be8b44e
Compare
jserv
reviewed
Oct 25, 2026
jserv
reviewed
Oct 25, 2026
ColtenOuO
reviewed
Oct 25, 2026
jserv
requested changes
Oct 25, 2026
jserv
left a comment
Contributor
There was a problem hiding this comment.
Before asking someone to review, you MUST resolve any regressions flagged by GitHub Actions.
jserv
reviewed
Oct 25, 2026
Ezechungi7
force-pushed
the
feature/topic-comparison
branch
from
October 25, 2026 16:58
be8b44e to
ab0fe84
Compare
jserv
reviewed
Oct 25, 2026
jserv
reviewed
Oct 25, 2026
Ezechungi7
force-pushed
the
feature/topic-comparison
branch
from
October 25, 2026 17:21
ab0fe84 to
46167fb
Compare
jserv
reviewed
Oct 25, 2026
Ezechungi7
force-pushed
the
feature/topic-comparison
branch
from
October 25, 2026 17:57
46167fb to
bb8c624
Compare
jserv
reviewed
Oct 25, 2026
Ezechungi7
force-pushed
the
feature/topic-comparison
branch
from
October 25, 2026 18:26
bb8c624 to
3e8a62a
Compare
jserv
reviewed
Oct 25, 2026
jserv
reviewed
Oct 25, 2026
jserv
reviewed
Oct 25, 2026
Ezechungi7
force-pushed
the
feature/topic-comparison
branch
from
October 25, 2026 20:12
3e8a62a to
af38805
Compare
jserv
reviewed
Oct 25, 2026
jserv
reviewed
Oct 25, 2026
jserv
dismissed stale reviews from themself
October 26, 2026 03:55
No merge conflicts at the current head.
jserv
reviewed
Oct 26, 2026
Ezechungi7
force-pushed
the
feature/topic-comparison
branch
from
October 26, 2026 04:21
af38805 to
af0407c
Compare
jserv
reviewed
Oct 26, 2026
Ezechungi7
force-pushed
the
feature/topic-comparison
branch
from
October 26, 2026 05:04
af0407c to
ade139f
Compare
jserv
reviewed
Oct 26, 2026
Completed reports were shown in isolation, so practicing another problem in the same study-plan section gave no direct comparison against the last attempt in that category. Map each scenario page to its single top-interview-150 section (with a deterministic topic fallback for original problems), fetch that lookup only when rendering a report so the initial lobby never discloses problem techniques, and compare a completed report against the most recent prior assessed attempt in the same category. Show coding, communication, and hint deltas, omit per-step score diffs across rubricVersion boundaries, and pair improvementPlan items by canonical phase rather than reworded model prose in both the report card and its Markdown export.
Ezechungi7
force-pushed
the
feature/topic-comparison
branch
from
October 26, 2026 18:11
ade139f to
eb158ff
Compare
Contributor
|
Thank @Ezechungi7 for contributing! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Completed interview reports were rendered in isolation: when a candidate practiced another problem in the same study-plan category (such as
1D DPorSliding Window) to work on a recurring gap, the finished report gave no comparison against their previous attempt in that category. When a candidate finishes a problem or opens a saved report inPast attemptsand has an earlier assessed (HIREorNO_HIRE) attempt in the same category andinterviewMode(codingvs.whiteboard), the report card and its.mdexport now render aCategory progresssection naming the category, the prior problem title, date, and decision, alongside deltas forcodingScore(orBoard work),communicationScore,hintsUsed, same-rubric phase scores, and phase-anchoredimprovementPlanitems.scripts/gen-problem-cards.pyemitsweb/problem-categories.json, mapping each scenario page name to its single study-plan section fromscripts/top-interview-150.jsonand assigning"origin": "original"problems their deterministic non-container topic ("Design") in the generated map so the renderer needs no special case.loadCategoryMap()inweb/problem-data.jsfetches/problem-categories.jsonon demand when a report is rendered rather than embedding categories inweb/index.html, keeping the initial lobby free of study-plan section labels before an interview starts.compareCategoryAttempt()inweb/practice-insights.jslooks up the prior attempt in the normalized entries returned bynormalizeProgressEntry(web/progress.js:68), requiringentry.interviewMode === current.interviewModeso editor coding scores and whiteboard board-work scores are never mixed, and mapsproblemIdto its category at render time so saved reports gain no new stored field and existing history participates automatically. Per-step REACTO/STAR score deltas are computed only whenframeworkAssessment.rubricVersionmatches on both attempts (rendering a version-boundary note otherwise), andimprovementPlanitems are paired by their closedphaselabel (web/progress.js:215) rather than string-matching model-writtenweaknessprose.Feature Example:
After doing a problem of the same category, report now generates:
Category progress · Binary Tree General
Compared with Fraud Rule Worst Case · 2026-10-24 · HIRE (previous problem in this category)
Recording
codetrial_topic_comparison_demo.mp4
Validated with:
py -3.11 scripts/gen-problem-cards.py --check(passes;web/problem-categories.jsonis in sync withproblem-bank/problems.json,web/problem-pages.json, andscripts/top-interview-150.json)py -3.11 scripts/run-python-tests.py tests/test_gen_problems.py(45/45passed, includinggenerated_categoriesmapping for study-plan and"origin": "original"problems and the--checkdrift failure whenweb/problem-categories.jsonis stale)node --test tests/browser/practice-insights.test.js tests/browser/render.test.js tests/browser/dom-contract.test.js tests/browser/leetcode-import.test.js tests/browser/account.test.js tests/browser/progress.test.js tests/browser/lib.test.js tests/browser/report-recovery.test.js(309/309passed; Playwright Chromium browser cases intests/browser/lobby.test.jsskip locally without a local Chromium install and will run in CI)Closes #393