@ -12,6 +12,8 @@ assert(taskPage.includes('import { listClassTrainingTasks } from "@/api/training
assert(taskPage.includes("listClassTrainingTasks"),"task allocation must load training tasks for the selected teaching class");
assert(taskPage.includes("await listClassTrainingTasks(classId.value, { enabledOnly: false })"),"class task loading must request disabled and enabled tasks");
assert(/tasks\.value = \[\];\s+const res = await listClassTrainingTasks/.test(taskPage),"class task loading must clear prior class rows before requesting the selected class");
assert(taskPage.includes("function sortTasksWithComprehensiveLast(taskList)"),"task allocation must normalize task order after loading");
assert(taskPage.includes("tasks.value = sortTasksWithComprehensiveLast(res.data || []);"),"task allocation must render comprehensive training after every other task");
assert((taskPage.match(/const requestedClassId = classId\.value;/g)||[]).length>=2,"task and publication loading must capture the requested class");
assert((taskPage.match(/if \(!isActiveLoad\(requestedClassId, requestGeneration\)\) return/g)||[]).length>=2,"stale class requests must not update task rows or publication selection");
assert(taskPage.includes("let activeLoadGeneration = 0;"),"overlapping class loads must use a shared generation");