Central Station / YPM-ARCHIVE-ASSIGNMENTS-UNIFICATION

Assignments unification

archive/assignments-unification.md · Updated 2026-05-09
GET /api/tickets/YPM-ARCHIVE-ASSIGNMENTS-UNIFICATION

Summary

PR #107 merged and deployed; follow-up specs carry the product cleanup

0Questions 0Links 0Comments 2PRs
Spec body Markdown
# Assignments unification

Domain refactor splitting the old `StudentCourse`/`TeacherCourse` model into four cleanly separated entities: `AssignmentType`, `Assignment`, `TeacherTraining`, and `Course`.

This is engineering-driven work, not PM-designed. Tracked here so PM has visibility into the change and can plan UI follow-ups (see [teacher-my-classes-dashboard-cleanup](teacher-my-classes-dashboard-cleanup.md)).

## Status

Shipped in `yawp-2.0` PR #107 on 2026-05-09 (`c8e968f24a9f897d86e5a0672ae71994c08f1f1b`) and deployed to production. QA runbook lives at `docs/superpowers/runbooks/2026-04-28-assignments-unification-qa-runbook.md` in that repo.

The domain refactor is live, but it intentionally creates product follow-up work:

- [student-practice-documents](student-practice-documents.md) defines how AssignmentType practice drafts and official Assignment documents should coexist.
- [assignment-type-visibility](assignment-type-visibility.md) defines who can see AssignmentTypes after the old StudentCourse model.
- [teacher-my-classes-dashboard-cleanup](teacher-my-classes-dashboard-cleanup.md) defines the teacher dashboard surface that sits on top of the new model.

May 9 legacy-document incident: PR #114 restored teacher class views for pre-refactor class-linked documents that had no `assignmentId`. No data was deleted; the issue was a visibility/query gap after class visibility moved from legacy class links toward assignment links.

## What's changing

- `StudentCourse` → split into `AssignmentType` (template) + `Assignment` (instance).
- `TeacherCourse` → renamed to `TeacherTraining`. Conceptually unrelated to the courses a teacher teaches.
- `Course` becomes the unambiguous container for students and teachers.

## Why it matters for PM

- Any feature spec that touches assignments needs to use the new vocabulary.
- The teacher dashboard UI depends on this landing — the dashboard cleanup spec is gated on it.
- Backward-compat migrations are in place; existing data is being dual-written during rollout.

## Engineering handoff

Not applicable — this is an engineering-owned item. PM should track status and update [teacher-my-classes-dashboard-cleanup](teacher-my-classes-dashboard-cleanup.md) when this lands.
Repo sync Metadata
{
  "url": "https://github.com/The-Connell-School/yawp-2.0/pull/107",
  "repo": "The-Connell-School/yawp-2.0",
  "draft": false,
  "state": "MERGED",
  "title": "Assignments unification: split StudentCourse → AssignmentType + Assignment; rename TeacherCourse → TeacherTraining",
  "branch": "assignments-unification",
  "checks": {
    "total": 7,
    "failing": 2,
    "pending": 0,
    "successful": 5
  },
  "number": 107,
  "syncedAt": "2026-05-26T21:38:23.522Z",
  "mergeable": "UNKNOWN"
}