What happens
components/classroom/ClassroomSurface.tsx collapses any completed load that did not land a stage into outcome = 'unavailable', and renders that as notFound. lib/classroom/load-classroom.ts turns a non-OK /api/classroom response into null, and the stage-meta sidecar independently reports 'unavailable' for 5xx or timeout. So a course that exists, whose document store returns null (share-store or browser-store course), plus a momentary 503 from /api/classroom and /api/stage-meta/<id>, produces the not-found card: a factual claim with no retry affordance, only "back to home". The pane variant reaches the same claim after its ~31 s backoff.
This predates #1399 (the standalone page already went straight to not-found when a load completed without a stage); #1399 made the state machine explicit, which is what makes it easy to see now. Noted during the #1399 round-2 review.
Expected
Keep "unavailable because of an error" distinct from "absent" (positive 404/410), and either keep probing or give the terminal card a retry when it was reached without a positive answer. The notFound docstring in ClassroomSurface.tsx ("nothing here to retry") should hold true once fixed.
Related
What happens
components/classroom/ClassroomSurface.tsxcollapses any completed load that did not land a stage intooutcome = 'unavailable', and renders that asnotFound.lib/classroom/load-classroom.tsturns a non-OK/api/classroomresponse intonull, and the stage-meta sidecar independently reports'unavailable'for 5xx or timeout. So a course that exists, whose document store returns null (share-store or browser-store course), plus a momentary 503 from/api/classroomand/api/stage-meta/<id>, produces the not-found card: a factual claim with no retry affordance, only "back to home". The pane variant reaches the same claim after its ~31 s backoff.This predates #1399 (the standalone page already went straight to not-found when a load completed without a stage); #1399 made the state machine explicit, which is what makes it easy to see now. Noted during the #1399 round-2 review.
Expected
Keep "unavailable because of an error" distinct from "absent" (positive 404/410), and either keep probing or give the terminal card a retry when it was reached without a positive answer. The
notFounddocstring inClassroomSurface.tsx("nothing here to retry") should hold true once fixed.Related
loadFromStorageshort-circuits and the tombstone signal is stage-meta alone; a stage-meta timeout or 5xx then renders the stale classroom as loaded. Same fix direction: treat'unavailable'on a warm hit as non-terminal.