Repository navigation
Add Instructor-run live classroom management - #314
Merged
Merged
Conversation
MajorIncident
marked this pull request as ready for review
October 6, 2026 17:37
This was referenced Oct 6, 2026
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.
Issue
mainat Add Classroom browser E2E and accessibility coverage #308 merge6c58336ac1677764641c09eadb201abcad8eeac1feature/classroom-live-managementGoal
Move Classroom from capability-oriented setup to an Instructor-run live class:
Tranche 1 — architecture/server contract
Checkpoint:
0c6bf97d1939437bd63e7f3107995b811cf3a7cd.This PR currently changes documentation/governance only. No schema/runtime behavior has changed yet.
Canonical design:
docs/classroom-live-management.md.Decisions:
classroom-studentaliases;Tranche 2 — additive persistence + repository primitives
Checkpoint implementation head:
df3633d008bb7e352509e15c1964b7d27ebf441f.Documentation checkpoint:
8eed407c19f9f0034b518fead649bc6dbbf8f917.Implemented:
student_join_codepersistence;classroom_participantswaiting/unassigned participant model;Validation on implementation head:
Exact next tranche: HTTP admission/status/access APIs around these primitives, before assignment/reassignment UI.
Tranche 3 — live HTTP admission/status/access
Implementation checkpoint:
04f95f24dd63d2ce75260034d75c9c514d07e84e.Documentation checkpoint:
6e1a023fb2e9e2a504f85b4d236856d25efc4722.Implemented:
POST /api/classes/admitcreates/rotates a waiting Student class session;GET /api/classes/participantsis Instructor-only;GET /api/classes/studentreturns only the represented Student's own assignment state;POST /api/classes/student/accessissues assignment-specific edit authority only while assigned;Validation:
Exact next tranche: Instructor assign/reassign/unassign server semantics and old-team authority cutoff before any live management UI.
Tranche 4 — Instructor assignment authority
Implementation checkpoint:
7bfd662e2dcbe5511a4065b7b19222129485d08a.Documentation checkpoint:
27e9df7af70c21a1f02553d8241077821409c5e0.Implemented:
PATCH /api/classes/participants;classroom-studentalias.Validation:
Exact next tranche: Instructor live-management UI + deterministic browser fixture + real-browser Instructor journey. Student one-code/reassignment UI remains deferred.
Tranche 5 — Instructor live-management client
Implementation checkpoint:
d3e2a397cd76fc75e62516ed63ad76231bb4812c.Documentation checkpoint:
d88a763293df3e5484c22a151fb64d9dd737a5c3.Implemented:
The first browser run correctly exposed only a stale test assumption: older Instructor journeys needed to open the now-collapsed existing-class recovery disclosure. Those tests were updated; no product rollback was needed.
Validation:
Exact next tranche: additive Student live-class client — one-code admission, Waiting, own assignment-status polling, assignment-specific access exchange, automatic safe reassign/unassign, and same-device class-session resume. Keep the legacy two-code Student path available during migration.
Tranche 6 — Student live-class client
Implementation checkpoint:
0c8692c7486ecb50c730d0757c41426b81830250.Documentation checkpoint:
738712799d46dd1c710d121c49e6be24cfb1aa6e.Implemented:
Browser/security coverage:
Validation on implementation head:
Tranche 7 — integrated live-class acceptance
Implementation checkpoint:
9315210dd15ed583cfbd3201302699d025ded3a1.Documentation checkpoint:
01c20b731c1002a54c62f28de00a82a785b9f575.Implemented:
Validation:
Exact next tranche: final #312 docs/security/merge-readiness review. Reconcile API/architecture docs with the implemented lifecycle, inspect the full
main -> #314diff and unresolved review/security state, verify rollback and legacy compatibility language, and move the PR out of draft only if the final documented head remains green.Tranche 8 — final documentation / security / merge readiness
Final readiness head:
d6a2f27b95639340ad46f6e596368f064671a08f.Final audit:
main -> #314comparison: 79 commits ahead / 0 behind;Final validation:
Merge boundary: #314 is ready to leave draft and merge into
main. After merge, #313 must branch from the resulting merge commit rather than stacking on the old feature branch.Planned implementation tranches
Security / rollback
/api/classes/joinandclassroom_membershipsremain working until explicit later removal.Cold restart
Read:
docs/classroom-live-management.md;docs/classroom-api.md;docs/classroom-architecture.md;docs/classroom-workstream.md;api/AGENTS.md;Exact next action: merge #314 at
d6a2f27...; then start #313 from the resultingmainmerge commit with an architecture/server-contract tranche for exercise lifecycle, stage authorization, staged protected content, checkpoint/debrief semantics, late join, and reassignment resilience.