These 43 commits are when the Protocol Buffers files have changed:
| Commit: | 87743c9 | |
|---|---|---|
| Author: | Howard Lau | |
fix(hub): bind grader identity to registration and unify scheduling/subscriptions GraderHub (§3.9–§3.12, §4.3–§4.5, §5.8): - Issue a per-registration session token (RegisterGraderResponse.session_token) and authenticate every GraderHubService call through unary/stream interceptors: hub token + grader id + session token must all match, and a request body naming a grader id must name the authenticated one. Handlers take the grader id from the context instead of self-reported metadata. - Grade RPC is refused on the wire; grading is enqueued in-process via EnqueueGrade. GradeCallback only accepts reports from the grader holding the claim, so a stale or impostor stream cannot overwrite results. - Scheduler: snapshot grader loads once per pass, pick the least-loaded grader in sorted id order, claim in DB before pushing to the outbox, and wait on the condition variable instead of spinning when nothing fits. - onGraderOffline requeues outside runningMu/queue.mu (fixing the lock order inversion and the double unlock on a closed queue) and skips submissions that already reached a terminal state. - Replace both "slice of channels" subscription registries with a single ReportMailbox-based one on the hub: non-blocking publish that coalesces the latest state, explicit Unsubscribe, closed on completion. The service layer's duplicate reportSubs/goroutine is removed. - GradeCallback: handle SendAndClose error, drop goto. Grader client (§2.5, §5.8, §7.3): - Store (graderId, sessionToken) in an atomic pointer and attach them to every outgoing call; stop fataling on AlreadyExists and retry instead. - Rewrite sendReports/submissionReporter without goto; stop retrying forever on PermissionDenied/Unauthenticated and cancel the local run instead. - Check StreamLog Send errors; remove unused runningSubs/rpcTimeout. Service (§3.6, §3.7, §5.4, §5.7): - Enforce submission limits per validated submitter; drop the duplicated UpdateBrief/MarkUnfinished/DeleteManifest and stop failing CreateSubmission on post-creation cleanup errors. - runUnfinishedSubmissions logs instead of panicking in a goroutine. - HandleFileDownload opens all files before streaming the zip. Also: close iterators on error paths in GetUsersByCourse/GetCoursesByUser, remove the unimplemented UpdateGraderStatus (§7.2), add grader.proto to proto.sh (§7.15). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The documentation is generated from this commit.
| Commit: | d1c199f | |
|---|---|---|
| Author: | Howard Lau | |
pkg: export submittedAt
| Commit: | bc34a6d | |
|---|---|---|
| Author: | Howard Lau | |
*: export with leaderboard
| Commit: | 4426b93 | |
|---|---|---|
| Author: | Howard Lau | |
*: courses table
| Commit: | 2f0b7b8 | |
|---|---|---|
| Author: | Howard Lau | |
*: update
| Commit: | 3331a34 | |
|---|---|---|
| Author: | Howard Lau | |
*: update
| Commit: | 22b8cad | |
|---|---|---|
| Author: | Howard Lau | |
*: log
| Commit: | bba86ad | |
|---|---|---|
| Author: | Howard Lau | |
*: limit submission size
| Commit: | 9da4acd | |
|---|---|---|
| Author: | Howard Lau | |
*: update
| Commit: | 00fad91 | |
|---|---|---|
| Author: | Howard Lau | |
*: update
| Commit: | fba875f | |
|---|---|---|
| Author: | Howard Lau | |
*: queue rank
| Commit: | 29e7fe3 | |
|---|---|---|
| Author: | Howard Lau | |
*: update
| Commit: | 4f300c6 | |
|---|---|---|
| Author: | Howard Lau | |
*: update
| Commit: | 2e316b5 | |
|---|---|---|
| Author: | Howard Lau | |
| Committer: | Howard Lau | |
*: cancel
| Commit: | 15423f5 | |
|---|---|---|
| Author: | Howard Lau | |
*: distributed grader
| Commit: | 8a33e5c | |
|---|---|---|
| Author: | Howard Lau | |
*: update
| Commit: | 91b896b | |
|---|---|---|
| Author: | Howard Lau | |
*: add limit
| Commit: | 3fd43d7 | |
|---|---|---|
| Author: | Howard Lau | |
*: update
| Commit: | ef05ec0 | |
|---|---|---|
| Author: | Howard Lau | |
| Committer: | Howard Lau | |
*: update
| Commit: | 6cb01eb | |
|---|---|---|
| Author: | Howard Lau | |
leaderboard: add suffix
| Commit: | 3cc1440 | |
|---|---|---|
| Author: | Howard Lau | |
*: update
| Commit: | 137af48 | |
|---|---|---|
| Author: | Howard Lau | |
*: add inspection
| Commit: | e87f605 | |
|---|---|---|
| Author: | Howard Lau | |
*: allow join
| Commit: | 37618e4 | |
|---|---|---|
| Author: | Howard Lau | |
*: update
| Commit: | 7754b30 | |
|---|---|---|
| Author: | Howard Lau | |
*: update
| Commit: | 060b463 | |
|---|---|---|
| Author: | Howard Lau | |
*: update
| Commit: | 02dc2b0 | |
|---|---|---|
| Author: | Howard Lau | |
*: update
| Commit: | e649c62 | |
|---|---|---|
| Author: | Howard Lau | |
*: update
| Commit: | 8c3d619 | |
|---|---|---|
| Author: | Howard Lau | |
*: add captcha
| Commit: | ef0d9de | |
|---|---|---|
| Author: | Howard Lau | |
*: password reset
| Commit: | a5ddfce | |
|---|---|---|
| Author: | Howard Lau | |
*: update
| Commit: | 7bc0911 | |
|---|---|---|
| Author: | Howard Lau | |
*: add auth
| Commit: | 3d359fe | |
|---|---|---|
| Author: | Howard Lau | |
*: download file
| Commit: | 8820777 | |
|---|---|---|
| Author: | Howard Lau | |
*: update
| Commit: | fa2e44e | |
|---|---|---|
| Author: | Howard Lau | |
*: add leaderboard repo
| Commit: | 647db4f | |
|---|---|---|
| Author: | Howard Lau | |
*: subscirbe
| Commit: | 18ed8a7 | |
|---|---|---|
| Author: | Howard Lau | |
*: update
| Commit: | 10e5c2b | |
|---|---|---|
| Author: | Howard Lau | |
update
| Commit: | c2141d2 | |
|---|---|---|
| Author: | Howard Lau | |
update
| Commit: | 2f73490 | |
|---|---|---|
| Author: | Howard Lau | |
add user service
| Commit: | 5a1aa5e | |
|---|---|---|
| Author: | Howard Lau | |
manifest
| Commit: | 3a48287 | |
|---|---|---|
| Author: | Howard Lau | |
*: assignment course api
| Commit: | df4d920 | |
|---|---|---|
| Author: | Howard Lau | |
init