Red Stet
← Back to Help
Help · For teachers · Tier 2 — Day-to-day teaching

Grading a submission

Once a student hits Submit, the assignment moves into your grading queue. One screen: the doc on the canvas, the rubric in the editorial memo, the provenance recording one click away. Covered here: rubric scoring, inline proofreader marks, the recording, returning work, bulk grading, TA capabilities, LMS gradebook sync.

Opening a submission for grading

Start on the Teacher dashboard. Pick a class, expand an assignment — one row per student: Not started, In progress, Submitted, or Graded. Click a Submitted row:

  • The student's doc loads on the canvas.
  • The Editorial Memo opens on the right: rubric scorer up top, submission roster below.
  • The opened submission is highlighted in the roster.

From the Classwork tab, clicking an assignment title opens the most useful submission: last one you had open, otherwise oldest still-ungraded (FIFO), otherwise any submission. No blank dashboard.

Score, mark, watch the recording, return — all on this surface.

Submissions · Argument essay
3 of 24 submitted
Ava Chen [email protected]
Ben Kowalski [email protected]
Diego Reyes [email protected] Graded
Maya Patel In progress
The red-outlined row is the submission you have open.

Default-open review sidebar

The review sidebar — rubric, reflection, status, return-for-revision — is a collapsible panel right of the canvas. Open by default when you land on a submission.

Want the canvas full-width until you're ready? Flip the Default: open toggle on the Rubric header to Default: closed. Saves to your account, follows you across devices.

Per-user (users.preferences.reviewSurfaceDefault), not per-class or per-assignment.

The toggle controls the default, not the current state. Tapping it doesn't slam the current panel shut — it switches the next submission. The current panel still expands and collapses on demand.
Rubric 3 of 4 scored Default: open
The pill on the section header lives next to the meta count. Tap to switch between open and closed defaults.

The rubric panel rubricScore

If the assignment has a rubric, the editorial memo shows the rubric scorer first — one row per criterion, scoring buttons across. Tap a level. The header updates from 0 of 4 scored to All scored.

Save is idempotent. The first save flips status to graded and stamps gradedAt. Edits update the score without re-bumping status.

The rubric belongs to the assignment, not the submission. Editing it changes how every submission is scored. For a one-off, edit the assignment.
Rubric 3 of 4 scored
Argument
A defensible claim, addressed throughout.
Beginning
Developing
Proficient
Excellent
Evidence
Quotations support the claim, cited.
Beginning
Developing
Proficient
Excellent
Style
Beginning
Developing
Proficient
Excellent
Mechanics
Beginning
Developing
Proficient
Excellent

Letter or numeric scale, per criterion

Each criterion picks its own scale: Letter (default, four named levels) or Numeric (1 through a max). Mix in one rubric — holistic "Argument" on letter next to "Citations" out of 10.

  • Letter — four buttons: Beginning, Developing, Proficient, Excellent. Maps to 1–4. For judgment calls.
  • Numeric — N buttons 1 through your max (default 10). For countable criteria or 10-point department conventions.

Switching is per-criterion. Storage is identical (integer level), so historical scores stay readable across edits.

LMS passback weights each criterion by its own max — 4 of 4 on letter counts the same as 10 of 10 on numeric. See AGS section for the math.

Default to letter. Named levels carry teaching language and push you to write descriptors. Numeric when the criterion is countable or the department gradebook expects 10-point units.
Rubric (mixed scales) 2 of 3 scored
Argument — letter
A defensible claim, addressed throughout.
Beginning
Developing
Proficient
Excellent
Sources cited — numeric, out of 10
Distinct cited sources in the bibliography.
1
2
3
4
5
6
7
8
9
10
Mechanics — numeric, out of 5
Sentence-level cleanliness.
1
2
3
4
5
Mixed-scale rubric — one letter, two numeric. Save and AGS handle both the same way.

Letter-grade overlay letterGradeScale

The scorer produces 0–100 (sum of chosen levels over max). The letter-grade overlay renders that number with a letter — 82% (B-) in the rubric header, student's grade panel, and workspace status line.

Per-classroom. Open Classroom defaults, pick a preset or build custom. Three presets:

  • Standard ± — US plus/minus, A 93, A- 90, B+ 87, ..., F 0. Default.
  • A–F only — whole letters at 90/80/70/60.
  • Pass/Fail (60%)P at 60, F below.

Custom: add rows with a letter label (up to 4 chars) and an inclusive lower bound. Save rejects non-descending thresholds or duplicate percents.

Presentation only. The percent posts to LMS; the letter is for Red Stet views.
Rubric All scored · 82% (B-)
Argument
Beginning
Developing
Proficient
Excellent
Evidence
Beginning
Developing
Proficient
Excellent
Style
Beginning
Developing
Proficient
Excellent
Aggregate updates as you click. Letter resolves against the classroom scale — set in Classroom defaults.

Sub-task weighting subTasks[].weight

Multi-part assignments support per-part weighting. Default even. Set Weight on a sub-task in the assignment editor.

Weights are relative. 1 / 1 / 2 spreads to 25% / 25% / 50%; 2 / 3 / 5 to 20% / 30% / 50%. The editor shows the computed share per row.

Completion rolls up: done = 100%, in-progress = 50%, not-started = 0%. Students see the share label on their checklist — a 50%-of-grade Part 2 reads "50% of grade" next to its title.

Effort allocation, not grading style. The rubric stays the rubric. Ignore for single-task assignments.
Parts 2 of 3 done
Part 1 — Outline 20% of grade
Submitted, marked done.
Part 2 — Draft 50% of grade
Submitted, marked done.
Part 3 — Final revision 30% of grade
In progress.
Weights 2 / 5 / 3. Shares sum to 100%; rolled-up completion is 85% (Parts 1+2 done = 70%, Part 3 in progress = 15%).

Grade comment templates gradeCommentTemplates

Teachers re-type the same phrases all term — "Strong topic sentence, tighten the second paragraph." "Watch comma splices." Save once, paste with one click.

The rubric panel carries a Comment for student textarea. Templates ▾ opens your library; Save as template stores the current draft.

Two scopes:

  • Private — only you, across every class. Default.
  • Classroom — visible to every staff member on that class. House-style phrasings.

Rename, delete, or rescope from the library. Paste is additive — clicking a template appends, so you can combine phrasings without losing an in-progress note.

Templates land on the student's view. The comment travels with the rubric save. Shorthand for the comment you'd write anyway, not pre-written grading.
Comment for student Templates ▾
Strong argument and clear topic sentences. Tighten the second paragraph and double-check comma splices in paragraphs 4–5. Solid revision overall.
Strong argument, tighten body Class
Strong argument and clear topic sentences. Tighten the…
Watch comma splices
Double-check comma splices — independent clauses need a…
Class-scoped templates wear a "Class" badge — shared with co-teachers and TAs.

When there's no rubric

Quick journal entries, sub-task check-ins, scaffolded warm-ups often don't earn a rubric. The panel stays visible and reads "No rubric is attached to this assignment yet" with a jump to the assignment editor.

You can still mark the submission graded — the status flip is the "I'm done" signal. Open the kebab on the editorial memo and pick Mark as graded. The student sees the change.

For an LMS numeric grade, attach a rubric. Without one there's nothing to normalize to 0–100. Marks and status flip travel without a number; LMS grades don't.

Rubric None attached
No rubric is attached to this assignment yet. Add one from the assignment editor to score this submission against named criteria.
Open assignment editor
No rubric, no AGS score. Status can still flip to graded.

Reflection block — student responses

If the assignment carries reflection prompts, the workspace shows the student's responses inline beneath the rubric. No separate tab.

Each prompt is a card: prompt in sage, response in body text. Required prompts carry a Required badge. Blank prompts show "No response".

Read-only. Responses are owned by the student, saved through submissions.saveSelfAssessment.

How reflection shapes a grade is up to you. Weight it as a criterion, read it as context — Red Stet keeps it next to the rubric so you can do either.
Reflection 2 of 2 answered
What was your strongest paragraph and why? Required
Paragraph three — once I had the second quotation in place, the claim about the narrator's reliability could finally rest on textual evidence instead of my assertion.
What would you change with more time?
The intro. I'd cut the throat-clearing and start at the claim.
Sage labels = teacher's prompts; body = student's response, verbatim.

Per-student grade adjustment (group work)

Group assignments grade against one shared rubric — one team score. The Per-student adjustment sidecar (group only) nudges an individual percent up or down without re-scoring.

Signed delta in percent-points plus optional reason:

  • Delta — -100 to +100. Positive lifts, negative drops.
  • Reason — free-form text, saved with the adjustment for audit.

The live summary shows the effective percent before you commit — "Team grade 80% +5 = 85%".

What flows where

  • Team rubric grade stays unchanged. Other members see the same scored rubric.
  • Effective grade = clamp(0, team% + delta, 100). 95% team with +10 lands at 100.
  • AGS passback uses the effective grade. Saving the adjustment after the rubric re-posts to the LMS.
  • Clearing drops the delta; the student returns to the team grade.

Sidecar only renders on group assignments (assignment.kind === 'group').

Use the reason field. A delta with no narrative reads as arbitrary; "led the revision passes, coordinated citations" reads as documented.
Per-student adjustment +5 saved
Team rubric is shared. This delta is THIS student's only.
Delta (points)
+5
Team grade 80% +5 = 85%
Clamped to 0–100 before LMS sync.
Reason (optional)
Led the revision passes, coordinated citations across all three drafts.
Save adjustment Clear
Group assignments only. Three members can land at three different percents off one team grade.

Inline proofreader marks marks

Red Stet's inline-comment layer is a proofreader's mark system — the same one students use on their drafts. Switch the canvas to mark-up mode and edits land as proofreader glyphs: strikethrough del, caret-flagged ins, circled awk or r-o in the margin, capitalization / italics corrections inline.

Each mark anchors to a block and character range on the student's doc, not a margin sidebar. Mark a word "awk" and the mark stays with that word as the student edits around it. Marks render over the prose — marginalia on the page, not a separate comments doc.

Authorship is recorded. The student sees marks attributed to you (or your TA). Student-made marks on their own draft are separate.

Marks and rubric are complementary. The rubric is the summative judgment ("Proficient on Argument"). Marks are the formative trail. Rubric without marks reads as a grade with no explanation; marks without rubric reads as edit-pass feedback with no verdict.
The author's centralmain claim is undermined by a lack of textual evidence. In paragraph three, the writer asserts that the narrator is unreliable,^ but offers no quotation to support the claim. awk The transition between the second and third paragraph is also abrupt.
Marks on this submission — 4 by you, 0 by student
Insertions float above the text in red italic; strikethrough or caret ^ below points to the spot. Circled awk is a margin mark on a range.

The provenance recording — look here first

Every doc is captured as a provenance recording: chronological log of keystrokes, pastes, pauses, plus content-similarity flags against the baseline. Open it before you grade — it surfaces what the prose alone can't.

Timeline across the session with dots wherever the system flagged something — a paste off the baseline, a vocabulary jump, a fast burst. Each flag has a category and timestamp. Click to jump to that moment on the canvas and replay the keystroke window.

For each flag, pick a decision: confirmed-issue, non-issue, or pending. Counts ride into the AGS comment field on save — "Provenance review: 2 confirmed · 1 non-issue · 0 pending". Same counts surface to the student.

Decisions live on the submission, server-side. Reopen on any device and the panel arrives with your earlier calls stamped. Co-teachers and TAs see each other's decisions, so handoffs don't restart from blank.

Students can appeal from their assignment view (see Appeals). Appeals land on the rubric's Student appeals sub-card with Acknowledge and Resolve actions.

Classroom owners can pre-configure surfacing per category, a severity floor, and first-pass suggestions in Classroom Provenance policy — capture stays unchanged; only the review queue is filtered.

Recording · Ben Kowalski 38 min
06:48 · Large paste Confirmed
16:04 · Vocab shift Dismissed
24:32 · Burst (long) Confirmed
30:51 · Paste Pending

Returning work — the lifecycle submission.status

Five states. not-startedin-progresssubmitted → either graded (finalize) or returned-for-revision (back to the student). Students walk the first three; you choose between the last two. Saving the rubric flips to graded; Return for revision flips to returned-for-revision with a reason on the student's banner.

What each status means

  • not-started — assignment unopened. Roster row dimmed.
  • in-progress — opened, draft exists. Peek at the draft from your dashboard for a one-on-one conference.
  • submittedsubmittedAt recorded. Attempt cap enforced before re-submit. Grading-queue state.
  • graded — rubric saved or Mark as graded used. gradedAt recorded. Student sees the rubric.
  • returned-for-revision — reason lands on a red banner with a Resubmit button. Next submit flips back to submitted and increments attemptCount (the return itself doesn't).

Status flips are role-gated. Students move between not-started, in-progress, submitted; only a teacher (or holder of gradeSubmissions) can flip to graded or returned-for-revision.

Not startedstudent
In progressstudent
Submittedstudent
Gradedteacher
Finalize: Save rubric → graded → (optional) AGS passback.
Submittedstudent
Returnedteacher
Submittedstudent
Return: Return for revision → returned-for-revision → student resubmits → submitted + attemptCount++.

Returning for revision returnForRevision

For "send this back with comments but don't close it out." Button sits next to Save rubric. Modal: required reason, OK. The reason becomes the student's banner verbatim; status flips to returned-for-revision; submission-returned notification fans out.

Mechanically:

  • Status flip — from submitted (or graded) to returned-for-revision.
  • Reason stamping — modal text lands on submission.returnReason; returnedAt + returnedByUserId follow.
  • No attempt refundattemptCount doesn't move on return; the resubmit costs one.
  • Bell notification — glyph , title "Returned: …", body is the first ~120 chars of your reason.
  • Email mirror — same subject, reason verbatim, CTA to the assignment. Both respect the student's submission-returned mute.
  • No LMS post — AGS only fires on Save rubric.

Returning requires gradeSubmissions, same gate as Save rubric. TAs can return by default.

Deeper details — partial rubrics, multi-return cycles, recording continuation — live in the Returning work doc.
Not startedstudent
In progressstudent
Submittedstudent
Returnedteacher
Gradedteacher
Fifth state. returned-for-revision sits between submitted and graded; the student cycles within maxAttempts.

Grading by a TA gradeSubmissions

TAs grade by default. The capability is gradeSubmissions; TA and co-teacher roles ship with it on.

Grants:

  • See the submissions roster (listForAssignment).
  • Open any submission's doc and grading panel.
  • Save rubric scores — setRubricScore is gated here.
  • Flip a submission to graded.
  • Leave inline proofreader marks, attributed to the TA.

What a TA still can't do: edit the assignment (manageAssignments), add or remove students (manageRoster), change classroom defaults, rotate the join code. You keep structural decisions; the TA does throughput.

TA-graded submissions get the same gradedAt stamp and AGS passback. Students don't see "graded by TA" — the rubric is the rubric.

CapabilityTeacherCo-teacherTA
Open submissions YesYesYes
Save rubric score YesYesYes
Leave inline marks YesYesYes
Flip status to graded YesYesYes
Edit the assignment / rubric YesYesNo
Manage roster YesYesNo
Grading helpers, not authoring partners. The split keeps the assignment stable while grading distributes.

Bulk grading — moving through the stack

Twenty-eight essays don't grade themselves. Bulk review mode steps through a stack at speed without losing per-submission depth. Same surface (doc + editorial memo + recording) plus keyboard navigation and pre-rendered next states.

From an assignment's submissions panel — Open bulk review. The overlay docks at the top. Keys:

  • J or — next submission
  • K or — previous
  • G — next still-pending (skip graded)
  • C — confirm all visible flags
  • N — dismiss all visible flags
  • Q or Esc — exit

List sorts pending-first. Rubric scores commit as you go — exit anytime, grades persist. Flag decisions persist server-side.

C and N are blunt — they hit every flag on the current submission. Use when flags cluster. For mixed cases, click individually.

7 of 24 Ben Kowalski Pending
K/ prev · J/ next · G next pending
C confirm all · N dismiss all · Q exit
Overlay sits over the canvas; canvas updates to the current student. No reload between students.

When grades sync to the LMS gradebook AGS

If the assignment launched from Canvas, Schoology, Brightspace, or any LTI-1.3-AGS LMS, Save rubric fires an automatic score passback.

The pipeline

  1. Local save commits to Convex first. The grade is durable before any network call leaves the browser.
  2. Normalize: sum of chosen levels over sum of max levels, times 100, rounded. Four letter criteria all Excellent = 16/16 = 100. Three Proficient + one Excellent = 13/16 = 81. Numeric criteria use their own max. Mixed rubrics work the same way.
  3. Mint an OAuth2 access token against the LMS auth server, then POST an AGS Score-2.0 body to the assignment's lineitem.
  4. Provenance-review summary travels in the AGS comment field — "Provenance review: 2 confirmed · 1 non-issue · 0 pending".
  5. A pill reads Posted to Canvas on success or Canvas sync failed on error.

Multi-LMS broadcast: if an assignment is bound to columns in more than one LMS, the score posts to every bound column.

If passback fails, the local grade is safe. Failure logs to lmsSyncFailures and retries from your dashboard. Common causes: LMS rotated its key, lineitem URL changed, network blip.
Local save
Convex commits rubricScore + flips status to graded
Normalize to 0–100
13 / 16 levels = 81
Mint AGS access token
OAuth2 client-credentials against the LMS
POST to lineitem/scores
Score body + provenance comment

When students know they were graded

The instant Save flips a submission to graded: a bell titled "Graded: …" with the percent in the body, plus an email mirror. Both respect submission-graded mute in Settings → Notifications. Fires once on first flip; re-saves don't re-ping.

The student's rubric panel updates with scored levels, status graded, and gradedAt in the assignment header. The email CTA opens the assignment.

LMS-integrated classes: the AGS score posts back and the LMS sends its own grade-received notification per the student's preferences. LMS-routed students get pinged twice unless they mute one channel — by design.

What the student sees today
Your grade Graded Jun 2
Argument: Proficient
Evidence: Excellent
Style: Developing
Mechanics: Proficient
Visible only when the student returns to the assignment.

Related

Missing something? Email feedback.