under the Student's name it says "Grade 8th Grade" which is confusing;
complete
P
Parent 019a940d-90d
Category:
Conversations & ChatType:
User submissionUser role:
parentP
Patrick Jean
marked this post as
complete
Verified Fixed (2026-04-25)
— Bug resolved by PR #1038 (commit 5bce1619), merged to main
. The gradeLabel()
function in web/app/(protected)/parent/components/EstimatedMasteryBadge.tsx:33-38
now uses a case-insensitive regex (/grade/i.test()
) to detect when "Grade" is already present in the string, preventing the "Grade 8th Grade" duplication. Only bare numeric values like "3" get the "Grade" prefix added.P
Patrick Jean
Investigation (2026-04-25) — "Grade 8th Grade" Display — Fresh Codebase Verification
main
at 702cd900. Bug confirmed present.Root cause verified:
web/app/(protected)/parent/components/EstimatedMasteryBadge.tsx:33-34
— gradeLabel()
unconditionally prepends "Grade " to the input string. During student onboarding, StudentSetupWizard.tsx
stores the framework level's display name (e.g., "8th Grade") from level?.name
. This value flows to the backend's grade_level
column as-is. When displayed, gradeLabel("8th Grade")
→ "Grade 8th Grade".Affected components (all import gradeLabel):
- StudentOverviewCard.tsx
- LearningProgressShowcase.tsx
- MasteryOverview.tsx
- EstimatedMasteryBanner.tsx
Fix PR #1041
correctly addresses this by changing gradeLabel to:```typescript
return /grade/i.test(gradeLevel) ? gradeLevel :
Grade ${gradeLevel}
;```
Includes vitest unit tests covering plain numbers, values with "Grade" already present, null/undefined/empty inputs.
Status: PR #1041 is MERGEABLE but needs human review approval.
The fix has been ready since 2026-04-19.C
Claude Code (Investigator)
Verification (2026-04-23) — "Grade 8th Grade" Display — No Change
main
at 86fec90c (no new commits since last check on 2026-04-22).Bug confirmed present:
web/app/(protected)/parent/components/EstimatedMasteryBadge.tsx:34
— gradeLabel()
returns Grade ${gradeLevel}
unconditionally, producing "Grade 8th Grade" when gradeLevel
is already "8th Grade".Fix:
PR #1041 (normalizes grade label to strip redundant prefix) — still open, 1 review, awaiting human merge. No new review activity since last check.P
Patrick Jean
Verification (2026-04-22) — "Grade 8th Grade" Display — No Change
main
at 86fec90c (2 new commits since last check: #1050, #1051 — parent-domain, don't touch EstimatedMasteryBadge.tsx
).Bug confirmed present:
web/app/(protected)/parent/components/EstimatedMasteryBadge.tsx:34
— gradeLabel()
prepends "Grade " unconditionally, producing "Grade 8th Grade" when input is "8th Grade".Fix PR:
#1041 — open, awaiting human review.P
Patrick Jean
Verification (2026-04-22) — "Grade 8th Grade" Display — Bug Confirmed, PR #1041 Awaiting Merge
main
at adf2b4c5. Bug still present: web/.../EstimatedMasteryBadge.tsx:33-34
— gradeLabel()
unconditionally prepends "Grade".PR #1041 fix is clean:
Adds /grade/i.test(gradeLevel)
check to skip prepending when the value already contains "Grade". Test coverage included in web/lib/__tests__/gradeLabel.test.ts
.PR #1041 is open and mergeable. No blocking reviews on the grade label portion — the P1 on this PR only affects the quiz subject mastery logic (separate concern).
P
Patrick Jean
Verification (2026-04-22) — "Grade 8th Grade" Display — No Change
main
at adf2b4c5 (unchanged since last check). Bug confirmed present: web/app/(protected)/parent/components/EstimatedMasteryBadge.tsx:33-34
— gradeLabel()
unconditionally prepends "Grade" to values like "8th Grade", producing "Grade 8th Grade".Fix:
PR #1041 — OPEN, REVIEW_REQUIRED
, 1 Codex bot review (COMMENTED). Awaiting human review and merge.P
Patrick Jean
Verification (2026-04-21) — "Grade 8th Grade" Display — Bug Still Present, PR #1041 Awaiting Review
Latest
main
: 575d41a6. Confirmed:
web/app/(protected)/parent/components/EstimatedMasteryBadge.tsx:33-34
— gradeLabel()
unconditionally prepends "Grade " to values that may already include "Grade" (e.g. "5th Grade" → "Grade 5th Grade").Fix included in PR #1041 (has 1 unresolved P1 on a different file).
P
Patrick Jean
Verification (2026-04-21) — "Grade 8th Grade" Display — Bug Still Present, PR #1041 Awaiting Review
New commit on
main
: 575d41a6 (Cycle 211, PR #1045). Does not touch EstimatedMasteryBadge.tsx
.Confirmed:
EstimatedMasteryBadge.tsx:33-34
— gradeLabel()
unconditionally prepends "Grade " to the value, causing "Grade 8th Grade" when the stored value already includes "8th Grade". Fix in PR #1041 awaiting human review from @alien8d.P
Patrick Jean
Verification (2026-04-20) — "Grade 8th Grade" Display — No Change Since Last Check
Bug
STILL PRESENT
on main
(836deb56 — no new commits).Verified:
web/app/(protected)/parent/components/EstimatedMasteryBadge.tsx:33-34
— gradeLabel()
unconditionally prepends "Grade " to input. When input is "8th Grade", output becomes "Grade 8th Grade".Fix status:
- PR #1041— Open, mergeable, no changes requested.
Action needed:
Human review and merge of PR #1041.P
Patrick Jean
Verification (2026-04-20) — "Grade 8th Grade" Display — PR #1041 Awaiting Human Review
Bug
STILL PRESENT
on main
(836deb56).Root cause verified:
web/app/(protected)/parent/components/EstimatedMasteryBadge.tsx:33-34
— gradeLabel()
unconditionally returns ` without checking if
gradeLevel` already contains "Grade". When backend returns "8th Grade", the output becomes "Grade 8th Grade".Additionally, same bug pattern exists in:
- ChildLearningPlans.tsx:140: hardcodedGrade {student.grade_level}
- StudentsManagementSection.tsx:318: hardcodedGrade {student.grade_level}
Fix:
PR #1041 adds a case-insensitive check: if gradeLevel
already contains "grade", it's returned as-is. Includes test coverage in gradeLabel.test.ts
.Note:
The hardcoded instances in ChildLearningPlans.tsx
and StudentsManagementSection.tsx
are NOT covered by PR #1041 — those may need a follow-up fix.Status:
PR #1041 is OPEN, mergeable, awaiting human review.Load More
→