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.

Score, mark, watch the recording, and return the work without leaving this screen.

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.

To keep 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 switches the next submission; the panel you have open still expands and collapses on demand.

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.

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.

The aggregate — and the percent LMS passback sends — is the sum of the chosen levels over the sum of every criterion's max. A criterion's max is its weight. A 10-point numeric criterion carries 2.5× the weight of a 4-level letter criterion in the same rubric: score half on the numeric one and you lose 5 points off the total; score half on the letter one and you lose 2.

Full marks hide this — 4 of 4 and 10 of 10 both read 100%. Anything below full marks does not. Set a criterion's max to the weight you want it to have. See the 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.

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.

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. Ignore for single-task assignments.

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.

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.

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 or read it as context.

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 reason reads as arbitrary. "led the revision passes, coordinated citations" documents it.

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.

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 do different jobs. The rubric is the summative judgment ("Proficient on Argument"). Marks are the formative trail.

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.

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.

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.

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.

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.

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

Bulk grading — moving through the stack

Bulk review mode steps through a stack of submissions at speed. 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.

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.

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.

Related

Missing something? Email feedback.